学习率调度(预热 + 余弦退火)
学习率不是设一个常数就完事——它随训练步数变化的“形状”才是关键。开头如果直接用大学习率,模型还没站稳就被一脚踹飞,损失瞬间爆掉;正确的做法是先预热(warmup):用一小段时间把步长从很小慢慢拉到峰值,等参数稳住,再让学习率沿余弦曲线缓缓退火,稳稳落进谷底。上面是学习率随步数的曲线(真正要看的内容),下面是它带来的损失(示意)。切换调度方式,调峰值和预热步数,看上下两条线怎么联动。
上图 蓝线是学习率随步数的调度曲线(淡蓝带是预热区间);下图 红线是对应的损失(示意)。金点是当前步。
预热(warmup)
开头小步慢走,把学习率从接近 0 渐渐拉到峰值,等模型稳住再加速,避免一上来步子太大、直接发散冲飞。
余弦退火
后期沿余弦曲线把学习率逐渐减小到 0,相当于落地时收油门,稳稳落进损失谷底、收得更低。
这是标配
从 ResNet 到大语言模型,几乎所有大规模训练都用“预热 + 余弦(或线性)退火”这套学习率调度。