最も一般的に使用されているアダムオプティマイザは、収束が速く、パラメータチューニングが容易であるという利点がありますが、一般性と収束性に問題があります。
その結果、伝統的なSGD+モメンタム・オプティマイザーは、多くの大手企業のコードで依然として使用されることになるでしょう。
この2つのオプティマイザの比較については、意見が分かれるところです。 この記事には、2つのオプティマイザの簡単なコード実装と、その効果の比較が掲載されています:PytorchによるSGD、SGDM、Adam、RAdamのコード実装。
この記事では、皆さんに知識を深めていただくために、以下の問題について気軽にお話しします:
- アダムは一般化問題と収束問題で攻撃;
Adam
機械学習に詳しい方なら、アダム・オプティマイザーをご存知でしょう。大雑把に言えば、Momentum + Adagrad + RMSPropの組み合わせです。
様々なタイプのオプティマイザーのアルゴリズムは、必要であれば、その後にわかりやすい平易な言葉で説明することができます。
アダムとSGDMからわかるように、モメンタムは素晴らしいデザインです。
アダムの2人のトロール。
一般化問題
モデルの一般化の問題を議論するとき、モデルによって発見された極小値は、急峻な位置ではなく、比較的平坦な位置であることが期待されます!その理由は下図に示されています:
左は比較的平坦な収束点、右は非常に急でシャープな収束点です。また、トレーニングセットとテストセットは同じ分布であることが求められますが、実際にはわずかな違いがあります。
急峻な収束点の場合、トレーニングセットでの損失は小さくても、テストセットでの損失は大きくなりがちです。平坦な収束点の場合はそうではありません。これは汎化の問題であり、オーバーフィッティング現象とみなされることもあります。
しかし、アダムが常にsharpの最小値を見つけるということも、直接証明できるわけではありません。しかし、多くの議論は、多かれ少なかれ、アダムがテストするときの誤差が大きいことを指摘しているだけなのです。
このグラフを見ると、アダムはトレーニングセットでは最も早く収束しますが、テストセットではあまり良くないことがわかります。
収束問題
アダムはいくつかのケースで収束に失敗します。この件に関する最も有名なアダムの暴言はこの論文です:2018 ICLR's BEST PAPER: On Convergence of Adam and Beyond(2018年ICLR最優秀論文:アダムとその先の収束について
しかし、この問題はそのような人々がしばしば遭遇する問題ではなく、一般化の問題が本当に厄介なのです。
アダムの改善点
learning rate scheduling
大手企業が多用する学習率スケジューリング方式は、ワーンアップ+ディケイです。
ウォーアップ
つまり、高い学習率から始めるのではなく、低い学習率から始めて、ゆっくりとベースとなる学習率まで上げるべきです。
ディケイ
最適化のステップ数が増えるにつれて、学習率を徐々に下げていきます。
ディケイ(減衰)の部分は実はよくあることで、どのチームも使っています。しかし、ワーニングアップの部分は実は少し不気味で、ResNetの論文で実際に見ることができます。
RAdam
ラダムは "ウォームアップ "に関しては効果的な戦略を打ち出しています。