TL

最適化アルゴリズムの系統:SGD から Adam・AdamW まで

学習率を手で詰める前に系譜を押さえれば設定が一気に楽になる。SGD・モメンタム・RMSProp・Adam・AdamW を更新式で結び、なぜ AdamW が標準なのかまで一本道で理解する。

応用最適化AdamAdamWSGDディープラーニング最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.系譜は一直線。SGD に「慣性」を足すとモメンタム、勾配の大きさで学習率を割るとRMSProp、両者を1次・2次モーメントとして統合したのがAdam。
  • 2.Adam は勾配の指数移動平均(1次モーメント)と二乗の移動平均(2次モーメント)を持ち、初期バイアス補正を掛けてパラメータごとに実効学習率を自動調整する。
  • 3.AdamW は weight decay を勾配ではなく更新の最後に直接引く「分離(decoupled)」型。L2正則化を勾配に混ぜる従来Adamと数学的に等価でないため、現在の事実上の標準。

出発点:SGD は「勾配の逆向きに一歩」だけ

最適化アルゴリズムの仕事は、損失 L を下げる方向へパラメータ θ を更新し続けることです。最も素朴な 確率的勾配降下法(SGD) は、ミニバッチで推定した勾配 g_t = ∇L(θ_t) を使い、

θ_{t+1} = θ_t - η · g_t        (η は学習率)

と更新するだけです。基礎の考え方は 勾配降下法 に譲りますが、SGD の弱点は明確です。(1) 損失曲面が方向によって急峻さの違う「谷」だと、急な軸でジグザグに振動し、緩い軸ではなかなか進まない。(2) 全パラメータに同じ η を使うため、勾配の大きさが桁違いの層があると一律の歩幅が合わない。(3) 勾配のノイズや鞍点付近で停滞しやすい。これらを順に潰していった結果が Adam 系です。

この記事の地図

SGD →(慣性を足す)→ モメンタム →(勾配の大きさで割る)→ RMSProp →(両者を統合)→ Adam →(weight decay を分離)→ AdamW。各段が前段の特定の弱点を1つずつ解消する、という見方で読むと系譜が一本につながります。

モメンタム:過去の更新を「慣性」として引き継ぐ

弱点 (1) と (3) に効くのが モメンタム(Momentum) です。坂を転がるボールのように、過去の勾配を指数的に蓄えた速度 v を持ち、それで更新します。

v_t     = β · v_{t-1} + (1 - β) · g_t     (β ≈ 0.9 が定番)
θ_{t+1} = θ_t - η · v_t

v は直近の勾配の 指数移動平均(EMA) です。同じ向きの勾配が続く軸では速度が積み上がって加速し、符号が反転して振動する軸では正負が打ち消し合って減速します。結果としてジグザグが抑えられ、緩い谷を速く下れます。これが後に 1次モーメント と呼ばれる量の原型です。

RMSProp:勾配の大きさで学習率を「割って」揃える

次に弱点 (2)。パラメータごとに勾配のスケールが違うなら、各パラメータの実効学習率をその勾配の大きさで正規化すればよい。これが RMSProp で、勾配の 二乗 の EMA s を蓄え、更新時に √s で割ります( は要素ごとの積、割り算も要素ごと)。

s_t     = β2 · s_{t-1} + (1 - β2) · (g_t ⊙ g_t)
θ_{t+1} = θ_t - η · g_t / (√s_t + ε)        (ε は0割り防止、例: 1e-8)

勾配が大きく暴れる軸は √s が大きくなって歩幅が自動的に縮み、勾配が小さく停滞しがちな軸は歩幅が相対的に伸びます。この s が後の 2次モーメント です。重要なのは、RMSProp は 方向(1次)には関与せず、大きさ(2次)でスケールを調整するだけ という点です。

1次・2次モーメントという言葉の正体

ここでの「モーメント」は統計の積率。1次モーメント = 勾配 g の平均(向きを表す v)、2次モーメント = 勾配の二乗 の平均(大きさ・分散の代理である s)。Adam の m/v がまさにこの2つで、「向きはモメンタムで、歩幅はRMSPropで」を1つの式に同居させたものだと捉えると腑に落ちます。

Adam:1次と2次を統合し、初期バイアスまで補正する

Adam(Adaptive Moment Estimation) は、モメンタムの「向き」と RMSProp の「大きさ調整」を両方持ちます。1次モーメント m(向き)と2次モーメント v(大きさ)を別々の係数 β1/β2 で蓄えます。

m_t = β1 · m_{t-1} + (1 - β1) · g_t          # 1次モーメント(向き)
v_t = β2 · v_{t-1} + (1 - β2) · (g_t ⊙ g_t)  # 2次モーメント(大きさ)

ただし mv も初期値 0 から始めるため、学習の序盤は 0 に引っ張られて過小評価 されます。これを直すのが バイアス補正で、β の累乗で割って初期の縮みを打ち消します。

m̂_t = m_t / (1 - β1^t)        # t が小さいほど補正が強く効く
v̂_t = v_t / (1 - β2^t)
θ_{t+1} = θ_t - η · m̂_t / (√v̂_t + ε)

最終的に各パラメータは「慣性で均した向き を、そのパラメータの勾配の暴れ具合 √v̂ で割った歩幅」で動きます。デフォルトは β1=0.9, β2=0.999, ε=1e-8 が広く使われ、初期学習率に対する感度が SGD より低く、追加調整が少なく済むのが普及理由です。

試験・面接で問われる定番
  • バイアス補正がなぜ必要かm,v を 0 で初期化するため序盤に過小評価が生じ、(1 - β^t) で割って打ち消す。t が大きくなると β^t → 0 で補正係数 → 1 となり影響が消える。
  • β1β2 の役割の違い:β1向き(1次) の平滑化、β2大きさ(2次) の平滑化。β2 の方が 1 に近い=より長期で平均する。
  • Adam は「RMSProp + モメンタム + バイアス補正」と一言で言える。

AdamW:weight decay を「分離」して正則化を正す

ここが上級の核心です。多くの実装で長く使われてきた「Adam + L2正則化」には、見落とされがちな欠陥がありました。

L2正則化 は損失に (λ/2)·‖θ‖² を足す手法で、勾配に λ·θ加算されます。SGD ならこれは「重みを毎ステップ η·λ だけ縮める」weight decay と数学的に等価です。ところが Adam では、この λ·θ 項も g と一緒に √v̂ で割られてしまいます。つまり 勾配が大きいパラメータほど正則化が弱まる という、意図しない歪みが生じます。正則化の狙い(正則化 参照)が、適応的スケーリングによって台無しになるわけです。

AdamW は weight decay を勾配経路から切り離し(decoupled)、適応更新を済ませたに重みを直接縮めます。

# 従来 Adam + L2: g に λ·θ を混ぜてから割る(歪む)
g_t = ∇L(θ_t) + λ · θ_t
... Adam の更新 ...

# AdamW: weight decay を更新式の末尾で分離して引く(歪まない)
m_t = β1·m_{t-1} + (1-β1)·g_t
v_t = β2·v_{t-1} + (1-β2)·(g_t ⊙ g_t)
m̂_t = m_t / (1 - β1^t);  v̂_t = v_t / (1 - β2^t)
θ_{t+1} = θ_t - η · ( m̂_t / (√v̂_t + ε) + λ · θ_t )

decay 項 λ·θ_t√v̂ の外にあるため、全パラメータが一様に縮み、正則化が勾配の大きさに依存しなくなります。この一見小さな違いが汎化性能に効くため、AdamW は Transformer をはじめ現在の大規模学習の事実上の標準です(LLM と Transformer の学習にも標準採用)。

ハイパーパラメータの罠

AdamW の λ(weight decay)は、従来 Adam の L2係数とは意味も最適値も異なります。AdamW では decay が学習率と分離されているため、η を変えても λ を再調整し直す必要が生じる実装が多く、設定値の流用は危険です。また λ が更新式上 η と掛かる形か独立かはフレームワークごとに差があるため、PyTorch などの weight_decay 引数の定義を必ず確認してください。

一覧で押さえる:何を蓄え、何で割るか

各手法が「向き(1次)」と「大きさ(2次)」をどう扱うかを並べると、系譜が一望できます。

手法1次モーメント(向き)2次モーメント(大きさで割る)weight decay の扱い
SGDなし(生の勾配)なし(学習率は一律)L2を勾配に加算(=decayと等価)
モメンタムあり(勾配のEMA)なしL2を勾配に加算
RMSPropなしあり(勾配²のEMAで正規化)L2を勾配に加算
Adamあり+バイアス補正あり+バイアス補正L2を勾配に混ぜる→適応で歪む
AdamWあり+バイアス補正あり+バイアス補正分離して更新の最後に直接減衰

まとめ:系譜で覚えれば設定も迷わない

最適化器の進化は「SGD の欠点を1つずつ埋める」物語でした。慣性で振動と停滞を抑えたのがモメンタム、勾配の大きさで割って学習率をパラメータ別に揃えたのが RMSProp、その両方を 1次・2次モーメント+バイアス補正 で統合したのが Adam。そして weight decay を適応スケールから分離して正則化を正したのが AdamW です。

実務の出発点としては、まず AdamW(β1=0.9, β2=0.999, ε=1e-8)に学習率と λ を合わせるのが堅実で、計算資源に余裕があり最終精度を詰めたい画像系などでは SGD +モメンタムが上回る場面も残ります。「向きは1次で、歩幅は2次で、正則化は分離して」——この三要素で各アルゴリズムを分解できれば、新しい派生(NAdam, RAdam, Lion 等)が出ても同じ軸で読み解けます。土台のネットワークと学習の流れは ニューラルネットワーク を合わせて確認してください。

AI/機械学習 Article

最適化アルゴリズムの系統:SGD から Adam・AdamW までを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

最適化

比較で見る軸

難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5

導入後に効く点

Adam は勾配の指数移動平均(1次モーメント)と二乗の移動平均(2次モーメント)を持ち、初期バイアス補正を掛けてパラメータごとに実効学習率を自動調整する。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
AI/機械学習
タグ数
5

判断チェックリスト

  • 自社の用途が「最適化 / Adam」に近いか確認する。
  • 強みである「系譜は一直線。SGD に「慣性」を足すとモメンタム、勾配の大きさで学習率を割るとRMSProp、両者を1次・2次モーメントとして統合したのがAdam。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

最適化AdamAdamWSGDディープラーニング最適化AdamAdamW
参考: 公式情報