バックナンバーはこちら。
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
【再掲】逆伝播を想定した単純パーセプトロンの構成

まずは、逆伝播を想定した単純パーセプトロンの構成を再掲。


今回は、これをベースに連鎖律を考える。
合成関数の微分こと連鎖律について

前回みせた、ブロック図としての構成も再掲しよう。


そして、合成関数はこれ。
\(E=SSE(\sigma(f(W)))\)

これらより、以下の合成関数の微分こと連鎖律が定義できる。
\(
\displaystyle \frac{\partial E}{\partial W}=\frac{\partial E}{\partial A}\frac{\partial A}{\partial Z}\frac{\partial Z}{\partial W}
\)

連鎖律としては確かにそんな感じになりそうだね。
学習データを加味すると

そして、詳細は後ほど説明するが、
学習データを加味すると、\(f(W)\)は暗黙的に4種類になる、
結果的には以下の「多変量関数の連鎖律」になる。
\(
\displaystyle \frac{\partial E}{\partial w_1}=\frac{\partial E}{\partial a_1}\frac{\partial a_1}{\partial z_1}\frac{\partial z_1}{\partial w_1}+\frac{\partial E}{\partial a_2}\frac{\partial a_2}{\partial z_2}\frac{\partial z_2}{\partial w_1}+\frac{\partial E}{\partial a_3}\frac{\partial a_3}{\partial z_3}\frac{\partial z_3}{\partial w_1}+\frac{\partial E}{\partial a_4}\frac{\partial a_4}{\partial z_4}\frac{\partial z_4}{\partial w_1}
\)
\(
\displaystyle \frac{\partial E}{\partial w_2}=\frac{\partial E}{\partial a_1}\frac{\partial a_1}{\partial z_1}\frac{\partial z_1}{\partial w_2}+\frac{\partial E}{\partial a_2}\frac{\partial a_2}{\partial z_2}\frac{\partial z_2}{\partial w_2}+\frac{\partial E}{\partial a_3}\frac{\partial a_3}{\partial z_3}\frac{\partial z_3}{\partial w_2}+\frac{\partial E}{\partial a_4}\frac{\partial a_4}{\partial z_4}\frac{\partial z_4}{\partial w_2}
\)

なんかやべぇことになってんな・・・。
まとめ

まとめだよ。
- 合成関数の微分こと連鎖律について説明。
- 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。
- 詳細は後日。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント