【入門】逆伝播①【数値計算】

【入門】逆伝播①【数値計算】 数値計算
【入門】逆伝播①【数値計算】

MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/

はじめに

の、

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

を書き直したもの。

単純パーセプトロンに対する逆伝播についての話。

  • 言葉の定義の確認
  • 単純パーセプトロンの構成
  • 合成する関数の書き出し
  • 連鎖律について。

逆伝播について

前回までで、連鎖律や勾配降下法についての説明が終わったところ。

今回からは誤差逆伝播法についての話になるのだが・・・。
ここで一度、用語についての厳密性を確認しておく。

まず誤差逆伝播法は、単純パーセプトロンに使用される言葉ではなく、
多層パーセプトロンことニューラルネットワークに使用される言葉になる。

というわけで、単純パーセプトロンでは誤差逆伝播法は使用できない。
と思いきや、そういうわけでもない。
これは歴史的な話と技術的な話が混じってて少しややこしいのだが、
技術的には単純パーセプトロンに誤差逆伝播法は適用不可。
理由は、活性化関数がヘヴィサイド関数であり、誤差に勾配が発生し合いから。
しかし、活性化関数をシグモイド関数に置き換えると、誤差に勾配が発生するから適用可能となる。
歴史的には、誤差逆伝播法を適用したのは多層パーセプトロン以降。

少しややこしいことになっているが、
これからやろうとしていることは、
単純パーセプトロンで活性化関数はヘヴィサイド関数からシグモイド関数に差し替えてる。
だから、誤差逆伝播法は可能。
でも、そういった事例はあんまりないから、これを誤差逆伝播法と呼んで良いかはわからない。
という感じになる。

というわけで、ここでは、誤差逆伝播法と呼ばずに
「逆伝播」という名称で呼ぼうと思う。
「誤差逆伝播法」という言い方にすると偉い人に怒られそうだし。
(単純パーセプトロンの活性化関数をシグモイド関数にしてる段階で怒られそうなんだけど。)

逆伝播を加味した単純パーセプトロンの構成

逆伝播を行うにあたって、構成を示しておこう。
以下の図になる。

逆伝播を想定した単純パーセプトロンの構成、誤差関数は二乗和誤差(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}
\)

というわけでかなりシンプルになる。

次のページへ

次のページでは、合成関数や連鎖律の確認を行う。

コメント

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