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

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

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

そうか。
誤差逆伝播を想定すると、誤差関数も含めて考える必要があるのか。

フクさん
フクさん

そうそう。
誤差関数は二乗和誤差関数(SSE:Sum of Squared Error)を1/2したものを使用する。

太郎くん
太郎くん

なぜに1/2にするんだ?

フクさん
フクさん

微分すると2乗が前に落ちて、2倍される。
そうすると1/2と相殺されて数式がシンプルになるという効能があるな。
おおよそ以下のイメージだ。

\(
\begin{eqnarray}
f(x)&=&(A-Y)^2=A^2-2AY+Y^2\\
\displaystyle \frac{1}{2}\frac{\partial f(x)}{\partial A}&=&\frac{1}{2}\frac{\partial(A^2-2AY+Y^2)}{\partial A}\\
&=&\frac{1}{2}(2A-2Y)=A-Y
\end{eqnarray}
\)

太郎くん
太郎くん

おー!
確かにシンプルになる!

フクさん
フクさん

次回からは、これをベースに逆伝播をやっていく。

まとめ

フクさん
フクさん

まとめだよ。

  • 誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。
    • 様々な都合で、単純パーセプトロンに対する誤差逆伝播法を「逆伝播」と呼称することに。
  • 逆伝播を行う単純パーセプトロンの構成を確認。
    • 誤差関数は二乗和誤差関数を1/2にしたもの。
      • 1/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をコピーしました