MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
はじめに
の、
MATLAB,Python,Scilab,Julia比較 第4章 その105【最適化アルゴリズム④】
MATLAB,Python,Scilab,Julia比較 第4章 その106【最適化アルゴリズム⑤】
を書き直したもの。
Adamに至るまでの最適化アルゴリズムの系譜の説明をすることとなった。
今回はAdaDeltaとAdamの説明になる。
る。
最適化アルゴリズムいろいろ【再掲】
まずは説明予定の最適化アルゴリズムを再掲。
- AdaGrad(済)
- RMSprop(Root Mean Square Propagation)(済)
- AdaDelta
- Adam(Adaptive Moment Estimation)
今回はAdaDeltaとAdam。
AdaDelta
AdaDeltaは前回説明したRMSpropの拡張版になる。
というわけで、RMSpropとAdaDeltaの更新式を並べてみよう。
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}
\)
AdaDelta
\(
\begin{eqnarray}
E[g^2]_t&=&\beta E[g^2]_{t-1}+(1-\beta)(\nabla J(\theta_t))^2\\
E[\Delta\theta^2]_t&=&\beta E[\Delta\theta^2]_{t-1}+(1-\beta)(\theta_t)^2\\
\displaystyle\theta_{t+1}&=&\theta_t-\frac{\sqrt{E[\Delta\theta^2]_t+\epsilon}}{\sqrt{E[g^2]_t+\epsilon}}\nabla J(\theta_t)\\
\theta_{t+1}&=&\theta_t+\Delta\theta_t\\
E[g^2]&:&過去の勾配の2乗の指数移動平均\\
E[\Delta\theta^2]_t&:&過去の更新量の2乗の指数移動平均
\end{eqnarray}
\)
数式がヤベェことになってきた。
AdaDeltaの特徴としては、学習率と言うハイパーパラメータが存在しない点。
といっても、\(\theta_0\)というパラメータの初期値は必要。
この初期値から自動で学習率を調整していく感じになる。
一応欠点もあり、最終的には学習率が1近傍に収束するようで、
振動しやすいというのがある。
しかし、ほぼ自動でいい感じにやってくれそうな最適化アルゴリズムの代表格となる。
次のページへ
次のページでAdamの説明
コメント