optimizerについて学習したので,簡単にメモ.
optimizerとは
損失を効率よく最小化するためのアルゴリズム.Kerasではoptimizerで指定.
勾配降下法(最急降下法)
SGD(確率的勾配降下法)
訓練データからランダムに抽出し,学習する.局所解に陥りづらい.勾配降下法のランダム版.欠点は,1つの勾配の計算が終わらないと次の勾配に移れず,並列処理できないこと.
ミニバッチ学習SGD
更新で使うデータ数を1つから16個や32個などに増やし,並列に学習させる.大分改善されたが,Pathological Curvatureの問題が残る(一度の更新幅が大きすぎると収束しない.オーバーシュート.)
モーメンタム(Momentum)
SGDに慣性的な性質を持たせたもの.今までの変化値を考慮することで,振動のような急激な変化の影響を抑える.移動平均.
Nestrovの加速勾配法
先に慣性項で重みを更新させてから勾配をとって更新する.あらかじめどの方向へ向かうのか考慮する.
AdaGrad
RMSProp
ε:ゼロ除算を避けるための極めて小さい値
SGDの振動を抑えるために,モーメンタムでは重みを調整したが,RMSPropでは学習率を調整する.
また,AdaGradでは過去の勾配を均一に加算していたが,指数移動平均によって直近の勾配を大きく反映させる.
AdaDelta
AdaGrad, RMSPropの改良.学習率ηもなくなっている.より直近の勾配を優先して反映させる.
Adam
モーメンタムとRMSPropの良いとこどり.2014年から現在に至るまでデファクトとなっている.