优化与训练

学习率调度与热身(learning-rate schedule and warmup)

/ LUR-ning rayt SKE-jool and WORM-up /

学习率调度,是一份在整个训练过程中改变步长的计划,而不是把步长钉死不动。这个直觉,正像你找东西时会做的:离得还远、方向还没摸清时大步流星,越靠近就越走小步、越谨慎,好让自己精确地停下,而不是一脚踏过目标。几乎每一个训练得当的现代模型,用的都是某种调度,而非恒定的学习率。

最常见的做法是衰减:开头用一个相对较大的学习率,好让早期进展飞快,再随训练推进把它缩小——可以分阶段降、平滑地降,或顺着一条余弦曲线一路降向零。热身(warmup)则是用在最开头的相反招数:先从一个极小的学习率起步,在头几百或几千步里把它逐渐升上去。训练初期权重是随机的,梯度可能很狂野,一上来就迈太大一步会把模型掀下悬崖;热身让它平缓地进入状态。大型模型、尤其是 Transformer,往往需要热身才能稳定训练。

合起来,典型配方就是「先热身,再衰减」:把学习率升上去,保持或冲到峰值,再缓缓收下来。这并非迷信——早期阶段趁大步还管用时广泛探索损失地形,后期阶段则在一个不错的盆地里精雕细琢,让小步避免在极小值附近来回弹跳。调度本身也变成一组超参数(峰值学习率、热身长度、衰减形状),要像别的超参数一样去调。

一个常见的 Transformer 配方:在头4000步里,把学习率从接近零线性地升到0.0005(热身);之后,让它在余下的训练里平滑地衰减回零。省掉热身,同一个模型往往在头几百步就发散了。

先柔和升上去,再缓缓收下来——这是现代标准的形状。

热身与 Adam 之类的自适应优化器都能稳住早期训练,但二者并不能互相替代。许多大型模型两者都用——既自适应地走步,又加一段热身斜坡——因为最初那几百次更新是最脆弱的。

又称
lr schedulelearning rate decayannealingwarmup学习率调度学习率衰减热身學習率調度學習率衰減熱身