MATLAB,Python,Scilab,Julia比較 第4章 その39【多変量関数の連鎖律③】

MATLAB,Python,Scilab,Julia比較 第4章 その39【多変量関数の連鎖律③】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その39【多変量関数の連鎖律③】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/

はじめに

多変量関数の連鎖律の解説。
今回は合成関数の微分の証明の話。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

【再掲】多変量関数の連鎖律を把握するための知識

太郎くん
太郎くん

とりあえず多変量関数の連鎖律を把握するための知識を再掲。

  • 合成関数(済)
  • 合成関数の微分(連鎖律)
  • 多変数関数の連鎖律
  • 学習データの多入力による暗黙的関数追加
フクさん
フクさん

今回は合成関数の微分の証明の話になる。
想定される関数は以下。

合成関数の微分を行いたい関数、x、g(x)、u、f(u)、y

合成関数の微分(連鎖律)の証明

フクさん
フクさん

では、前回言ったように証明を行っていく。

太郎くん
太郎くん

お手柔らかにお願いするよー。

フクさん
フクさん

まず、合成関数の微分した際に以下のルールが適用できる。

\(
\displaystyle{f(g(x))}^\prime=\frac{dy}{du}\frac{du}{dx}
\)

太郎くん
太郎くん

前回言ってたやつだね。

フクさん
フクさん

これを証明していく。

\(
\begin{eqnarray}
\displaystyle{f(g(x))}^\prime&=&\lim_{h\to0}\frac{f(g(x+h))-f(g(x))}{h}\\
\displaystyle&=&\lim_{h\to0}\frac{f(g(x+h))-f(g(x))}{\color{red}g(x+h-g(x))}\frac{\color{red}g(x+h-g(x))}{h}\dots(分母分子にg(x+h)-g(x))\\
\displaystyle&=&\lim_{h\to0}\frac{f(g(x+h))-f(g(x))}{g(x+h)-g(x))}\cdot g^\prime(x)
\end{eqnarray}
\)

太郎くん
太郎くん

またトリッキーなことしてるなー。

太郎くん
太郎くん

2番目と最後の式の変形がよくわからんな。

フクさん
フクさん

それは以下が成立するからだな。

\(
\displaystyle g^\prime(x)=\lim_{h\to0}\frac{g(x+h)-g(x)}{h}
\)

太郎くん
太郎くん

なるほど。
それを代入したってことか。

フクさん
フクさん

そして、
\(g(x+h)-g(x)=j\)
とし、\(h\to0\)のとき、\(j\to0\)なので
先ほどの式は以下に変形できる。

\(
\begin{eqnarray}
g(x+h)&=&g(x)-j\\
\displaystyle \{f(g(x))\}^\prime&=&\lim_{j\to0}\frac{f(g(x+j))-f(g(x))}{j}\cdot g^\prime(x)\\
&=&f^\prime(g(x))g^\prime(x)
\end{eqnarray}
\)

太郎くん
太郎くん

なんかすげぇ変形がされたな・・・。

フクさん
フクさん

ここまでくれば後一歩。

\(
\begin{eqnarray}
u&=&g(x)\\
\displaystyle \{f(g(x))\}^\prime&=&f^\prime(g(x))g^\prime(x)\\
\displaystyle &=&\frac{dy}{dx} =f^\prime(u)g^\prime(x)=\frac{dy}{du}\frac{du}{dx}\\
\displaystyle \frac{dy}{dx}&=&\frac{dy}{du}\frac{du}{dx}//
\end{eqnarray}
\)

太郎くん
太郎くん

おー!ちゃんと最初の式になった!

太郎くん
太郎くん

つまり、合成関数の微分は、中間変数が定義できれば、
中間変数を微分、中間変数での微分の組み合わせで表現しなおせるってことか。

フクさん
フクさん

そうそう。
まぁ、結構ややこしいものではあるが、
何回か練習するとサクっとできるようになると思う。

太郎くん
太郎くん

(言ってることはわかったが、だからと言ってサクっとできるかは別な気がする・・・。)

まとめ

フクさん
フクさん

まとめだよ。

  • 合成関数の微分(連鎖律)の証明を実施。
    • 途中、いろいろトリッキーなことをする。
  • 結果としては、中間変数を微分、中間変数での微分の組み合わせで表現しなおせるというもの。

バックナンバーはこちら。

Pythonで動かして学ぶ!あたらしい線形代数の教科書

https://amzn.to/3OE5bVp

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

https://amzn.to/3OBiaax

ゼロからはじめるPID制御

https://amzn.to/3SvzuyR

OpenCVによる画像処理入門

https://amzn.to/498ZUgK

恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]

https://amzn.to/3STAe2i

Pythonによる制御工学入門

https://amzn.to/3uskuK5

理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析

https://amzn.to/3UAunQK

コメント

タイトルとURLをコピーしました