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

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

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

はじめに

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

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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)
フクさん
フクさん

今回はAdaDelta。

AdaDelta

太郎くん
太郎くん

AdaDeltaは、何かの最適化アルゴリズムの拡張版だったりするの?

フクさん
フクさん

AdaDeltaは前回説明したRMSpropの拡張版だな。

太郎くん
太郎くん

ということは、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}
\)

太郎くん
太郎くん

なんかヤベェことになってきたな・・・。

フクさん
フクさん

特徴としては、学習率と言うハイパーパラメータが存在しない点だな。

太郎くん
太郎くん

あ、ほんとだ。

フクさん
フクさん

といっても、\(\theta_0\)というパラメータの初期値は必要だけどね。

太郎くん
太郎くん

あと、そこから自動で学習率を調整していく感じか。

フクさん
フクさん

一応欠点もあって、最終的には学習率が1近傍に収束するようで、
振動しやすいというのがあるな。

太郎くん
太郎くん

でも、ほぼ自動でいい感じにやってくれそうな最適化アルゴリズムが出てきたって感じはするね。

まとめ

フクさん
フクさん

まとめだよ。

  • AdaDeltaについて説明。
  • RMSpropの拡張版に当たる。
  • 学習率というハイパーパラメータ無しで動作する。
  • 最終的な学習率は1近傍になるため振動しやすいらしい。

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

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