コサイン関数の半周期を利用して学習率を最大値から最小値まで滑らかに減衰させるスケジューリング手法。LLM 訓練では Llama 3・GPT-4・Mistral など主要モデルがほぼ例外なく採用しており、2026 年時点で事実上の業界標準スケジューラである。
コサインアニーリング(Cosine Annealing)は、学習率をコサイン関数に基づいて滑らかに減衰させるスケジューリング手法である。2017 年に Loshchilov & Hutter が SGDR(Stochastic Gradient Descent with Warm Restarts)論文で提案し、当初は画像認識タスクで効果を発揮した。その後 LLM 分野で広く採用され、2026 年現在では GPT-4・Llama 3・Mistral・Gemma 2 など主要モデルの訓練に標準的に用いられている。
基本的な数式は以下の通り:
η(t) = η_min + 0.5 × (η_max - η_min) × (1 + cos(π × t / T))
ここで η_max はピーク学習率、η_min は最小学習率、t は現在のステップ、T は総ステップ数である。
コサイン関数による減衰は以下の特性を持つ:
線形減衰では中盤の学習率が相対的に低くなり探索が不十分になるが、コサインは中盤まで高い学習率を維持するため、より良い解に到達しやすい。
| バリエーション | 特徴 | 用途 |
|---|---|---|
| 標準 Cosine | 半周期で η_max→η_min | LLM 事前学習の標準 |
| Cosine with Restarts | 周期的にリスタート | 継続学習、マルチフェーズ訓練 |
| Cosine with Hard Restarts | リスタート時に η_max に即復帰 | SGDR オリジナル |
| Cosine with Linear Warmup | warmup→cosine decay | Llama 3, GPT-4 採用の主流形式 |
| Cosine with Min LR Ratio | η_min = η_max × ratio | 設定簡略化、ratio=0.1 が標準 |
| モデル | η_max | η_min | ウォームアップ | 総ステップ | バッチサイズ |
|---|---|---|---|---|---|
| Llama 3 8B | 3×10⁻⁴ | 3×10⁻⁵ | 2,000 steps | ~3.75M | 4M tokens |
| Llama 3 70B | 1.5×10⁻⁴ | 1.5×10⁻⁵ | 2,000 steps | ~3.75M | 4M tokens |
| Mistral 7B | 3×10⁻⁴ | 非公開 | 1,000 steps | 非公開 | 非公開 |
| Gemma 2 9B | 3×10⁻⁴ | 非公開 | 非公開 |
from torch.optim.lr_scheduler import CosineAnnealingLR, SequentialLR, LinearLR
# 基本形: Cosine Annealing のみ
scheduler = CosineAnnealingLR(
optimizer,
T_max=100000, # 総ステップ数
eta_min=3e-5 # 最小学習率
)
# Llama 3 形式: Linear Warmup + Cosine
warmup = LinearLR(
optimizer,
start_factor=1e-7 / 3e-4, # 初期学習率 / ピーク学習率
total_iters=2000
)
cosine = CosineAnnealingLR(optimizer, T_max=98000, eta_min=3e-5)
scheduler = SequentialLR(optimizer, [warmup, cosine], milestones=[2000])
from torch.optim.lr_scheduler import CosineAnnealingWarmRestarts
# T_0=10000 ステップ周期でリスタート、T_mult=2 で周期が倍増
scheduler = CosineAnnealingWarmRestarts(
optimizer,
T_0=10000,
T_mult=2,
eta_min=1e-6
)
GPT-2 124M パラメータモデルの OpenWebText 訓練(10B トークン)での比較実験が複数報告されている:
| スケジューラ | 最終 Perplexity | 訓練 Loss | 収束安定性 |
|---|---|---|---|
| Cosine Annealing | 19.8 | 2.98 | ◎ 非常に安定 |
| Linear Decay | 20.3 | 3.01 | ○ 安定 |
| Constant LR | 21.1 | 3.08 | △ 後半で振動 |
| Step Decay | 20.9 | 3.06 | △ 段差で不安定化 |
| Inverse Sqrt | 20.1 | 2.99 | ○ 安定 |
コサインアニーリングは最終精度・安定性の両面で他手法を上回り、LLM における第一選択となっている。
学習率が η_min まで到達せずに訓練が終了する。結果として後半の学習率が想定より高くなり、微調整フェーズが不十分になる可能性がある。Llama 3 の訓練では T_max を正確に総ステップ数 - ウォームアップステップ数に設定している。
LLM の事前学習ではセットが推奨される。ウォームアップなしでいきなりピーク学習率を使うと、初期の大きな勾配で loss spike(損失の急上昇)が発生しやすい。ファインチューニングでは事前学習済みの安定した状態からスタートするため、ウォームアップなしでも問題ないケースがある。
継続学習(Continual Learning)や、訓練データを複数フェーズで投入するシナリオで効果的。各リスタートで学習率を上げ直すことで、新しいデータ分布への適応力を回復する。ただし、標準的な単一フェーズ事前学習では Restarts なしのコサインが主流。
| ~1.25M |
| 4M tokens |
| GPT-3 175B | 6×10⁻⁵ | 0 | 375M tokens | ~300B tokens | 3.2M tokens |