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

MATLAB,Python,Scilab,Julia比較 第4章 その92【モーメンタム②】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その92【モーメンタム②】

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

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

太郎くん
太郎くん

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

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

今回は、この中の「勾配降下法の更新式」

勾配降下法

太郎くん
太郎くん

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

フクさん
フクさん

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

太郎くん
太郎くん

なるほど。
まずは更新式ってのを認識するってところか。
その更新式も勾配降下法が一番シンプルだからとっつきやすいって感じか。

フクさん
フクさん

その通り。
全ての最適化アルゴリズムの基礎になるな。

勾配降下法の更新式

フクさん
フクさん

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

\(
\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)\)は連鎖律で求めた
誤差関数に対しての特定のパラメータによる微分ってことになるな。

太郎くん
太郎くん

あー、この部分がいわゆる誤差伝播法で求められるやつか。

フクさん
フクさん

そうそう。

太郎くん
太郎くん

そして、勾配と逆の方向が極小値が居るはずだから、勾配を引く。
ただし、変位する値を調整したから学習率を掛けておく。
って感じか。

フクさん
フクさん

正解。

太郎くん
太郎くん

言葉だけで説明されてた部分だけど、
ちゃんと数式も交えて考えると割と挙動がハッキリするね。

フクさん
フクさん

まぁ、勾配降下法は事前にプログラムで実現しているから
イメージしやすいってのもあるだろうね。

太郎くん
太郎くん

そうすると、これ以外の最適化アルゴリズムはちょっと苦労しそうだな。

フクさん
フクさん

勾配降下法の更新式を理解できていれば、そこらへんの障壁はだいぶ低くなっていると思って良いだろう。

まとめ

フクさん
フクさん

まとめだよ。

  • 勾配降下法について復習。
    • 今回改めてまじめに更新式を確認。
    • 勾配降下法の更新式が一番シンプルなので今後の最適化アルゴリズムの更新式を見る際は比較対象になりやすい。

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

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

Amazon.co.jp

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

Amazon.co.jp

ゼロからはじめるPID制御

https://amzn.to/3SvzuyR

OpenCVによる画像処理入門

https://amzn.to/498ZUgK

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

Amazon.co.jp

Pythonによる制御工学入門

Amazon.co.jp

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

https://amzn.to/3UAunQK

コメント

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