はじめに
E資格のお勉強
今回は最適化アルゴリズム(optimizer)です
正直、最適化アルゴリズムは
とりあえずAdamを使っとけという認識と
超基本の勾配降下法くらいは知っていた感じですが
E資格ではもう少し多くのアルゴリズムを知っている必要があるそうです
ということで今回はそのまとめ
参考
https://qiita.com/omiita/items/1735c1d048fe5f611f80
非常にわかりやすくまとめてもらっているので
自分なりの解釈でまとめなおしてみます
最適化アルゴリズムのまとめ
最適化アルゴリズムの関係性と、数式をまとめなおしてみました
うーん、きれいにまとめたつもりですが
あまり見やすくない…
まとめ
結局のところ、MomentumもRMSPropもAdamもすべてSGDからの改良であり
式変形すると以下の式で表すことができるみたいです
$$
w_{t}=w_{t-1}-\alpha'\nu_{t}
$$
後は\(\alpha'\)と\(\nu_t\)が変わるだけですね
自分の中では整理ができました笑
追記:Qiitaの方に図と表でまとめなおしてみました
https://qiita.com/kamome885/items/7fe7b9c6b319fdcd43f5
追記:もう少し考察
Momentumは本当に慣性なのか?
Momentumの説明については
「慣性」の考え方を追加した、「速度」の概念を導入した、など
書いている人によって様々ありますが
正直、ちょっと腑に落ちないところがあります
Momentumは日本語でいうと「慣性」ではなく「運動量」です
位置ベクトルを \(\mathbf{r}\) 、速度を\(\mathbf{v} = \frac{d\mathbf{r}}{dt}\)、質量を\(m\) とすると、運動量は \(m\mathbf{v}\) となります
対して、「慣性」は英語では「inertia(イナーシャ)」です
加速度を \(\mathbf{a} = \frac{d^2\mathbf{r}}
{dt}\) とすると、慣性力は \(m\mathbf{a}\) となります
また、Momentumの式において \(\beta=0\)とすると
元のSGDとほぼ同じ形になります
つまり、SGDはMomentumに「内包されている」ようなものだとも考えられます
物理的な意味を考え始めると \(\nabla_w\mathcal{L}(w)\) は位置の一階微分である=速度のようなものだと考えられるので
「速度」の概念を追加した、というよりは
そもそもSGDの時点で速度を使って更新しており、その重み付き移動平均を取ることで振動を抑制している、という方がしっくりきます
つまり、SGDとMomentumの違いは
- SGDは(瞬間)速度で微分する
- Momentumはその速度の重み付き移動平均を取ったもので更新する
という違いだけなのかなと思います
その場合に、単位質量( \(m=1\) )の質点の移動である、という風に考えると
速度 = 運動量、つまりMomentumということなのかなと思います
(ただ、原著はまだ読んでないので思っただけです)
(早く読め、って話ですね笑)
RMSPropは「運動エネルギー」を使っているのか?
せっかくMomentumで物理的な意味を考えたので、
RMSPropも物理的な意味で解釈できるかを考えたいと思います
(編集中です)