什麼是 學習率排程(Learning Rate Scheduling)?
學習率排程是一種在訓練過程中調整學習率的技術,旨在加速收斂、避免震盪,並提高模型的泛化能力。常見方法包括步階衰減、指數衰減和餘弦退火。
核心概念
學習率排程 (Learning Rate Scheduling) 的核心概念是在神經網路訓練過程中,動態調整學習率 (Learning Rate)。學習率是梯度下降演算法中的一個重要超參數,它決定了每次迭代中模型權重更新的幅度。一個合適的學習率對於模型的訓練至關重要。如果學習率太高,模型可能會在最優解附近震盪,甚至發散;如果學習率太低,模型可能會收斂緩慢,或者陷入局部最小值。
學習率排程旨在解決固定學習率的局限性,通過在訓練過程中調整學習率,以達到更好的訓練效果。常見的學習率排程策略包括:
- 時間衰減 (Time-Based Decay): 隨著訓練時間的推移,逐漸降低學習率。
- 步階衰減 (Step Decay): 在預定的訓練步數或 epoch 後,將學習率降低一個固定的比例。
- 指數衰減 (Exponential Decay): 隨著訓練時間的推移,按照指數函數降低學習率。
- 餘弦退火 (Cosine Annealing): 按照餘弦函數的形狀,週期性地調整學習率。
- 自適應學習率 (Adaptive Learning Rate): 根據每個參數的梯度大小,自適應地調整學習率。例如,Adam、RMSProp 和 Adagrad 等優化器都屬於自適應學習率方法。
運作原理
學習率排程的運作原理是基於以下觀察:
- 訓練初期: 模型需要快速學習,因此可以使用較高的學習率,以便快速探索參數空間。
- 訓練中期: 隨著訓練的進行,模型逐漸接近最優解,此時可以降低學習率,以避免震盪,並更精確地找到最優解。
- 訓練後期: 當模型接近收斂時,可以使用更小的學習率,以微調模型,並提高泛化能力。
不同的學習率排程策略通過不同的方式實現上述目標。例如,時間衰減和指數衰減策略隨著訓練時間的推移,逐漸降低學習率。步階衰減策略在預定的時間點突然降低學習率。餘弦退火策略則週期性地調整學習率,使其在訓練過程中經歷多次「升溫」和「降溫」的過程。自適應學習率方法則根據每個參數的梯度大小,自適應地調整學習率,使得梯度較大的參數可以更快地更新,而梯度較小的參數則可以更慢地更新。
實際應用
學習率排程在許多深度學習應用中都得到了廣泛應用,包括:
- 圖像分類: 在訓練用於圖像分類的神經網路時,通常會使用學習率排程來提高模型的準確性。例如,ResNet、DenseNet 和 EfficientNet 等模型都使用了學習率排程。
- 物件檢測: 在訓練用於物件檢測的神經網路時,學習率排程可以幫助模型更快地收斂,並提高檢測的準確性。例如,Faster R-CNN、YOLO 和 SSD 等模型都使用了學習率排程。
- 自然語言處理: 在訓練用於自然語言處理的神經網路時,學習率排程可以幫助模型更好地學習語言的結構和語義。例如,Transformer、BERT 和 GPT 等模型都使用了學習率排程。
- 語音辨識: 在訓練用於語音辨識的神經網路時,學習率排程可以幫助模型更好地學習語音的特徵。例如,DeepSpeech 和 Kaldi 等模型都使用了學習率排程。
- 強化學習: 在訓練強化學習模型時,學習率排程可以幫助模型更快地學習策略,並提高性能。例如,DQN 和 PPO 等模型都使用了學習率排程。
常見誤區
- 學習率排程總是能提高模型性能: 學習率排程是一種有用的技術,但它並不能保證總是能提高模型性能。如果學習率排程策略選擇不當,或者超參數設置不合理,反而可能導致模型性能下降。
- 自適應學習率方法不需要學習率排程: 自適應學習率方法可以根據每個參數的梯度大小自適應地調整學習率,但它們仍然可以與學習率排程結合使用,以進一步提高模型性能。例如,可以將 Adam 優化器與餘弦退火策略結合使用。
- 學習率排程的超參數不需要調整: 學習率排程的超參數(例如,衰減率、步數、週期)需要根據具體的問題和資料集進行調整。一個好的超參數設置可以顯著提高模型性能,而一個不好的超參數設置則可能導致模型性能下降。
- 學習率排程越複雜越好: 複雜的學習率排程策略並不一定比簡單的策略更好。在選擇學習率排程策略時,應該考慮問題的複雜度和計算資源的限制。有時,一個簡單的步階衰減策略就可以取得很好的效果。
相關術語
常見問題
延伸學習
想看 學習率排程 的完整影片教學?前往 美第奇 AI 學院