12
21

More than 3 years have passed since last update.

いまさらながら最適化アルゴリズム(optimizer)を図と表でまとめる

Last updated at Posted at 2021-05-30

はじめに

最近、optimizerについて勉強する機会がありました(E資格対策)

Adamや最急降下法、SGDなど名前やぼやっとした印象は持っていたものの、
数式含めての理解はあまりできてはいなかったんですよね

参考:非常にわかりやすくまとめてあります
https://qiita.com/omiita/items/1735c1d048fe5f611f80
詳細な説明はすでにまとめてありますので、

ここでは図と表を使って、「覚えるために」まとめなおしたいと思います
※図はブログに以前掲載したものからの修正です

図でまとめる

図を使って、SGDからAdamまでの流れをまとめてみました
optimizer3.png

まとめてみると分かりますが、

w_t = w_{t-1} - \alpha' \nu_t

でどのアルゴリズムも基本的に表すことができることが分かります
(まあ更新式なのでそれはそうなんですが…)

※表現として適切かは怪しいところがあります
 例えば $(\nabla_w\mathcal{L}(w))^2 $ は
 本来なら $\nabla_w\mathcal{L}(w) \odot \nabla_w\mathcal{L}(w)$ の方が適切だと思います

※SGDは定義における勾配を取る時刻が違う気がします
 SGDの更新式は $ w_{t+1} = w_t - \alpha \nabla_w \mathcal{L}(w) $ ですが、
 $ \beta=0 $の場合のMomentumの式は $ w_t = w_{t-1} - \alpha \nabla_w \mathcal{L}(w) $ です

表でまとめる

w_t = w_{t-1} - \alpha' \nu_t

としたときの学習率 $\alpha'$ ,勾配 $\nu_t$ を表にしてみます

optimizer 学習率 $\alpha'$ 勾配 $\nu_t$
SGD $\alpha$ $\nabla_w\mathcal{L}(w)$
Momentum $\alpha$ $\beta\nu_{t-1} + (1-\beta)\nabla_w\mathcal{L}(w)$
NAG $\alpha$ $\beta\nu_{t-1} +(1-\beta)\nabla_w\mathcal{L}(w-\beta\nu_{t-1})$
RMSProp $s_t = \beta s_{t-1} + (1-\beta)(\nabla_w\mathcal{L}(w))^2$
$\alpha' = \frac{\alpha}{\sqrt{s_t + \epsilon}}$ 
$\nabla_w\mathcal{L}(w)$
Adam $s_t = \beta s_{t-1} + (1-\beta)(\nabla_w\mathcal{L}(w))^2$
$\alpha' = \frac{\alpha}{\sqrt{s_t + \epsilon}}$
$\beta\nu_{t-1} + (1-\beta)\nabla_w\mathcal{L}(w)$

表でまとめると、一目瞭然ですね
AdamがMomentum + RMSPropで成り立っているのが分かりやすいです

(この表、数式途中で改行をしない良い方法ないんでしょうか…?)

12
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
21