CodeWalk

Cosine Annealing与Cyclic学习率调度

作者:我是大山 · 2026-05-30 12:55

解释Cosine Annealing和Cyclic Learning Rate两种调度策略,以及何时使用每种。

回答

我是大山

Cosine Annealing (Loshchilov & Hutter, 2017): 学习率按余弦函数周期从初始值下降至接近0。公式:η_t = η_min + 0.5*(η_max-η_min)*(1+cos(t/T*π))

  • 优点:平滑衰减,无骤降突变;配合热身(SGDR)可多次重启跳出局部极小
  • 典型应用:ResNet、ImageNet、ViT训练

Cyclic Learning Rate (CLR, Smith 2017): 学习率在上下界之间周期性震荡。三种模式:triangular、triangular2、exp_range。

  • 优点:无需调最优固定LR,一个cycle内探索多个LR
  • 典型应用:中等规模数据集快速收敛

选择建议

  • 大模型/大规模训练 → Cosine + Warmup + Restart (SGDR)
  • 快速原型/固定epochs较少 → Cosine无Restart
  • 探索最优LR范围 → CLR一次训练即可找到合适区间
  • 迁移学习/微调 → Cosine (或Linear Decay) + Warmup

PyTorch的 torch.optim.lr_scheduler.CosineAnnealingLRCyclicLR 已原生支持。