Cosine Annealing与Cyclic学习率调度
解释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.CosineAnnealingLR 和 CyclicLR 已原生支持。