RAdam(Rectified Adamの略称)は、ニューラルネットワークを訓練するための最適化アルゴリズムである。2019年にLiyuan Liu、Haoming Jiang、Pengcheng He、Weizhu Chen、Xiaodong Liu、Jianfeng Gao、Jiawei Hanによって論文「On the Variance of the Adaptive Learning Rate and Beyond」で発表された。RAdamは、Adamオプティマイザの既知の問題、すなわち適応学習率が訓練初期に高い分散を持ち、収束不良や最終性能の最適性の欠如につながる問題に対処する。この分散を修正することで、RAdamはAdamの高速収束の利点と確率的勾配降下法(SGD)の安定性を組み合わせることを目指している。
RAdamは深層学習、特にトランスフォーマーや大規模言語モデルの訓練で広く使用されており、AdamWや他の変種と競争力のある性能を示している。PyTorchやTensorFlowを含む主要な深層学習フレームワークに実装されており、一部の訓練パイプラインではデフォルトの選択肢となっている。
背景:Adamオプティマイザとその限界
Adamオプティマイザは、2014年にDiederik KingmaとJimmy Baによって発表され、勾配の一次モーメントと二次モーメントの推定に基づいて各パラメータの個別学習率を計算する人気の適応学習率法である。Adamは深層ニューラルネットワークの訓練で非常に成功しているが、既知の問題がある。その一つは、適応学習率が訓練初期、特に二次モーメント推定が小さい場合に大きくなりすぎることである。これにより、モデルが鋭い極小値に収束し、一般化が悪くなることがある。さらに、Adamは学習率や他のハイパーパラメータの慎重な調整を必要とする場合がある。
これらの問題に対処するため、重み減衰を分離するAdamWや、過去の二乗勾配の最大値を使用するAMSGradなど、いくつかの変種が提案されている。しかし、これらは適応学習率の分散に直接対処するものではない。
Adamにおける分散問題
Adamでは、適応学習率は一次モーメント推定と二次モーメント推定の平方根の比として計算される。訓練初期では、二次モーメント推定はゼロに初期化され、バイアス補正で更新される。しかし、バイアス補正を行っても、特に減衰率(beta2)が1に近い場合、推定値は高い分散を持つことがある。この分散により学習率が激しく変動し、不安定な訓練と収束不良を引き起こす可能性がある。
RAdamの重要な洞察は、この分散を定量化し、分散が高いときに学習率を低減し、分散が減少するにつれて徐々に増加させる修正項を適用することである。これは、負の値をゼロにクリップする正規化線形ユニット(ReLU)活性化に類似している。
RAdamの仕組み
RAdamはAdamと同様に適応学習率を計算するが、追加の修正項を持つ。アルゴリズムは勾配の一次モーメント(平均)と二次モーメント(非中心分散)をm_tとv_tとして保持し、タイムステップtと減衰率beta2も追跡する。
各ステップで、RAdamはバイアス補正された推定値m_t_hat = m_t / (1 - beta1^t)とv_t_hat = v_t / (1 - beta2^t)を計算する。次に、移動平均の有効長を測定するパラメータrho_t = (1 - beta2^t) (2 / (1 - beta2) - 1) - tを計算する。rho_tがしきい値(通常4)より大きい場合、RAdamは修正項を使用する:学習率はsqrt((rho_t - 4) (rho_t - 2) rho_t / ((rho_t - 4) (rho_t - 2) rho_t - 4 (rho_t - 2) * (rho_t - 2)))でスケーリングされる。rho_tが4以下の場合、更新は一次モーメントを直接使用するSGD with momentumと同様の簡略化された形式になる。
この修正により、学習率が初期段階で大きくなりすぎるのを防ぎ、モデルが過度に大きなステップを踏んで悪い極小値に陥るのを防ぐ。
RAdamの利点
RAdamはAdamや他のオプティマイザに比べていくつかの利点を提供する。第一に、Adamで初期の不安定性を避けるためにしばしば必要とされる学習率ウォームアップの必要性を減らす。これによりハイパーパラメータ調整が簡素化され、訓練時間を節約できる。第二に、RAdamは画像分類や言語モデリングなど様々なタスクでAdamと比較して一般化性能を向上させることが示されている。第三に、計算効率が良く、Adamの更新にわずかなオーバーヘッドを追加するだけである。
実証研究では、RAdamが畳み込みニューラルネットワークやトランスフォーマーを含む様々なモデルで良好に機能することが示されている。特に、バッチサイズが小さい場合やデータがノイズを含む場合に有用であり、これらのシナリオでは勾配の分散が高くなる。
RAdamの実践
RAdamは人気のある深層学習ライブラリに実装されている。PyTorchではtorch.optim.RAdamとして利用可能である。TensorFlowではKeras APIを介してtf.keras.optimizers.RAdamとして利用可能である。Adamのドロップイン置換として使用でき、同じハイパーパラメータ(学習率、beta1、beta2、epsilon)を持つ。デフォルト値は通常learning_rate=0.001、beta1=0.9、beta2=0.999、epsilon=1e-8である。
実際には、RAdamは大規模モデルの訓練で使用されており、一部の大規模言語モデルやトランスフォーマーが含まれる。例えば、GPTやBERTの変種などのモデルの訓練パイプラインで採用されており、AdamWと同等以上の性能を示している。しかし、AdamWは正則化に有益な分離された重み減衰のため、依然として人気のある選択肢である。一部の実践者はRAdamを重み減衰と組み合わせたり、コサイン学習率スケジュールと共に使用したりする。
他のオプティマイザとの比較
RAdamはしばしばAdam、AdamW、SGD with momentumと比較される。Adamと比較すると、RAdamはウォームアップなしでより安定した訓練を提供し、しばしばより良い一般化につながる。AdamWと比較すると、RAdamは重み減衰を分離しないが、L2正則化と組み合わせることができる。いくつかのベンチマークでは、RAdamは画像分類などのタスクでAdamWを上回るが、他のタスクではAdamWが優れている。選択は特定の問題とハイパーパラメータに依存する。
RAdamはまた、勾配クリッピングなどの他の分散削減技術とも関連しており、RAdamと併用して訓練をさらに安定させることができる。さらに、RAdamはコサインアニーリングやステップ減衰などの学習率スケジュールと共に使用できる。
拡張と変種
RAdamのいくつかの拡張が提案されている。例えば、RAdamは低速重みのセットを維持する技術であるルックアヘッドと組み合わされ、様々なタスクで強い性能を示すRangerオプティマイザが作成された。別の変種として、平均からの偏差を二次モーメントに使用するAdaBeliefがあるが、RAdamは比較のベースラインとして残っている。
研究ではRAdamの理論的特性も探求されており、特定の条件下での収束保証が提供されている。修正項は適応学習率の分散の分析から導出されており、一般化ギャップを減らすことが示されている。
結論
RAdamはAdamの分散問題に対処する堅牢なオプティマイザであり、より安定した、より良い一般化をもたらす訓練を実現する。使いやすく、広く利用可能で、多くの深層学習アプリケーションで効果的であることが証明されている。常に最良の選択とは限らないが、特に安定性が重要な大規模モデルの訓練において、オプティマイザツールボックスにおける貴重なツールである。