MATLAB,Python,Scilab,Julia比較 第4章 その52【逆伝播③】

MATLAB,Python,Scilab,Julia比較 第4章 その52【逆伝播③】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その52【逆伝播③】

バックナンバーはこちら。
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

【再掲】逆伝播を想定した単純パーセプトロンの構成

太郎くん
太郎くん

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

逆伝播を想定した単純パーセプトロンの構成、誤差関数は二乗和誤差(SSE:Sum of Squared Error)を1/2したものを使用。1/2にしておくと微分時に消えるので便利、x1、x2、×w1、×w2、+b、A、Y、E=1/2∑_{i=1}^n(A-Y)^2
フクさん
フクさん

今回は、これをベースに連鎖律を考える。

合成関数の微分こと連鎖律について

フクさん
フクさん

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

一連の合成関数のブロック図表現、W、f()、Z、σ()、A、SSE()、E
フクさん
フクさん

そして、合成関数はこれ。

\(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で動かして学ぶ!あたらしい線形代数の教科書

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をコピーしました