最適化手法

深層学習の最適化アルゴリズム。SGD、Momentum、Adam、AdamW、学習率スケジューリング。なぜAdamWが標準なのか、ウォームアップの必要性。

最終更新:2025年11月

訓練技術

※画像は生成AIによるイメージです。

1. 最適化の基礎

1.1 最適化問題の定式化

深層学習の訓練は以下の最適化問題:

$$\min_{\theta} \mathcal{L}(\theta) = \frac{1}{N} \sum_{i=1}^{N} \ell(f_\theta(x_i), y_i)$$

$\theta$:モデルパラメータ、$\mathcal{L}$:損失関数、$N$:データ数

1.2 勾配ベースの最適化

基本的な更新則:

$$\theta_{t+1} = \theta_t - \eta \nabla_\theta \mathcal{L}(\theta_t)$$

$\eta$:学習率(Learning Rate)

1.3 深層学習最適化の課題

  • 非凸性:多数の局所解、鞍点
  • ill-conditioning:損失地形の曲率が方向により大きく異なる
  • 高次元:数十億〜兆パラメータ
  • ノイズ:ミニバッチによる勾配推定の分散
  • 勾配消失/爆発:深いネットワークでの問題

2. 確率的勾配降下法(SGD)

2.1 ミニバッチSGD

全データではなく、ミニバッチ $B$ での勾配推定:

$$\theta_{t+1} = \theta_t - \eta \cdot \frac{1}{|B|} \sum_{i \in B} \nabla_\theta \ell(f_\theta(x_i), y_i)$$

利点:

  • 計算効率(GPUでの並列処理)
  • 暗黙の正則化効果(ノイズが過学習を防ぐ)
  • 局所解からの脱出

2.2 バッチサイズの影響

  • 小バッチ:高ノイズ、良い汎化、遅い収束
  • 大バッチ:低ノイズ、高速収束、汎化低下の可能性
  • 線形スケーリング則:バッチサイズ $k$ 倍なら学習率も $k$ 倍

2.3 SGDの限界

  • 学習率の選択が難しい
  • すべてのパラメータに同じ学習率
  • ill-conditioningに弱い
  • 鞍点周辺での停滞

3. Momentum系手法

3.1 Momentum SGD

過去の勾配を指数移動平均で蓄積:

$$v_t = \beta v_{t-1} + \nabla_\theta \mathcal{L}(\theta_t)$$

$$\theta_{t+1} = \theta_t - \eta v_t$$

$\beta$:モーメンタム係数(通常0.9)

効果:

  • 振動の抑制(ravine問題の緩和)
  • 局所解からの脱出を支援
  • 収束の加速

3.2 Nesterov Accelerated Gradient(NAG)

「先読み」による改良:

$$v_t = \beta v_{t-1} + \nabla_\theta \mathcal{L}(\theta_t - \eta \beta v_{t-1})$$

$$\theta_{t+1} = \theta_t - \eta v_t$$

将来位置での勾配を使用し、オーバーシュートを抑制。

3.3 物理的解釈

Momentumは「慣性」を持つボールの運動に対応:

  • $v_t$:速度
  • $\nabla \mathcal{L}$:力(負の勾配方向)
  • $\beta$:摩擦係数(1に近いほど慣性が大きい)

4. 適応的学習率

4.1 AdaGrad

過去の勾配の二乗和で学習率を調整:

$$G_t = G_{t-1} + (\nabla_\theta \mathcal{L})^2$$

$$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \nabla_\theta \mathcal{L}$$

特徴:

  • 頻出特徴には小さな学習率
  • 稀少特徴には大きな学習率
  • 問題:学習率が単調減少し、訓練が停滞

4.2 RMSprop

AdaGradの改良。指数移動平均で直近の勾配を重視:

$$v_t = \beta v_{t-1} + (1-\beta)(\nabla_\theta \mathcal{L})^2$$

$$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{v_t + \epsilon}} \nabla_\theta \mathcal{L}$$

$\beta$:通常0.9(過去の影響を指数減衰)

4.3 適応的手法の直感

パラメータごとに「適切な」学習率を自動調整:

  • 勾配が大きいパラメータ → 学習率を下げる
  • 勾配が小さいパラメータ → 学習率を上げる
  • 結果:異方性のある損失地形でも効率的に最適化

5. Adam / AdamW

5.1 Adam

Adam(Adaptive Moment Estimation、Kingma & Ba 2015):

MomentumとRMSpropの組み合わせ。

更新則:

$$m_t = \beta_1 m_{t-1} + (1-\beta_1) \nabla_\theta \mathcal{L}$$

$$v_t = \beta_2 v_{t-1} + (1-\beta_2) (\nabla_\theta \mathcal{L})^2$$

バイアス補正:

$$\hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t}$$

パラメータ更新:

$$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t$$

5.2 Adamのハイパーパラメータ

パラメータ 典型値 意味
$\eta$(学習率) 1e-4 〜 1e-3 ステップサイズ
$\beta_1$ 0.9 1次モーメントの減衰率
$\beta_2$ 0.999 2次モーメントの減衰率
$\epsilon$ 1e-8 数値安定性

5.3 AdamW(Weight Decay修正)

問題:AdamでのL2正則化は期待どおりに機能しない。

L2正則化(Adam)

$$\nabla_\theta (\mathcal{L} + \frac{\lambda}{2}\|\theta\|^2) = \nabla_\theta \mathcal{L} + \lambda \theta$$

→ 適応的学習率により、正則化効果が不均一になる。

AdamW(Decoupled Weight Decay)

$$\theta_{t+1} = \theta_t - \eta \left( \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} + \lambda \theta_t \right)$$

Weight Decayを勾配更新から分離。

効果:

  • 正則化が適応的学習率の影響を受けない
  • 汎化性能の向上
  • LLM訓練の標準となっている

5.4 Adamの派生

  • AdaFactor:メモリ効率化(2次モーメントを低ランク近似)
  • LAMB:大バッチ訓練向け(Layer-wise Adaptive)
  • Lion:符号ベースの簡素化(Google 2023)
  • Sophia:2次情報の活用(Stanford 2023)

6. 学習率スケジューリング

6.1 なぜスケジューリングが必要か

  • 初期:大きな学習率で大域的探索
  • 中期:適度な学習率で収束
  • 終盤:小さな学習率で微調整

6.2 ウォームアップ

訓練初期に学習率を徐々に上げる:

$$\eta_t = \eta_{max} \cdot \frac{t}{T_{warmup}}, \quad t \leq T_{warmup}$$

なぜ必要か:

  • 初期の大きな勾配による発散を防止
  • Adamの2次モーメント推定が安定するまでの時間確保
  • バッチ正規化の統計量が安定するまでの時間

典型値:全ステップの1-5%、または1,000-10,000ステップ

6.3 主要なスケジュール

Step Decay:

一定ステップごとに学習率を減衰:

$$\eta_t = \eta_0 \cdot \gamma^{\lfloor t/T \rfloor}$$

Cosine Annealing:

余弦曲線に従って滑らかに減衰:

$$\eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})(1 + \cos(\frac{\pi t}{T}))$$

LLM訓練で最も一般的。滑らかな減衰が安定した訓練に寄与。

Linear Decay:

$$\eta_t = \eta_{max} \cdot (1 - \frac{t}{T})$$

Inverse Square Root:

$$\eta_t = \eta_0 \cdot \frac{1}{\sqrt{t}}$$

元のTransformer論文で使用。

6.4 Warmup + Cosine Decay(標準構成)

LLM訓練の標準的なスケジュール:

  1. Warmup期間:0 → $\eta_{max}$ まで線形増加
  2. Cosine Decay期間:$\eta_{max}$ → $\eta_{min}$ までコサイン減衰

典型的な設定:Warmup 2,000ステップ、$\eta_{min} = 0.1 \cdot \eta_{max}$

7. 実践的ガイドライン

7.1 オプティマイザの選択

タスク 推奨 備考
LLM事前訓練 AdamW 標準、安定
LLMファインチューニング AdamW / AdaFactor 低学習率
画像分類(CNN) SGD + Momentum 汎化に優れる場合も
大バッチ訓練 LAMB / LARS Layer-wise適応
メモリ制約 AdaFactor 8-bit Adam

7.2 学習率の選択

  • LLM事前訓練:1e-4 〜 3e-4(モデルサイズに依存)
  • ファインチューニング:1e-5 〜 5e-5
  • 経験則:大きなモデルほど小さな学習率
  • Learning Rate Range Test:適切な範囲を探索

7.3 Weight Decayの設定

  • 典型値:0.01 〜 0.1
  • 除外:バイアス項、LayerNormパラメータには適用しない
  • 大きなモデル:やや大きめのWeight Decay

7.4 勾配クリッピング

勾配爆発を防止:

$$\text{if } \|\nabla\| > \tau: \quad \nabla \leftarrow \frac{\tau}{\|\nabla\|} \nabla$$

  • 典型値:$\tau = 1.0$
  • LLM訓練では必須
  • グローバルノルムでクリッピング

7.5 デバッグのヒント

  • Loss NaN/Inf:学習率を下げる、勾配クリッピングを確認
  • Loss停滞:学習率を上げる、ウォームアップを確認
  • Loss振動:学習率を下げる、バッチサイズを上げる
  • 過学習:Weight Decay増加、ドロップアウト追加

8. 参考文献

主要論文

  • Kingma & Ba (2015). "Adam: A Method for Stochastic Optimization" ICLR
  • Loshchilov & Hutter (2019). "Decoupled Weight Decay Regularization" ICLR(AdamW)
  • You et al. (2020). "Large Batch Optimization for Deep Learning" ICLR(LAMB)
  • Shazeer & Stern (2018). "Adafactor: Adaptive Learning Rates with Sublinear Memory Cost"
  • Chen et al. (2023). "Symbolic Discovery of Optimization Algorithms" NeurIPS(Lion)
  • Liu et al. (2023). "Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training"

教科書・サーベイ

  • Goodfellow et al. (2016). "Deep Learning" Chapter 8
  • Ruder (2016). "An overview of gradient descent optimization algorithms" arXiv