詳細解釋
學習率排程(Learning Rate Scheduler)是根據訓練進度動態調整學習率的策略,對模型收斂和最終性能有重要影響。
常見策略:
- 階梯衰減(Step Decay):
- 每N個epoch將學習率乘以係數(如0.1)
- 簡單有效,最常用
- 例如:初始0.1,30epoch後0.01,60epoch後0.001
- 指數衰減(Exponential Decay):
- lr = lr₀ × exp(-kt)
- 平滑連續的衰減
- 適合長期訓練
- 余弦退火(Cosine Annealing):
- lr = lr_min + 0.5(lr_max - lr_min)(1 + cos(πT_cur/T_max))
- 平滑的週期性衰減
- 適合Transformer架構 (變換器 / 注意力模型) (Switch Transformer)等現代架構
- 帶重啟的余弦退火(Cosine Annealing with Warm Restarts):
- 週期性重設學習率到高值
- 幫助跳出局部最優
- 也稱SGDR(Stochastic Gradient Descent with Warm Restarts)
- ReduceLROnPlateau:
- 驗證損失停滯時降低學習率
- 自適應,不需要預設epoch
與其他技術的結合:
實踐建議:
- 預訓練:余弦退火常用,訓練1-3epoch
- 微調:較小學習率,較短warmup
- 監測損失曲線:調整策略
- 預設值:通常從Step Decay開始
深度學習框架:
- PyTorch (Torch Compile):torch.optim.lr_scheduler
- TensorFlow:tf.keras.callbacks.LearningRateScheduler
- PyTorch Lightning (訓練框架):內建多種scheduler
學習率排程是訓練深度模型的關鍵藝術。