読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】Adamって結局何を組み合わせてるん?モーメンタムからAdaBoundまで最適化手法の系譜【G検定】

11レスカテゴリ:AI・機械学習
1: 名無しさん

最適化手法、モーメンタム・AdaGrad・RMSprop・AdaDelta・Adam・AdaBound・AMSBoundと多すぎる
どれが何を直したのか、つながりで覚えたい

2: 名無しさん

前提のおさらい。SGDは、一部のデータで出した勾配の逆向きに、学習率 をかけて重みを動かす。問題は、谷の形によって進みが遅かったり、行ったり来たりしたりすること

3: 名無しさん

>>1
系譜は2本の流れで見ると分かりやすい
1本目:前の動きの勢いを使う(モーメンタム)
2本目:重みごとに学習率を変える(AdaGrad → RMSprop・AdaDelta)
Adamはこの2本を合わせたもので、AdaBound・AMSBoundはAdamの弱点を直したもの

4: 名無しさん

>>3
モーメンタムは、ボールが坂を転がるように、前の動きを少し残す

同じ向きの勾配が続くと加速する。 が続き、、 なら、1歩はやがて になって、SGDの10倍の速さで進む
向きがころころ変わる方向では打ち消しあって、行ったり来たりが減る

5: 名無しさん

>>1
AdaGradは、重みごとに「これまでの勾配の2乗の合計」で学習率を割る
よく動いた重みほど学習率が下がる。勾配がいつも1なら、1歩は で、 なら1回目0.1、4回目0.05、100回目0.01

6: 名無しさん

>>5
それやと、学習が長くなると学習率が0に近づいて止まってまうやん

7: 名無しさん

>>6
そこを直したのがRMSprop。合計の代わりに、古い勾配ほど薄める平均を使うから、学習率が下がりっぱなしにならん
AdaDeltaも同じ問題を直したもので、学習率そのものを決めなくてええ形にしてある

8: 名無しさん

Adamは、モーメンタムのように勾配の平均(向き)を、RMSpropのように勾配の2乗の平均(大きさ)を持って、向きを大きさで割って進む
キングマとバの2014年の論文で発表された
割り算のおかげで、最初の1歩は勾配の大きさによらずだいたい 。勾配が0.001でも100でも、 ならどちらも約0.001進む

9: 名無しさん

>>8
そんなに便利なら、Adamだけ覚えとけばええやん

10: 名無しさん

>>9
Adamは学習の初めは速いけど、最後の精度ではSGDに負けることがある、という報告がある。学習率が重みごとに大きくなりすぎたり小さくなりすぎたりするのが一因とされてる
AdaBoundは、学習率に上限と下限をつけて、その幅を学習が進むほど狭めて、最後はSGDに近づける。AMSBoundは、同じことをAdamの改良版のAMSGradでやったもの。どちらもルオらの2019年の論文

11: 名無しさん

>>10
実際の現場では、まずAdamで動かしてみて、精度を詰めたいときにSGDとモーメンタムも試す、という使い分けをよく見る

管理人のひとこと