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

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


今回は、入力層の微分について。
入力層の位置づけ

まずはブロック図と連鎖律に於ける入力層の位置づけを確認
ブロック図上での入力層の位置づけ

連鎖律上での入力層の位置づけ
\(
\displaystyle\frac{\partial E}{\partial W}=\frac{\partial E}{\partial A}\frac{\partial A}{\partial Z}{\color{red}\frac{\partial Z}{\partial W}}
\)

名前のまんまで入力の部分だね。
連鎖律では一番後ろだけど、
入力層の関数

入力層の関数として示すと以下になる。
\(
f(W)=WX+b
\)

まぁ、入力に重みを掛けてバイアスを加えてるから、
そんな感じはするね。
入力層の偏導関数

そして、入力層の偏導関数を求める。
\(
\begin{eqnarray}
\displaystyle\frac{\partial Z}{\partial W}&=&\frac{\partial f(W)}{\partial W}=\frac{\partial(WX)}{\partial W}\\
&=&\frac{\partial WX}{\partial W}+\frac{\partial b}{\partial W}=\frac{\partial WX}{\partial W}&=&X
\end{eqnarray}
\)

むっちゃシンプルになった!

まぁ、順番を追って求めるとそういうことになるのか。

元の関数がベクトルとは言え、形状的には1次関数だからね。
偏微分するとシンブルになる。

なんか思ったよりもチョロそうだな。
まとめ

まとめだよ。
- 入力層のブロック図と連鎖律上の位置づけを確認。
- 入力層の偏導関数を確認。
- もとの式がシンプルなので偏導関数もシンプル。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント