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

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

Adam

やっと本命のAdamに到達。
今まで説明した中で一番ややこしいものとなる。

AdamはモーメンタムとRMSpropの合わせ技のような最適化アルゴリズム。
というわけで、モーメンタム、RMSprop、Adamの更新式を併記する。

モーメンタム

\(
\begin{eqnarray}
v_{t+1}&=&\beta v_t+\alpha\nabla J(\theta_t)\\
\theta_{t+1}&=&\theta_t-\alpha v_{t+1}
\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}
\)

Adam

\(
\begin{eqnarray}
m_{t+1}&=&\beta_1 m_{t-1}+(1-\beta_1)\nabla J(\theta_t)\\
v_{t+1}&=&\beta_2 v_{t-1}+(1-\beta_2)(\nabla J(\theta_t))^2\\
\displaystyle\hat{m}_{t+1}&=&\frac{m_{t+1}}{1-\beta_1}\\
\displaystyle\hat{v}_{t+1}&=&\frac{v_{t+1}}{1-\beta_2}\\
\displaystyle\theta_{t+1}&=&\theta_t-\frac{\alpha}{\sqrt{\hat{v}_{t+1}}+\epsilon}\\
m_t&:&1次のモーメント\\
v_t&:&2次のモーメント\\
\hat{m}_t,\hat{v}_t&:&バイアス補正項\\
\beta_1,\beta_2&:&指数移動平均係数(\beta_1=0.9,\beta_2=0.999)
\end{eqnarray}
\)

当然ながらAdamが一番ヤベェ・・・。

やってることはシンプルではある。
勾配の1次と2次の指数移動平均を算出。
1次はモーメンタムのように過去の勢いを乗せる。
2次はRMSpropのように現在及び近い過去の勾配の大きさが更新の抑制になる。
この2つのバランスの間で更新をする。

勢いを乗せるものと抑制するものが同居している感じになる。

ただ、Adamが効果を発揮するのは、ネットワークが複雑になり、
オンライン学習やミニバッチ学習のように学習データを確率的に利用する場合になる。
よって、今回試そうとしているネットワークに対してはこれと言った効果は見れない可能性が高い。

とりあえず、モーメンタムとRMSpropの合わせ技でAdamって思っておけばOK。

まとめ

  • AdaDeltaについて説明。
    • RMSpropの拡張版に当たる。
  • 最適化アルゴリズムAdamについて説明。
    • モーメンタムとRMSpropの合わせ技。
    • 1次の勾配と、2次の勾配の指数移動平均を使用する。

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

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