AdamWは、機械学習および深層学習においてニューラルネットワークを訓練するために使用される最適化アルゴリズムである。これは、適応学習率更新から重荷重減減衰を分離するAdamオプティマイザの変種である。このアルゴリズムは2017年にIlya LoshchilovとFrank Hutterによって導入され、トランスフォーマーや大規模言語モデルを含る大規模モデルの訓練における標準的な選択肢となっている。重荷重減衰を勾配ベースのパラメータ更新から分離することで、AdamWは元のAdamオプティマイザにおける既知の問題に対処している。その問題とは、重荷重減衰が適応学習率と干渉する方法で適用され、最適な収束と汎化を妨げるというものであった。
AdamWの主な動機は、AdamではL2正則化項(しばしば重荷重減衰として使用される)が二乗勾配の指数移動平均の平方根で除算されるという観察から来ている。この結合により、実効的な重荷重減衰がパラメータ間および時間経過にわたって変動し、最適化を妨げる可能性がある。AdamWは単純な修正を提案する: 勾配更新後に重荷重減衰をパラメータに直接適用し、適応学習率のスケーリングから独立させる。この分離は、画像分類や言語モデリングを含むさまざまなタスクで訓練性能を向上させることが示されている。
背景: 機械学習における最適化
ニューラルネットワークの訓練には、損失関数を最小化することが含まれ、通常は確率的勾配降下法(SGD)の変種を使用して行われる。SGDでは、モデルパラメータは、訓練データのランダムなサブセットで計算された損失の負の勾配の方向に移動することによって反復的に更新される。ステップサイズ、すなわち学習率は、各更新の大きさを制御する。長年にわたり、収束を加速し最終性能を向上させるために、運動量、適応学習率、重荷重減衰など、多くの改善が提案されてきた。
重荷重減衰は、損失関数に重みの二乗和に比例する項を追加することで、大きなパラメータ値を罰する正則化手法である。標準的なSGDでは、重荷重減衰はL2正則化と等価であるが、この等価性はAdamのような適応手法では崩れる。AdamWは、適応オプティマイザにおける重荷重減衰の意図された動作を復元するために設計された。
Adamオプティマイザ
Adam(Adaptive Moment Estimation)は、2014年にDiederik KingmaとJimmy Baによって導入された。これは、過去の勾配(一次モーメント)と過去の二乗勾配(二次モーメント)の指数減衰平均を保持することで、パラメータごとの学習率を維持する。Adamの更新規則は次の通りである:
\[ \theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \]
ここで、\(\hat{m}_t\)と\(\hat{v}_t\)は一次および二次モーメントのバイアス補正推定値、\(\eta\)は学習率、\(\epsilon\)は数値安定性のための小さな定数である。Adamは、ハイパーパラメータに対する堅牢性と高速な収束、特に深層ネットワークの訓練において、人気を博した。
しかし、元のAdam実装では、重荷重減衰はL2正則化として実装され、損失に項\(\frac{\lambda}{2} \|\theta\|^2\)を追加する。この項は勾配に含まれ、Adamは勾配を二次モーメントで正規化するため、実効的な重荷重減衰は\(\lambda / \sqrt{\hat{v}_t}\)となる。これは、大きな勾配を持つパラメータがより少ない正則化を受けることを意味し、過学習と貧弱な汎化につながる可能性がある。
AdamWアルゴリズム
AdamWは、勾配からL2正則化項を削除し、代わりに適応更新後に重荷重減衰をパラメータに直接適用することで更新規則を修正する。更新規則は次のようになる:
\[ \theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} - \eta \lambda \theta_t \]
ここで、\(\lambda\)は重荷重減衰係数である。この分離により、重荷重減衰が勾配の大きさに関係なくすべてのパラメータに均一に適用されることが保証される。著者らは、これが特に大きな学習率を使用する場合に、より良い汎化とより安定した訓練につながると主張した。
論文で、LoshchilovとHutterは、AdamWがCIFAR-10での画像分類やPenn Treebankでの言語モデリングを含むいくつかのベンチマークタスクで、L2正則化付きAdamを上回ることを実証した。また、AdamWが学習率と重荷重減衰ハイパーパラメータの選択に対してより堅牢であることも示した。
深層学習への影響
AdamWは人工知能の分野に大きな影響を与えてきた。現在では、PyTorchやTensorFlowなど多くの人気のある深層学習フレームワークでデフォルトのオプティマイザとなっており、トランスフォーマーや大規模言語モデルの訓練で広く使用されている。例えば、OpenAI、Anthropic、Google DeepMindなどの組織によって開発された多くのモデルは、訓練パイプラインの一部としてAdamWを使用している。
AdamWにおける分離された重荷重減衰は、大規模データセットでの過学習を防ぐために正則化が重要である大規模モデルの訓練に特に有益である。また、運動量付きSGDやL2正則化付きAdamなどの他のオプティマイザと比較して、収束速度と最終性能を向上させることが示されている。
他のオプティマイザとの比較
AdamWは、AdaGrad、RMSProp、Adamなどの他の適応オプティマイザとしばしば比較される。AdaGradとRMSPropは履歴勾配に基づいて学習率を調整するが、Adamは運動量と適応学習率の両方を組み合わせる。AdamWは、重荷重減衰の問題を修正することでAdamを改善し、幅広いタスクでより信頼性の高いものにしている。
もう一つの関連するオプティマイザは運動量付きSGDであり、これはより単純であるが、学習率スケジュールの慎重な調整をしばしば必要とする。AdamWは、使いやすさと性能の良いバランスを提供しており、多くの実践者にとって頼りになる選択肢となっている。ただし、いくつかの研究では、適切に調整された場合、運動量付きSGDが特定のタスクでより良い汎化を達成できることが示されているが、AdamWは競争力を維持し、ハイパーパラメータの選択に対してより堅牢である。
実践的な考慮事項
AdamWを使用する際には、いくつかの実践的な考慮事項がある。重荷重減衰係数\(\lambda\)は通常、0.01や0.1などの小さな値に設定されるが、特定のタスクに合わせて調整する必要があるかもしれない。学習率は、トランスフォーマーの訓練では1e-4や3e-4などの値に設定されることが多い。さらに、AdamWは、学習率が最初の数千ステップで小さな値から目標値へ徐々に増加する学習率ウォームアップスケジュールから恩恵を受けることが多い。
実際には、AdamWはほとんどの深層学習ライブラリで実装されているため、ユーザーはオプティマイザを指定して重荷重減衰パラメータを設定するだけでよい。例えば、PyTorchでは、torch.optim.AdamW(model.parameters(), lr=1e-4, weight_decay=0.01)を使用できる。この単純さが、その広範な採用に貢献している。
拡張と変種
AdamWのいくつかの拡張と変種が提案されている。例えば、分離された重荷重減衰を持つAdamWは、より滑らかな更新のために遅いパラメータセットを維持するLookaheadなどの他の技術と組み合わされている。もう一つの変種は、コサインアニーリング学習率スケジュールを持つAdamWであり、画像分類タスクでの性能を向上させることが示されている。
大規模言語モデルの文脈では、AdamWは混合精度訓練や勾配累積とともに使用され、大きなバッチサイズを処理することが多い。一部のフレームワークは、メモリ使用量を削減し計算効率を向上させるAdamWの融合実装も提供しており、これは数十億のパラメータを持つモデルを訓練する際に重要である。
結論
AdamWは、機械学習ツールキットにおける基本的なツールとなっている。重荷重減衰を適応勾配更新から分離することで、元のAdamオプティマイザの微妙だが重要な欠陥に対処し、より良い汎化とより安定した訓練につながる。その単純さと有効性により、画像分類から自然言語処理まで、多くの深層学習アプリケーションでデフォルトの選択肢となっている。分野が進化し続ける中で、AdamWは信頼性が高く広く使用される最適化手法であり続けている。
参考文献
- Loshchilov, I., & Hutter, F. (2017). Decoupled Weight Decay Regularization. arXiv:1711.05101.
- Kingma, D. P., & Ba, J. (2014). Adam: A Method for Stochastic Optimization. arXiv:1412.6980.