返回 深度学习 思维导图
中文·English
🧠 深度学习ID: lr-scheduler

学习率调度

Learning Rate Scheduling
🎯核心定义
学习率调度 = 按预设计划在训练中改变学习率 ηt\eta_t。四类主流策略: ① Warmup(线性预热): ηt=ηmaxtTwarm\eta_t = \eta_{\max}\cdot\frac{t}{T_{\text{warm}}}(t = 1…TwarmT_{\text{warm}}),从接近 0 线性升到峰值 ηmax\eta_{\max};② 线性衰减: ηt=ηmax(1tT)\eta_t = \eta_{\max}\left(1 - \frac{t}{T}\right),从头到尾线性降到 0;③ 阶梯衰减(Step Decay): ηt=η0γt/s\eta_t = \eta_0\gamma^{\lfloor t/s \rfloor},每 ss 步乘一次 γ\gamma(如每次 ×0.1),曲线呈台阶状;④ 余弦退火(Cosine Annealing): ηt=ηmin+12(ηmaxηmin)(1+cos(tTπ))\eta_t = \eta_{\min} + \frac{1}{2}(\eta_{\max} - \eta_{\min})\left(1 + \cos\left(\frac{t}{T}\pi\right)\right)——t=0 时 η0=ηmax\eta_0 = \eta_{\max}、t=T 时 ηT=ηmin\eta_T = \eta_{\min},在峰谷之间平滑下降、没有突变。大模型训练标配“warmup + 余弦”: 前 1%~5% 步线性升到峰值,再从峰值余弦平滑降到末端极小值。为什么需要 warmup: 训练初期 Adam 的 vtv_t 只见过极少数梯度、v^t\hat{v}_t 很小,此时 η/v^t\eta/\sqrt{\hat{v}_t} 可能非常大,一步就能把参数“踢飞”(大批量、梯度噪声大时更危险);小学习率让矩估计与 BN/LN 统计量先稳定下来再提速。
💡使用场景
所有 SOTA 大模型与 CNN 训练管线的标配组件;面试高频追问“warmup 的必要性”“余弦退火 vs 阶梯衰减”“学习率与 batch size 的关系(线性缩放规则)”。
解决的核心痛点
固定学习率的两难——大 lr 前期收敛快但后期在极小值附近震荡甚至发散,小 lr 前期进展太慢;调度把“前期大步探索、后期小步精修”固化成确定性计划。余弦退火末端渐近到极小 lr,避免阶梯衰减的悬崖式掉速引发 loss 突跳,且平滑下降常收敛到更平坦的极小值(泛化更好)。线性缩放规则(Goyal 2017): batch size 翻倍时学习率也应约翻倍(更大 batch 的梯度噪声更小、等效步长可放大),但必须配合 warmup 使用,否则早期步长过大会发散。
🎯5 个高频面试考点 (Exam Points)
1
写出线性 warmup 公式 ηt=ηmaxtTwarm\eta_t = \eta_{\max}\cdot\frac{t}{T_{\text{warm}}} 与余弦退火公式 ηt=ηmin+12(ηmaxηmin)(1+cos(tTπ))\eta_t = \eta_{\min} + \frac{1}{2}(\eta_{\max}-\eta_{\min})\left(1+\cos\left(\frac{t}{T}\pi\right)\right),说明 t=0 与 t=T 时 ηt\eta_t 分别等于什么。
2
为什么训练初期需要 warmup?推导 Adam 早期 η/v^t\eta/\sqrt{\hat{v}_t} 为什么可能巨大(v^t\hat{v}_t 只积累了几个梯度),以及大 batch 下风险为何更大。
3
余弦退火 vs 阶梯衰减: 为什么平滑下降更好(避免悬崖式掉速的 loss 突跳)?末端小学习率的作用(收敛到平坦极小、泛化更好)。
4
线性缩放规则(Goyal): batch size 翻倍时学习率为什么约翻倍?梯度噪声如何随 batch 变化?为什么必须配 warmup?
5
典型大模型配置: warmup 步数占比(1%~5%)、峰值学习率、余弦末端最小值;调度与优化器(Adam 的 β2\beta_2ϵ\epsilon)如何协同设定?
更新于 2026-08-12
🎯
检验攻克程度:针对「学习率调度」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点Adam/AdamW下一个知识点权重初始化

🔗 更多 深度学习 知识点卡片

激活函数演进Autograd 动态图BatchNorm 批归一化经典 CNN 演进