Optimizer

SGD

小さいBatchを使ってGradient Decentを行う、小さいBatch Sizeはノイズに繋がり計算時間の増加につながる.ただしより一般化しやすい.Saddle pointに弱い.

Momentumが大きい場合はlrを下げる必要がある. 値が大きすぎると最適解を見逃し収束も遅い.

一部のMini Batchを使ってlossを計算すると早く計算できるSGDよりノイズは少なめであるがbatch size(基本32)は調整が必要

Adam

parameterの変更が大きいほどlrを下げる. lrは単調減少する.

RSMProp

Mini-batch向き. 単調にlrを減らさない(手動)、より専門家向き. 振動に対してペナルティを与える.

AdaDelta

lrが減ることによる学習停滞を防ぐ.

Adam

lrを過去の勾配とmomentに応じて自動調整.

結論

基本的には収束が早いAdamが良いが、精度を求める場合などはSGDが向いている場合もある.

Lr schedule

Lrが固定のSGDと合わせて使う.Kerasではstepごとにlrが減少し低すぎる値になってしまう. <img src="/attachment/65e7ed06055be457cee33149" width=300>

<img src="/attachment/65e7ed01055be457cee33102" width=300>

基本的にはcyclical_lrが良い.

Lightning-CIFAR10