バックナンバーはこちら。
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_1\) | \(x_2\) | \(y\) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
確か、ANDゲートの真理値表だよね。
入力パターンが増えると・・・。
入力パターンが増えると、連鎖律の考え方も少し変わる。
ひとつづつ学習するオンライン学習の場合は加味不要だが、
バッチ学習、ミニバッチ学習のように、ある程度の入力と出力(ラベル)のデータセットを一括で実施する場合、
連鎖律のルートが増えることになる。
そういえば、以前そんなこと言ってたな・・・。
図で書くとこんな感じになる。
そして、数式で書くとこんな感じ。
\(
\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}
\)
なんだこの地獄は・・・。
ちなみにバイアスも似たような感じ。
\(
\displaystyle\frac{\partial E}{\partial b}=
\frac{\partial E}{\partial a_1}\frac{\partial a_1}{\partial z_1}\frac{\partial z_1}{\partial b}
+\frac{\partial E}{\partial a_2}\frac{\partial a_2}{\partial z_2}\frac{\partial z_2}{\partial b}
+\frac{\partial E}{\partial a_3}\frac{\partial a_3}{\partial z_3}\frac{\partial z_3}{\partial b}
+\frac{\partial E}{\partial a_4}\frac{\partial a_4}{\partial z_4}\frac{\partial z_4}{\partial b}
\)
大魔境じゃねぇか・・・。
実際にプログラム化する際は、こういった点に注意が必要ってことだな。
まとめ
まとめだよ。
- 入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。
- 上記の図示と数式を説明。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント