【入門】モーメンタム②【数値計算】

【入門】モーメンタム②【数値計算】 数値計算
【入門】モーメンタム②【数値計算】

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

はじめに

の、

MATLAB,Python,Scilab,Julia比較 第4章 その92【モーメンタム②】
MATLAB,Python,Scilab,Julia比較 第4章 その93【モーメンタム③】

を書き直したもの。

ニューラルネットワークの最適化アルゴリズムについて。
モーメンタムの話になるが、基本の勾配降下法から話になる。
更新式と動作イメージを確認する。

モーメンタムへ至る道【再掲】

まずはモーメンタムへ至るフローを再掲

  • 勾配降下法の更新式
  • 勾配降下法の動作イメージ
  • モーメンタムの更新式
  • モーメンタムの動作イメージ
  • モーメンタムのプログラムフロー
  • モーメンタムによる分類の学習プログラム

今回は、この中の「勾配降下法の更新式」「勾配降下法の動作イメージ」

勾配降下法

まずは勾配降下法の復習も兼ねるって感じですすめる。

勾配降下法の話は依然しているが、重みやバイアス等のパラメータに対しての更新式の話を端折っている。
この更新式というものが、この後に続く様々な最適化アルゴリズムの性格を決定づけることになる。

というわけで、まずは更新式ってのを認識するってところからになる。
その更新式も勾配降下法が一番シンプルだからとっつきやすいはず。
これは、全ての最適化アルゴリズムの基礎になる。

勾配降下法の更新式

勾配降下法の更新式は、以下で表現される。

\(
\begin{eqnarray}
\theta_{t+1}&=&\theta_t-\alpha\nabla J(\theta)\\
\theta_t&:&パラメータベクトル(重み、バイアス等)の現在値\\
\alpha&:&学習率\\
\nabla J(\theta)&:&誤差(損失)関数Jにおけるパラメータ\theta_tの勾配\\
\end{eqnarray}
\)

\(\theta_{t+1}\)が更新された新しいパラメータになる。

\(\nabla J\)ってのがイマイチぴんとこない人もいるかもしれない。

以前、どこかで説明したかもしれないが、
\(\nabla\)はベクトルとしての勾配を示す。
\(J(\theta)\)が誤差関数なので、
結果として\(\nabla J(\theta)\)は連鎖律で求めた
誤差関数に対しての特定のパラメータによる微分ってことになる。

この部分がいわゆる誤差伝播法で求められるもとなる。
そして、勾配と逆の方向が極小値が居るはずなので、勾配を引く。
ただし、変位する値を調整したから学習率を掛けておく。
という感じになる。

言葉だけで説明していた部分だが、
ちゃんと数式も交えて考えると割と挙動がハッキリする。
勾配降下法は事前にプログラムで実現しているため、
イメージしやすいだろう。

これ以外の最適化アルゴリズムも勾配降下法の更新式を理解できていれば、
理解の障壁はだいぶ低くなっていると思って良いだろう。

次のページへ

次のページでは「勾配降下法の動作イメージ」について

コメント

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