可视化资源

学习率调度(预热 + 余弦退火)

学习率不是设一个常数就完事——它随训练步数变化的“形状”才是关键。开头如果直接用大学习率,模型还没站稳就被一脚踹飞,损失瞬间爆掉;正确的做法是先预热(warmup):用一小段时间把步长从很小慢慢拉到峰值,等参数稳住,再让学习率沿余弦曲线缓缓退火,稳稳落进谷底。上面是学习率随步数的曲线(真正要看的内容),下面是它带来的损失(示意)。切换调度方式,调峰值和预热步数,看上下两条线怎么联动。

上图 蓝线是学习率随步数的调度曲线(淡蓝带是预热区间);下图 红线是对应的损失(示意)。金点是当前步。

常数 余弦退火 预热+余弦
最终损失 —
预热(warmup)

开头小步慢走,把学习率从接近 0 渐渐拉到峰值,等模型稳住再加速,避免一上来步子太大、直接发散冲飞。

余弦退火

后期沿余弦曲线把学习率逐渐减小到 0,相当于落地时收油门,稳稳落进损失谷底、收得更低。

这是标配

从 ResNet 到大语言模型,几乎所有大规模训练都用“预热 + 余弦(或线性)退火”这套学习率调度。