最適化手法
最適化手法
深層学習の最適化アルゴリズム。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訓練の標準的なスケジュール:
- Warmup期間:0 → $\eta_{max}$ まで線形増加
- 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