MATLAB,Python,Scilab,Julia比較 第4章 その103【最適化アルゴリズム②】

MATLAB,Python,Scilab,Julia比較 第4章 その103【最適化アルゴリズム②】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その103【最適化アルゴリズム②】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/

はじめに

前回からAdamに至るまでの最適化アルゴリズムの系譜の説明をすることとなった。
今回はAdaGrad。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

最適化アルゴリズムいろいろ【再掲】

太郎くん
太郎くん

まずは説明予定の最適化アルゴリズムを再掲。

  • AdaGrad
  • RMSprop(Root Mean Square Propagation)
  • AdaDelta
  • Adam(Adaptive Moment Estimation)
フクさん
フクさん

今回はAdaGrad。

AdaGrad

フクさん
フクさん

まずは更新式を見せよう。

\(
\begin{eqnarray}
g_{t+1}&=&g_t+(\nabla J(\theta_t))^2\\
\displaystyle\theta_{t+1}&=&\theta_t-\frac{\alpha}{\sqrt{g_{t+1}}+\epsilon}
\end{eqnarray}
\)

太郎くん
太郎くん

何してんのかわからん・・・。

フクさん
フクさん

比較対象としてモーメンタムの更新式も載せておこう。

\(
\begin{eqnarray}
v_{t+1}&=&\beta v_t+\alpha\nabla J(\theta_t)\\
\theta_{t+1}&=&\theta_t-\alpha v_{t+1}
\end{eqnarray}
\)

太郎くん
太郎くん

うーん、AdaGradの方は勾配を2乗を足し続けてる感じか・・・。
そのあとに平方根を取ってるから、元のスケールに戻してるとは思うけど・・・。
モーメンタムでは掛けていたのが、割ってる点が大きな違いかなぁ。

フクさん
フクさん

そうだね。
過去の勾配を累積し、徐々に学習率を落としていく。
そして、学習が進むと学習率が極端に小さくなる欠点がある。

太郎くん
太郎くん

勾配の2乗だから、\(g_t\)は常に大きくなり続けるのか。
その結果、更新の幅がどんどん小さくなって、最後は動かなくなるってことか。

フクさん
フクさん

そうそう。
まぁ、シンプルな学習だとかなり早い収束をする可能性はあるな。

太郎くん
太郎くん

でも、変にステップが掛かると更新しなくなっちゃうのが欠点ってことか。

まとめ

フクさん
フクさん

まとめだよ。

  • AdaGradについて説明。
  • 更新式をモーメンタムと比較。
  • 更新幅は、最初は大きく、徐々に小さくなり、最終的には学習が進まなくなる欠点を抱えている。

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

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をコピーしました