🌟

深層学習のパラメーターに関する一般的な値や初期設定について

2025/03/04に公開

1. 学習率 (Learning Rate, (\eta))

  • 一般的な範囲: (10^{-3}) ~ (10^{-5})
  • 初期値の例: 0.001 (Adam, RMSprop) or 0.01 (SGD)
  • 調整方法: 学習が進まない場合は増やし、発散する場合は減らす。学習率スケジューリング(Cosine Annealing, Step Decay など)も有効。

2. バッチサイズ (Batch Size)

  • 一般的な範囲: 16 ~ 512
  • 推奨値:
    • 小さい場合 (16, 32): メモリ消費が少なく、勾配のノイズが増えて正則化効果あり
    • 大きい場合 (128, 256, 512+): 収束が安定しやすいが、汎化性能が悪化する可能性あり
    • 特別なケース: LAMB Optimizer では 1024 以上を使うこともある

3. モメンタム (Momentum, (\beta))

  • 一般的な範囲: 0.8 ~ 0.99
  • 初期値の例: 0.9 (SGD+Momentum)
  • 調整方法: 0.9 が一般的だが、より安定した学習には 0.99 など大きめを試す。

4. 重み減衰 (Weight Decay)

  • 一般的な範囲: (10^{-4}) ~ (10^{-6})
  • 初期値の例: 0.0001
  • 役割: 過学習を防ぐために、L2 正則化として作用。

5. 初期化手法

(1) Xavier/Glorot Initialization (ReLU以外)

  • 範囲: ([- \sqrt{\frac{6}{n_{\text{in}} + n_{\text{out}}}}, \sqrt{\frac{6}{n_{\text{in}} + n_{\text{out}}}}])
  • 適用: Sigmoid, Tanh などの活性化関数に適用

(2) He Initialization (ReLU, LeakyReLU)

  • 範囲: (\mathcal{N}(0, \frac{2}{n_{\text{in}}}))(標準正規分布)
  • 適用: ReLU, LeakyReLU など勾配消失の影響を受けにくい非線形関数に適用

(3) Orthogonal Initialization

  • 適用: RNN, LSTM でよく使われる

(4) Zero Initialization

  • 問題点: すべて 0 にすると勾配が同じになり学習が進まない

6. Optimizer の初期設定

(1) Adam (Adaptive Moment Estimation)

  • 学習率: 0.001
  • (\beta_1): 0.9(1次モーメント)
  • (\beta_2): 0.999(2次モーメント)
  • (\epsilon): (10^{-8})

(2) RMSprop

  • 学習率: 0.001 ~ 0.0001
  • (\alpha) (Decay Rate): 0.99
  • (\epsilon): (10^{-8})

(3) SGD + Momentum

  • 学習率: 0.01 ~ 0.1
  • Momentum: 0.9
  • Nesterov Momentum: True(場合による)

(4) AdamW (Adam + Weight Decay)

  • 学習率: 0.001
  • Weight Decay: (10^{-2}) ~ (10^{-4})
  • (\beta_1): 0.9
  • (\beta_2): 0.999
  • (\epsilon): (10^{-8})

7. ドロップアウト (Dropout Rate)

  • 一般的な範囲: 0.1 ~ 0.5
  • 初期値の例: 0.2 ~ 0.3(適用層による)
  • 注意: 小さいネットワークには不要な場合もある

8. Batch Normalization のパラメーター

  • (\gamma) (スケール): 1(学習可能)
  • (\beta) (バイアス): 0(学習可能)
  • 移動平均: 0.9 ~ 0.99(モーメント係数)

9. 損失関数のスケール (特に FP16 / Mixed Precision Training)

  • 一般的なスケール: 128 ~ 8192
  • 役割: 勾配の精度を確保し、数値的に安定させる

10. Learning Rate Decay (学習率減衰)

(1) Step Decay

  • スケジュール: 一定エポックごとに 0.1 倍
  • 例: 30, 60, 90 エポックごとに減衰

(2) Cosine Annealing

  • 学習率: (\eta_t = \eta_{\text{min}} + \frac{1}{2}(\eta_{\text{max}} - \eta_{\text{min}})(1 + \cos(\frac{t}{T} \pi)))
  • 用途: 長期学習に有効

(3) Exponential Decay

  • 学習率: (\eta_t = \eta_0 e^{-\lambda t})
  • 用途: 細かい調整向け

11. 勾配クリッピング (Gradient Clipping)

  • 一般的な範囲: 0.5 ~ 5.0
  • 適用: RNN, LSTM, Transformer などで勾配爆発を防ぐために利用

12. Early Stopping

  • Patience: 5 ~ 10(エポック)
  • Delta: (10^{-4}) ~ (10^{-6})(改善が見られないときの閾値)

まとめ

パラメーター 一般的な値
学習率 0.001 (Adam), 0.01 (SGD)
バッチサイズ 32 ~ 512
モメンタム 0.9
Weight Decay (10^{-4}) ~ (10^{-6})
初期化 He (ReLU), Xavier (Sigmoid, Tanh)
ドロップアウト 0.2 ~ 0.5
Adam パラメータ (\beta_1=0.9, \beta_2=0.999, \epsilon=10^{-8})
勾配クリッピング 0.5 ~ 5.0
Early Stopping Patience: 5-10

調整の際は、ハイパーパラメータ最適化(Optuna, Hyperopt, Grid Search など)を活用すると効率的です!

Discussion