学習率スケジュールとウォームアップの原理
学習率を固定すると序盤で発散し終盤で詰め切れない。ステップ減衰・コサイン・ウォームアップ・One-Cycleの設計意図と、Transformerでwarmupが必須な理由を原理から解く。
- 1.学習率は固定せず時間変化させる。序盤は大きく(速く下る)、終盤は小さく(最小付近で振動させず詰める)が基本で、ステップ減衰・コサインアニーリングが代表。
- 2.ウォームアップは最初の数百〜数千ステップで学習率を0付近から線形に立ち上げる。初期の巨大・不安定な勾配と、Adamの2次モーメント推定がサンプル不足で暴れる問題を回避するため。
- 3.Transformerでwarmupが事実上必須なのは、Post-LNでは初期化直後の勾配スケールが層間で極端に偏り、加えてPre-LNでもAdamの分散推定が序盤に暴れて実効学習率が爆発しやすいから。
なぜ学習率を時間変化させるのか
学習率 η は更新幅を決める最重要ハイパーパラメータです。勾配降下法 の更新 θ_{t+1} = θ_t - η · g_t で η を1つの定数に固定すると、相反する要求の板挟みになります。序盤は損失曲面の遠い位置にいるので、大きく動いて速く下りたい。しかし大きすぎると最小付近で行き過ぎて振動し、発散することもある。終盤は最小の近くにいるので、歩幅を縮めて谷底を精密に詰めたい。だが小さすぎると序盤が遅すぎる。
この矛盾を1つの定数で満たすことはできません。そこで η をステップ t の関数 η(t) にするのが学習率スケジュールです。直感は「最初は大胆に、最後は慎重に」。ただし後述するように、Transformer ではこの単調減衰の前に一度立ち上げるウォームアップが入り、形は単純な右肩下がりではなくなります。
SGD のミニバッチ勾配はノイズを含みます。最小付近では真の勾配が小さいのに、ノイズ起因の更新が η に比例して残り続けるため、η が大きいままだと最小の周りを「半径 ∝ η」の球で回り続け、それ以上収束しません。η を下げることで実効的にノイズの注入を絞り、谷底へ沈める——これが減衰の核心です。確率近似(Robbins-Monro)の収束条件が Σηₜ=∞ かつ Σηₜ²<∞ を要求するのも同じ理由です。
ステップ減衰:階段状に「桁を落とす」
最も古典的なのが ステップ減衰(step decay) です。一定エポックごとに η を定数倍(例 0.1 倍)して階段状に落とします。
η(t) = η0 · γ^( floor(t / step_size) ) # 例: γ=0.1, step_size=30エポック
ResNet の画像分類などで「30/60/90 エポックで 1/10 にする」という設定が長く定番でした。利点は実装が単純で、学習曲線の損失が頭打ちになった瞬間に η を落とすと一段ガクッと下がる現象が経験的に再現しやすいこと。欠点は減衰のタイミングと倍率が離散的な追加ハイパーパラメータになり、データセットごとに手調整が要る点です。これを連続関数で置き換えたのが次のコサインです。
コサインアニーリング:滑らかに0へ向かわせる
コサインアニーリング(cosine annealing) は、初期 η_max から最終 η_min まで、半周期のコサイン曲線でなめらかに減衰させます。総ステップ数 T に対し、
η(t) = η_min + 0.5 · (η_max - η_min) · ( 1 + cos( π · t / T ) )
序盤はほぼ平坦に高い学習率を保ち、中盤で勾配を増して下げ、終盤は再び平坦に η_min へ漸近します。「最初しっかり探索し、最後は静かに収束」という減衰の理想形に近く、追加ハイパーパラメータが実質 T だけで済むため、現在の大規模学習ではウォームアップ付きコサインが事実上の標準スケジュールになっています。なお T ステップで η_min に達したあと η_max に戻して繰り返す warm restarts(SGDR) という変種もあり、複数の局所解を巡らせてアンサンブル効果を狙います。
大規模言語モデルの事前学習では、コサインの代わりに線形減衰(warmup後に η_max から η_min=0 付近へ直線で落とす)も広く使われます。コサインは終盤が平坦で「最後に学習が止まりがち」、線形は最後まで一定の傾きで下げ続ける、という違いがあります。どちらが優位かはタスク依存ですが、両者とも「ウォームアップ → 単調減衰」という骨格は共通です。
ウォームアップ:なぜ「最初だけ小さく」始めるのか
ここからが本題です。ウォームアップ(warmup) とは、学習の最初の T_w ステップ(数百〜数千)で η を 0 付近から目標値 η_max まで線形に立ち上げる手法です。
# 線形ウォームアップ + 以降コサイン減衰
if t < T_w:
η(t) = η_max · t / T_w # 0 → η_max へ線形に増やす
else:
progress = (t - T_w) / (T - T_w)
η(t) = η_min + 0.5 · (η_max - η_min) · (1 + cos(π · progress))
一見すると「序盤こそ速く下りたいのに、なぜわざわざ歩幅を絞るのか」と矛盾して見えます。理由は3つあり、いずれも学習開始直後の不安定性に根ざします(最後の1つは Transformer 固有の事情です)。
理由1:初期化直後の勾配は巨大かつ方向が信頼できない
ランダム初期化されたネットワークは、まだ何も学習していないため出力が正解から大きく外れ、初期の損失と勾配が極端に大きくなりがちです。さらに序盤の勾配は各ミニバッチで方向が大きくぶれ、平均としての「下る方向」がまだ定まっていません。この段階で大きな η を掛けると、信頼できない方向へ大股で踏み込み、重みが発散したり、活性が飽和して 勾配消失・爆発 を誘発します。ウォームアップで最初だけ歩幅を絞ると、ネットワークが「妥当な領域」に入るまで安全に進め、勾配の方向が安定してから本来の η_max に到達できます。
理由2:Adam の2次モーメント推定が序盤はサンプル不足で暴れる
これが Transformer 学習で warmup が必須級になる決定的理由です。Adam / AdamW は勾配の二乗の指数移動平均(2次モーメント v)で実効学習率を η / √v̂ のように割ります。学習開始直後は v に蓄積されたサンプルがごく少数しかなく、v̂ の推定分散が非常に大きい。たまたま小さな勾配が出たステップでは √v̂ が過小に見積もられ、η / √v̂ が跳ね上がって巨大な更新を生みます。バイアス補正 (1 - β2^t) は期待値のずれは直しますが、推定のばらつきまでは抑えられません。
序盤の v̂ のばらつきが大きいと、ステップごとの実効学習率 η/√v̂ が外れ値的に巨大化し、たった数ステップの暴走で重みが壊れて学習が立ち上がらないことがあります。ウォームアップで名目 η 自体を小さく保つことで、v が十分なサンプルで安定する(β2=0.999 なら実効的に数百〜千ステップ規模)まで暴走を抑え込む——これが「warmup は Adam の分散推定が落ち着くまでの保護期間」と説明される所以です。RAdam はこの初期分散を解析的に補正してウォームアップを不要化しようとした派生です。
理由3:Transformer 固有の事情(Post-LN の勾配スケール)
オリジナルの Transformer は Post-LN(残差加算の後に Layer Normalization)構成で、初期化直後は出力層に近いほど勾配が大きく、層をまたいだ勾配スケールの不均衡が顕著でした。この状態で大きな η を入れると不安定化しやすく、原論文が η(t) ∝ d_model^(-0.5) · min(t^(-0.5), t·warmup^(-1.5)) という、warmup ステップまで増加し以降 t^(-0.5) で減衰するスケジュールを採用したのはこのためです。後年の Pre-LN(正規化を残差ブロックの内側前段に置く)は勾配スケールを整え warmup 依存を弱めましたが、それでも Adam の分散問題(理由2)が残るため、現在も warmup 付きが標準です。
One-Cycle:上げてから下げ、運動量は逆相で動かす
One-Cycle は1回の学習を通して η を低→高→低と山なりに動かし、さらに 運動量(momentum)を η と逆相で 高→低→高 と動かす設計です。
# 概念: η は三角/コサインで up→down、momentum は逆向きに down→up
フェーズ1(前半): η: η_min → η_max, momentum: m_max → m_min
フェーズ2(後半): η: η_max → η_min(さらに下), momentum: m_min → m_max
設計意図は明快です。前半の高 η は損失曲面を大胆に探索し、平坦で汎化の良い極小へ向かわせる(高 η は鋭い谷を避ける正則化的効果を持つ)。後半の低 η で見つけた良い領域を精密に詰める。運動量を逆相にするのは、η が高く更新が大きいフェーズでは慣性を弱めて暴走を防ぎ、η が小さいフェーズでは慣性を強めて停滞を避けるためです。短いエポック数で高精度に到達しやすく、super-convergence(少ステップでの高速収束)として知られます。
スケジュールの設計軸を一望する
各手法が「立ち上げの有無」「減衰の形」「主な狙い」をどう組み合わせているかを並べると、選択の見通しが立ちます。
| スケジュール | ウォームアップ | 減衰の形 | 主な狙い・適性 |
|---|---|---|---|
| ステップ減衰 | なし(任意) | 階段状に定数倍 | 実装が単純。CNN画像分類の古典的定番 |
| コサインアニーリング | 併用が標準 | 半周期コサインで滑らかに | 追加HPが実質Tのみ。大規模学習の標準 |
| 線形減衰 | ほぼ必須 | warmup後に直線で0付近へ | LLM事前学習で多用。終盤も下げ続ける |
| Transformer型 | 必須(増加→減衰) | warmupまで増加→t^-0.5 | Post-LN の初期不安定を緩和 |
| One-Cycle | 前半の上げが相当 | 低→高→低(運動量は逆相) | 少エポックで高速収束(super-convergence) |
まとめ:減衰は収束のため、ウォームアップは安定のため
学習率スケジュールは2つの異なる目的が重なっています。減衰(ステップ・コサイン・線形)は、ミニバッチ勾配のノイズを終盤に絞って最小へ沈めるための仕組みで、確率近似の収束条件に裏打ちされています。ウォームアップは、学習開始直後の(1)巨大で方向の定まらない初期勾配、(2)Adam の2次モーメント推定がサンプル不足で暴れる分散問題、(3)Transformer の層間勾配スケール不均衡——という3つの初期不安定を回避するための保護期間です。
実務の出発点は「線形ウォームアップ(全体の数%ステップ)+ コサイン/線形減衰」で、これが Transformer 事前学習からファインチューニングまで広く効く堅実な既定値です。「減衰はなぜ要るか=収束、warmup はなぜ要るか=Adam と初期勾配の安定化」と分解できれば、新しいスケジュール(WSD など定数区間を挟む方式)が出ても同じ軸で評価できます。
AI/機械学習 Article
学習率スケジュールとウォームアップの原理を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
学習率
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
ウォームアップは最初の数百〜数千ステップで学習率を0付近から線形に立ち上げる。初期の巨大・不安定な勾配と、Adamの2次モーメント推定がサンプル不足で暴れる問題を回避するため。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「学習率 / スケジューラ」に近いか確認する。
- 強みである「学習率は固定せず時間変化させる。序盤は大きく(速く下る)、終盤は小さく(最小付近で振動させず詰める)が基本で、ステップ減衰・コサインアニーリングが代表。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。