MATLAB,Python,Scilab,Julia比較 第4章 その79【誤差逆伝播法⑥】

MATLAB,Python,Scilab,Julia比較 第4章 その79【誤差逆伝播法⑥】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その79【誤差逆伝播法⑥】

バックナンバーはこちら。
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\Delta_2={\color{red}\frac{\partial E}{\partial A_2}\frac{\partial A_2}{\partial Z_2}}=(A_2-Y)\sigma^\prime(Z_2)
\)

\(
\displaystyle\Delta_1=\Delta_2{\color{blue}\frac{\partial Z_2}{\partial A_1}\frac{\partial A_1}{\partial Z_1}}=\Delta_2 W_2\sigma^\prime(Z_1)
\)

太郎くん
太郎くん

シグモイド関数の導関数はわかってるから、これは計算で出せるものなのは間違いないね。

変数を利用していろいろ算出

フクさん
フクさん

それでは、共通部分を変数化できたところで、各処理をまとめていこう。

隠れ層の重み\(W_2\)とバイアス\(b_2\)の勾配(\(\Delta W_2,\Delta b_2\))を特定

\(
\Delta W_2=\Delta_2 A_2
\)

\(
\Delta b_2=\Delta_2 1
\)

入力層の重み\(W_1\)とバイアス\(b_1\)の勾配(\(\Delta W_1,\Delta b_1\))を特定

\(
\Delta W_1=\Delta_1 X
\)

\(
\Delta b_1=\Delta_1 1
\)

各勾配から各重み、各バイアスを更新(学習率\(\mu\)を掛けておく)

\(
\begin{eqnarray}
W_1&=&W_1-\mu\Delta W_1\\
b_1&=&b_1-\mu\Delta b_1\\
W_2&=&W_2-\mu\Delta W_2\\
b_2&=&b_2-\mu\Delta b_2\\
\end{eqnarray}
\)

フクさん
フクさん

これで誤差逆伝播法による重みとバイアスの更新が可能となる。

太郎くん
太郎くん

いろいろとごちゃごちゃしてたけど、いざプログラム化してしまうとかなりシンプルになるね。

フクさん
フクさん

注意点としては、バイアス、重み以外は順伝播時に決定されるものだから、
事前に順伝播して、各内部変数を記憶しておく必要はある。
まぁ、ブロック図に則って順番に処理させれば自然と記憶されることになるけど。

太郎くん
太郎くん

シグモイド関数の導関数はわかってるから、これは計算で出せるものなのは間違いないね。

まとめ

フクさん
フクさん

まとめだよ。

  • 連鎖律の共通部分の算出。
    • いままでの部品の組み合わせで導出できる。
  • 共通変数で実際の処理に相当する数式を書き出し。
  • ついでに学習率を加味した各重み、各バイアスの更新式も記載。

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

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

Amazon.co.jp: Pythonで動かして学ぶ!あたらしい線形代数の教科書 eBook : かくあき: Kindleストア
Amazon.co.jp: Pythonで動かして学ぶ!あたらしい線形代数の教科書 eBook : かくあき: Kindleストア

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

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 | 斎藤 康毅 |本 | 通販 | Amazon
Amazonで斎藤 康毅のゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装。アマゾンならポイント還元本が多数。斎藤 康毅作品ほか、お急ぎ便対象商品は当日お届けも可能。またゼロから作るDeep Lea...

ゼロからはじめるPID制御

ゼロからはじめるPID制御 | 熊谷 英樹 |本 | 通販 | Amazon
Amazonで熊谷 英樹のゼロからはじめるPID制御。アマゾンならポイント還元本が多数。熊谷 英樹作品ほか、お急ぎ便対象商品は当日お届けも可能。またゼロからはじめるPID制御もアマゾン配送商品なら通常配送無料。

OpenCVによる画像処理入門

OpenCVによる画像処理入門 改訂第3版 (KS情報科学専門書) | 小枝 正直, 上田 悦子, 中村 恭之 |本 | 通販 | Amazon
Amazonで小枝 正直, 上田 悦子, 中村 恭之のOpenCVによる画像処理入門 改訂第3版 (KS情報科学専門書)。アマゾンならポイント還元本が多数。小枝 正直, 上田 悦子, 中村 恭之作品ほか、お急ぎ便対象商品は当日お届けも可能。...

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

恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門] | 金城俊哉 | 数学 | Kindleストア | Amazon
Amazonで金城俊哉の恋する統計学 恋する統計学。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。

Pythonによる制御工学入門

Amazon.co.jp

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

Amazon.co.jp

コメント

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