Cosine Annealing

一种基于余弦函数的学习率调度策略,让学习率从初始值平滑下降到接近零,两端变化慢、中段变化快

直觉理解

训练神经网络时,学习率不应该一成不变——开始时步子大一点快速探索,后期步子小一点精细调整。Cosine Annealing 用半个余弦曲线来控制这个过程,让学习率从高到低平滑衰减。

公式

ηt=ηmin+12(ηmaxηmin)(1+cos(tTπ))\eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 + \cos\left(\frac{t}{T}\pi\right)\right)ηt=ηmin+21(ηmaxηmin)(1+cos(Ttπ))

其中:

  • ηt\eta_tηt:第 ttt 步的学习率
  • ηmax\eta_{max}ηmax:初始学习率(最大值)
  • ηmin\eta_{min}ηmin:最小学习率(通常接近 0)
  • TTT:总训练步数
  • ttt:当前步数

衰减特点

Cosine Annealing 的衰减曲线两端平缓、中段快速下降

  • 初期ttt 接近 0):cos\coscos 值接近 1,学习率接近 ηmax\eta_{max}ηmax,变化缓慢
  • 中期cos\coscos 值快速从 1 降到 -1,学习率快速下降
  • 末期ttt 接近 TTT):cos\coscos 值接近 -1,学习率接近 ηmin\eta_{min}ηmin,变化再次放缓

这种"慢—快—慢"的节奏让训练初期充分探索、中期快速收敛、末期精细调优。

Warm Restart(SGDR)

SGDR(Stochastic Gradient Descent with Warm Restarts)在每个周期结束后将学习率重置回 ηmax\eta_{max}ηmax,重新开始下降。这利用了余弦函数的周期性,帮助模型跳出局部最优。

为什么用余弦而不是线性衰减

线性衰减的速率始终不变,而余弦衰减在关键阶段(收敛期)变化更快,在稳定阶段(开头和结尾)更温和。实践证明这种非线性衰减通常能获得更好的训练效果。