🌟
深層学習のパラメーターに関する一般的な値や初期設定について
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