【入門】最適化アルゴリズム①【数値計算】

【入門】最適化アルゴリズム①【数値計算】 数値計算
【入門】最適化アルゴリズム①【数値計算】

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乗を足し続けてる。
そのあとに平方根を取ってるため、元のスケールに戻してるが、符号は正になる。
モーメンタムでは掛けていたのに足して、
割ってる点が大きな違い。
つまり、モーメンタムでは学習率を引き上げるために使用していたのに対して、
AdaGradでは学習率の抑制のために使用していることになる。

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

勾配の2乗を累積するため、\(g_t\)は常に大きくなり続ける。
その結果、更新の幅がどんどん小さくなって、最後は動かなくなる。

シンプルな学習だとかなり早い収束をする可能性はある反面、
変にステップが掛かると更新しなくなっちゃうのが欠点ってことになる。

RMSprop

RMSpropは先ほどのAdaGradの改良版という位置づけになる。
AdaGradとRMSpropの両方の更新式は以下になる。

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}
\)

RMSprop

\(
\begin{eqnarray}
E[g^2]_t&=&\beta E[g^2]_{t-1}+(1-\beta)(\nabla J(\theta_t))^2\\
\displaystyle\theta_{t+1}&=&\theta_t-\frac{\alpha}{\sqrt{E[g^2]_t+\epsilon}}\\
E[g^2]&:&過去の勾配の2乗の指数移動平均\\
\end{eqnarray}
\)

Eの配列みたいなのがいるが、これは配列ではない。
一般的にE[ ]で表現されるのは期待値という意味合いになる。

\(E[g^2]\)は、それで一つの変数と思えばOK。
指数移動平均の処理を入れるためか、期待値という意味合いで\(E[g^2]\)と表記しているようである。

とすると、かなりAdaGradと似ていると言える。
違いは、今言ってた指数移動平均を取ってる部分。

AdaGradは学習が進むと学習率がほぼ0になってしまうのだが、
これは過去の勾配の二乗が累積し続けているせい。
ここを指数移動平均にすることで、過去の勾配の影響を減らして、現在の勾配の影響度を増やす意味になる。

プラトーや極小値近辺だと、勾配が小さくなるはずだから、
その状態でも学習が止まることは防げることになる。
この点がAdaGradからの改良点と言えるのだろう。

まとめ

  • もう一個試す予定の最適化アルゴリズムAdamへ至る系譜を説明予定。
  • AdaGradについて説明。
    • 更新式をモーメンタムと比較。
  • RMSpropについて説明。
    • AdaGradの完了版であるため、AdaGradと更新式を比較。

MATLAB、Python、Scilab、Julia比較ページはこちら

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

https://amzn.to/3OE5bVp

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

https://amzn.to/3OBiaax

ゼロからはじめるPID制御

https://amzn.to/3SvzuyR

OpenCVによる画像処理入門

OpenCVによる画像処理入門 改訂第3版 (KS情報科学専門書)
◆◆3言語(C言語、C++、Python)対応で、「画像処理の基本」が身につくと、大好評のテキストの改訂版!◆◆ ・OpenCV4.5に対応し、さらにパワーアップ! ・基本アルゴリズムとサンプルプログラムが豊富で、いますぐできる! ・理論と...

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

https://amzn.to/3STAe2i

Pythonによる制御工学入門

https://amzn.to/3uskuK5

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

https://amzn.to/3UAunQK

コメント

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