Adam オプティマイザに正しい重み減衰(decoupled weight decay)を導入した改良版。Loshchilov & Hutter が 2017 年に提案し、LLM 訓練のデファクトスタンダードとなっている。L2 正則化と重み減衰を分離することで、適応学習率との干渉を排除し汎化性能を向上させた。
PC構成ビルダーで最適なパーツを選択
AdamW は、2017 年に Ilya Loshchilov と Frank Hutter が論文「Decoupled Weight Decay Regularization」で提案した最適化アルゴリズムである。オリジナルの Adam(Adaptive Moment Estimation)が抱えていた重み減衰の実装上の問題を修正し、正則化の効果を正しく発揮できるようにした。
Adam では重み減衰を L2 正則化として損失関数に加算する形で実装されていた。しかし、Adam の適応学習率メカニズムにより、L2 正則化項の勾配もスケーリングされてしまい、意図した正則化効果が得られないという問題があった。AdamW はこの問題を解決するため、重み減衰をオプティマイザの更新ステップに直接組み込む「分離型重み減衰(decoupled weight decay)」を採用した。
2026 年現在、GPT-4、Gemini、Llama 3、Claude、Qwen 3 など主要な LLM のほぼ全てが AdamW を採用しており、深層学習における最も重要なオプティマイザの一つとなっている。
AdamW の更新則は以下の通りである:
ここで λ が分離された重み減衰係数である。オリジナル Adam との決定的な違いは、ステップ 5 で重み減衰項 λ · θ_t が適応学習率 m̂_t / (√v̂_t + ε) の外側に加算される点にある。
| 項目 | Adam(L2正則化) | AdamW(分離型重み減衰) |
|---|---|---|
| 正則化の実装 | 損失関数に λ‖θ‖² を加算 | 更新式に λθ を直接加算 |
| 適応学習率との相互作用 | L2 項の勾配もスケーリングされる | 重み減衰は適応学習率の影響を受けない |
| 正則化効果 | パラメータごとに不均一 | 全パラメータに均一に作用 |
| 汎化性能 | SGD + Momentum に劣る場合あり | SGD + Momentum と同等以上 |
| LLM での採用 | ほぼ使われない | デファクトスタンダード |
主要 LLM で公開されている AdamW のハイパーパラメータ設定を比較する:
| モデル | 学習率 | β1 | β2 | weight_decay | gradient_clip | warmup |
|---|---|---|---|---|---|---|
| GPT-3 175B | 0.6e-4 | 0.9 | 0.95 | 0.1 | 1.0 | 375 steps |
| Llama 2 70B | 1.5e-4 | 0.9 | 0.95 | 0.1 | 1.0 | 2000 steps |
| Llama 3 70B | 1.5e-4 | 0.9 | 0.95 | 0.1 | 1.0 | 8000 steps |
注目すべき共通点として、β2 = 0.95 が LLM 訓練で事実上の標準値となっている。これはオリジナル Adam 論文で推奨された β2 = 0.999 とは大きく異なる。LLM の訓練では勾配の分散が大きく変動するため、β2 を小さくして 2 次モーメントの追従性を高める必要がある。
AdamW はパラメータごとに m(1 次モーメント)と v(2 次モーメント)の 2 つの状態を保持するため、パラメータ本体と合わせて 3 倍のメモリを消費する。分散学習環境では以下の手法でメモリを削減する:
| 手法 | メモリ削減 | 概要 |
|---|---|---|
| ZeRO Stage 1 | オプティマイザ状態をシャード | GPU 間で m, v を分割保持 |
| ZeRO Stage 2 | + 勾配もシャード | 通信量は増加 |
| ZeRO Stage 3 | + パラメータもシャード | 最大削減だが通信コスト大 |
| 8-bit Adam | 状態を INT8 量子化 | bitsandbytes で実装 |
| Adafactor | モーメントを行列分解 | メモリ大幅削減だが精度低下リスク |
PyTorch での AdamW 使用は非常にシンプルである:
optimizer = torch.optim.AdamW(
model.parameters(),
lr=3e-4,
betas=(0.9, 0.95),
weight_decay=0.1,
eps=1e-8
)
Hugging Face Transformers の Trainer でも AdamW がデフォルトオプティマイザとして組み込まれており、特別な設定なしに利用できる。
2026 年現在、ほぼ全てのケースで AdamW を使うべきである。PyTorch の torch.optim.Adam にも weight_decay パラメータがあるが、これは L2 正則化であり AdamW の分離型重み減衰とは異なる。torch.optim.AdamW を明示的に指定することを推奨する。
LLM の事前学習では 0.1 が最も一般的な値である。ファインチューニングでは 0.01〜0.1 の範囲で設定する。weight_decay を 0 にすると正則化効果がなくなり過学習のリスクが高まる。一方、0.3 以上に設定すると学習が不安定になる傾向がある。
Lion(Google, 2023)は符号ベースの更新によりメモリ効率が高く、一部のタスクで AdamW を上回る結果が報告されている。Sophia(Stanford, 2023)は二次情報を効率的に活用し収束を高速化する。Schedule-Free AdamW(Meta, 2024)は学習率スケジュールを不要にする。ただし、いずれも AdamW ほどの大規模な検証実績はなく、プロダクション環境では AdamW が最も安全な選択肢である。
| Qwen 2 72B | 3e-5 | 0.9 | 0.95 | 0.1 | 1.0 | — |
| Mistral 7B | 3e-4 | 0.9 | 0.95 | 0.1 | 1.0 | 1000 steps |