Cyclic Learning Rates/zh
| Article | |
|---|---|
| Topic area | Optimization |
| Prerequisites | Stochastic Gradient Descent, Learning Rate Schedule |
概述
循環學習率(CLR)是一類學習率調度方法,它使學習率在下界和上界之間周期性變化,而不是單調遞減。該技術由 Leslie N. Smith 於 2015 年提出,作為手動調整的階梯衰減和更複雜的自適應優化器的實用替代方案,其經驗觀察表明:讓學習率振盪通常能比精心調整的固定或衰減調度在更少的迭代次數內達到目標精度。[1] 同一篇論文還提出了學習率範圍測試,這是一種短時掃描,能自動定位循環的邊界。
此後,循環調度已成為 PyTorch(`torch.optim.lr_scheduler.CyclicLR`)和 fast.ai 訓練棧等庫中的默認選擇,並支撐了流行的 one-cycle(單周期)策略,可在數十個而非數百個輪次內將深度網絡訓練到高精度。
背景與動機
2015 年之前的大多數訓練方案使用分段常數學習率,伴隨一兩次手動下降,有時輔以與驗證損失掛鈎的學習率衰減。兩個實際問題促成了循環調度的出現。首先,選擇初始學習率和下降時機需要代價高昂的反覆試錯掃描。其次,即便是精心調整的單調調度,也可能讓優化器陷入鞍點附近,或被困在小步長無法逃離的狹窄尖銳極小值中。
Smith 的假設是:周期性地提高學習率具有有益的正則化效果——大步長將迭代點推離尖銳極小值並越過鞍脊,隨後的低速率階段則使其能夠穩定到附近更平坦的盆地。在極小學習率上花費的總計算量也減少了,這有助於觀察到的實際運行時間加速。
三角形調度
基本的 CLR 策略稱為三角形,它在長度為 $ s $(步長)的半周期內將學習率從基值 $ \eta_{\min} $ 線性插值到最大值 $ \eta_{\max} $,然後在下一個半周期內線性返回到 $ \eta_{\min} $。定義周期索引
$ {\displaystyle c = \left\lfloor 1 + \frac{t}{2s} \right\rfloor,} $
以及周期內的位置
$ {\displaystyle x = \left| \frac{t}{s} - 2c + 1 \right|.} $
在第 $ t $ 次迭代時的學習率為
$ {\displaystyle \eta_t = \eta_{\min} + (\eta_{\max} - \eta_{\min})\,\max(0, 1 - x).} $
典型的步長在以迭代次數衡量的兩到十個輪次之間。Smith 報告說,當循環足夠短,使訓練預算內能容納多個完整循環時,可獲得良好的結果。
學習率範圍測試
為了選擇 $ \eta_{\min} $ 和 $ \eta_{\max} $,Smith 提出了範圍測試(又稱 LR 查找器)。該方法訓練數百次迭代,同時將學習率從極小值(例如 $ 10^{-7} $)以指數方式增加到較大值(例如 $ 10 $),並記錄每一步的訓練損失。所得的損失-學習率曲線通常呈現三個區域:學習率過小無法取得進展的平坦區域、有效學習的陡峭下降區域,以及損失爆炸的發散區域。
一個實用的啟發式方法是:將 $ \eta_{\max} $ 設置在損失開始上升的速率附近或略低於該速率,將 $ \eta_{\min} $ 設置在大約小一個數量級處,靠近下降區域的起點。範圍測試成本低廉(通常不到一個完整的輪次),可替代傳統網格搜索所需的多次完整訓練運行。
變體
Smith 的原始論文定義了三種共享三角形基本形狀但隨時間調節幅度的策略。
- triangular(三角形):純三角形,所有循環中振幅恆定。
- triangular2(三角形2):差值 $ \eta_{\max} - \eta_{\min} $ 在每個循環結束時減半,在保留形狀的同時逐漸縮小振盪。這將循環的探索優勢與衰減調度的收斂行為相結合。
- exp_range(指數範圍):振幅按指數衰減,$ (\eta_{\max} - \eta_{\min})\gamma^t $,其中 $ \gamma \in (0,1) $。
一個密切相關的餘弦變體用半餘弦波代替三角形;這種更平滑的過渡是 SGDR(帶熱重啟的隨機梯度下降)的基礎,由 Loshchilov 和 Hutter 提出。[2]
One-cycle 策略
在 2018 年的後續工作中,Smith 提出了 one-cycle(單周期)策略,其中學習率在整個訓練運行過程中執行單個三角形,可選地在最後百分之幾的迭代中通過短暫的衰滅階段將其降至遠低於 $ \eta_{\min} $。[3] 該策略通常與鏡像的循環動量調度相結合:在學習率上升時降低動量係數,然後反轉,其依據的啟發式觀點是:當動量降低時,更高的學習率更容易被容忍。
One-cycle 訓練作為超收斂的方法被廣泛推廣,可在比傳統調度少大約一個數量級的迭代次數內將 CIFAR-10 和 ImageNet 模型訓練到具有競爭力的精度。PyTorch 中的實現為 `torch.optim.lr_scheduler.OneCycleLR`。
與其他調度的比較
循環調度在完全單調衰減和熱重啟系列之間占據中間位置。與階梯衰減或餘弦退火相比,循環調度在高學習率下停留的時間顯著更長,這起到了隱式正則化的作用,在訓練數據有限或帶噪聲時尤為有用。與帶熱重啟的餘弦退火(SGDR)相比,三角形形式更簡單,可能也更容易理解,而 SGDR 傾向於產生更平滑的損失曲線,並自然適用於快照集成。[4]
諸如 Adam 之類的自適應優化器與循環調度的交互並不簡單:自適應的逐參數縮放已經為高曲率方向衰減了較大的有效步長,因此循環的經驗收益通常小於使用帶動量的普通 SGD 時的收益。One-cycle 方案最常與帶動量的 SGD 搭配使用。
實際考慮與局限性
循環調度引入了兩個新的超參數($ \eta_{\min} $、$ \eta_{\max} $)和一個步長,但範圍測試在很大程度上自動化了前兩者,並且第三個有良好的默認值。其主要代價是中間快照在不同循環之間不能直接比較:驗證精度會隨學習率振盪,因此模型選擇應在循環結束時進行,而不是在任意迭代處進行。
文獻和實踐經驗中記錄了若干注意事項。
- 與批歸一化統計的相互作用可能並不簡單;非常高的學習率會短暫破壞運行統計的穩定性,有時需要延長第一個循環的預熱部分。
- $ \eta_{\max} $ 的最佳值取決於批大小和模型寬度;將批大小加倍通常允許比例性更高的峰值速率。
- 對於非常深的Transformer模型,one-cycle 策略的使用頻率低於線性預熱後接餘弦衰減的方案,部分原因是層歸一化和 pre-norm 架構能夠容忍更高的恆定速率。
循環學習率仍然是中等規模卷積和循環模型的強大默認選擇,即使在最終採用其他調度的工作流中,也是一種有用的診斷工具,因為範圍測試提供了一種快速且有原則的方法來限定任何學習率掃描的邊界。
參考文獻
- ↑ Smith, L. N. Cyclical Learning Rates for Training Neural Networks. WACV, 2017. arXiv:1506.01186.
- ↑ Loshchilov, I. and Hutter, F. SGDR: Stochastic Gradient Descent with Warm Restarts. ICLR, 2017. arXiv:1608.03983.
- ↑ Smith, L. N. A Disciplined Approach to Neural Network Hyper-parameters: Part 1. Technical Report, US Naval Research Laboratory, 2018. arXiv:1803.09820.
- ↑ Huang, G. et al. Snapshot Ensembles: Train 1, get M for free. ICLR, 2017. arXiv:1704.00109.