【深度学习训练缩放法则系列】 第一课 · 学习率与批大小的 Scaling Law
(公式、图解与深度思考 — 系列第 1 课)
速览(两分钟把握要点)
-
核心命题:在 SGD 框架下,批大小 B B B 与最佳学习率 η ∗ \eta^* η∗ 有明确的定量关系,大体上是“批越大,噪声越小,允许用更大的学习率”。
-
理论公式(SGD):
η SGD ∗ ≈ ∥ g ∥ 2 g ⊤ H g + 1 B tr ( Σ H ) = η max 1 + B noise / B \boxed{\;\eta^*_{\text{SGD}} \approx \frac{\|g\|^2}{g^\top H g + \dfrac{1}{B}\operatorname{tr}(\Sigma H)} = \frac{\eta_{\max}}{1 + B_{\text{noise}}/B}\;} ηSGD∗≈g⊤Hg+B1tr(ΣH)∥g∥2=1+Bnoise/Bηmax
其中 η max = ∥ g ∥ 2 g ⊤ H g \eta_{\max}=\dfrac{\|g\|^2}{g^\top H g} ηmax=g⊤Hg∥g∥2、 B noise = tr ( Σ H ) g ⊤ H g B_{\text{noise}}=\dfrac{\operatorname{tr}(\Sigma H)}{g^\top H g} Bnoise=g⊤Hgtr(ΣH)。
-
工程经验:线性放缩(把 B B B 放大 k k k 倍,尝试把初始 η \eta η 放大 k k k 倍)在许多大规模训练里有效(配合 warmup)。(arXiv)
-
噪声刻度(gradient noise scale) 能预测“有意义的最大批大小”。(arXiv)
下面把每一步分解推导 + 直观解释 + 实战建议都写清楚,便于课堂讲解与工程应用。
一、把训练看成“下山”:符号与直观
将训练想象为机器人在高维山谷中下坡。重要符号:
- 参数: w ∈ R N w\in\mathbb{R}^N w∈RN。
- 损失: L ( w ) L(w) L(w)。
- 真实梯度: g = ∇ L ( w ) g=\nabla L(w) g=∇L(w)。
- 单样本梯度: g ~ i \tilde g_i g~i。
- 批梯度(无偏): g ~ B = 1 B ∑ i = 1 B g ~ i , E [ g ~ B ] = g . \displaystyle \tilde g_B=\frac{1}{B}\sum_{i=1}^B \tilde g_i,\quad \mathbb{E}[\tilde g_B]=g. g~B=B1i=1∑Bg~i,E[g~B]=g.
- 梯度噪声协方差: Σ = Cov ( g ~ i ) \Sigma=\operatorname{Cov}(\tilde g_i) Σ=Cov(g~i),于是 Var ( g ~ B ) = Σ / B \operatorname{Var}(\tilde g_B)=\Sigma/B Var(g~B)=Σ/B。
- 优化器输出的更新向量: ϕ ~ B \tilde\phi_B ϕ~B(对 SGD, ϕ ~ B = g ~ B \tilde\phi_B=\tilde g_B ϕ~B=g~B)。
- 曲率(Hessian): H = ∇ 2 L ( w ) H=\nabla^2 L(w) H=∇2L(w)。
用二阶泰勒展开近似一步更新后的损失( η \eta η 足够小):
L ( w − η ϕ ~ B ) ≈ L ( w ) − η ϕ ~ B ⊤ g + 1 2 η 2 ϕ ~ B ⊤ H ϕ ~ B . L(w - \eta \tilde\phi_B) \approx L(w) - \eta\,\tilde\phi_B^\top g + \tfrac{1}{2}\eta^2\,\tilde\phi_B^\top H \tilde\phi_B. L(w−ηϕ~B)≈L(w)−ηϕ~B⊤g+21η2ϕ~B⊤Hϕ~B.
因为 ϕ ~ B \tilde\phi_B ϕ~B 随机,我们取期望(期望上每步的平均下降量):
Δ L ≈ η E [ ϕ ~ B ] ⊤ g − 1 2 η 2 tr ( E [ ϕ ~ B ϕ ~ B ⊤ ] H ) . \Delta L \approx \eta\,\mathbb{E}[\tilde\phi_B]^\top g - \tfrac{1}{2}\eta^2\,\operatorname{tr}\!\big(\mathbb{E}[\tilde\phi_B\tilde\phi_B^\top] H\big). ΔL≈ηE[ϕ~B]⊤g−21η2tr(E[ϕ~Bϕ~B⊤]H).
这是一个关于 η \eta η 的二次函数:第一项是线性“信号”收益,第二项是二次“曲率/噪声”惩罚。
二、求最优学习率的通用公式
对 Δ L \Delta L ΔL 关于 η \eta η 求导并令为零:
∂ Δ L ∂ η ≈ E [ ϕ ~ B ] ⊤ g − η tr ( E [ ϕ ~ B ϕ ~ B ⊤ ] H ) = 0. \frac{\partial \Delta L}{\partial \eta} \approx \mathbb{E}[\tilde\phi_B]^\top g - \eta\,\operatorname{tr}\!\big(\mathbb{E}[\tilde\phi_B\tilde\phi_B^\top] H\big) = 0. ∂η∂ΔL≈E[ϕ~B]⊤g−ηtr(E[ϕ~Bϕ~B⊤]H)=0.
于是得到理论最优步长(近似):
η ∗ ≈ E [ ϕ ~ B ] ⊤ g tr ( E [ ϕ ~ B ϕ ~ B ⊤ ] H ) \boxed{\;\eta^* \approx \frac{\mathbb{E}[\tilde\phi_B]^\top g}{\operatorname{tr}\!\big(\mathbb{E}[\tilde\phi_B\tilde\phi_B^\top] H\big)}\;} η∗≈tr(E[ϕ~Bϕ~B⊤]H)E[ϕ~B]⊤g
直观:分子是信号强度(更新方向与真实梯度对齐的程度),分母是代价/不确定性(更新的二阶矩在曲率方向上的投影)。
三、把公式套到 SGD 上(完整逐步推导)
对 SGD 有 ϕ ~ B = g ~ B \tilde\phi_B = \tilde g_B ϕ~B=g~B。
-
信号项:
E [ g ~ B ] ⊤ g = g ⊤ g = ∥ g ∥ 2 . \mathbb{E}[\tilde g_B]^\top g = g^\top g = \|g\|^2. E[g~B]⊤g=g⊤g=∥g∥2.
-
二阶矩(分解为信号 + 噪声):
E [ g ~ B g ~ B ⊤ ] = Var ( g ~ B ) + E [ g ~ B ] E [ g ~ B ] ⊤ = Σ B + g g ⊤ . \mathbb{E}[\tilde g_B \tilde g_B^\top] = \operatorname{Var}(\tilde g_B) + \mathbb{E}[\tilde g_B]\mathbb{E}[\tilde g_B]^\top = \frac{\Sigma}{B} + g g^\top. E[g~Bg~B⊤]=Var(g~B)+E[g~B]E[g~B]⊤=BΣ+gg⊤.
-
代价项代入:
tr ( E [ g ~ B g ~ B ⊤ ] H ) = tr ( Σ B H ) + tr ( g g ⊤ H ) = tr ( Σ H ) B + g ⊤ H g . \operatorname{tr}\!\left(\mathbb{E}[\tilde g_B \tilde g_B^\top] H\right) = \operatorname{tr}\!\left(\frac{\Sigma}{B} H\right) + \operatorname{tr}\!(g g^\top H) = \frac{\operatorname{tr}(\Sigma H)}{B} + g^\top H g. tr(E[g~Bg~B⊤]H)=tr(BΣH)+tr(gg⊤H)=Btr(ΣH)+g⊤Hg.
-
所以得到(恢复成可解释形式):
η SGD ∗ ≈ ∥ g ∥ 2 g ⊤ H g + 1 B tr ( Σ H ) . \boxed{\; \eta^*_{\text{SGD}} \approx \frac{\|g\|^2}{g^\top H g + \dfrac{1}{B}\operatorname{tr}(\Sigma H)} \;}. ηSGD∗≈g⊤Hg+B1tr(ΣH)∥g∥2.
-
定义两物理量使表达更直观:
- η max ≡ ∥ g ∥ 2 g ⊤ H g \displaystyle \eta_{\max} \equiv \frac{\|g\|^2}{g^\top H g} ηmax≡g⊤Hg∥g∥2 —— 当噪声消失( B → ∞ B\to\infty B→∞)时的学习率上界。
- B noise ≡ tr ( Σ H ) g ⊤ H g \displaystyle B_{\text{noise}} \equiv \frac{\operatorname{tr}(\Sigma H)}{g^\top H g} Bnoise≡g⊤Hgtr(ΣH) —— 等效噪声批次(衡量噪声对学习率的抑制强度)。
于是简洁形式:
η SGD ∗ ≈ η max 1 + B noise / B . \boxed{\;\eta^*_{\text{SGD}} \approx \frac{\eta_{\max}}{1 + B_{\text{noise}}/B}\;}. ηSGD∗≈1+Bnoise/Bηmax.
几何意义:当 B ≪ B noise B \ll B_{\text{noise}} B≪Bnoise 时,噪声主导, η ∗ ≈ η max ⋅ B B noise \eta^* \approx \eta_{\max}\cdot \frac{B}{B_{\text{noise}}} η∗≈ηmax⋅BnoiseB(近线性于 B B B);当 B ≫ B noise B \gg B_{\text{noise}} B≫Bnoise 时, η ∗ → η max \eta^*\to\eta_{\max} η∗→ηmax。
四、从理论到经验:常见缩放规则(和为什么它们能工作)
-
线性学习率放缩(Linear scaling rule):将批次放大 k k k 倍,把初始学习率也放大 k k k 倍(通常配合 warmup)。在图像领域的经典实践中被证实可行(ResNet-50, ImageNet 等),并被广泛采用。(arXiv)
-
平方根放缩(Conservative):在一些不稳定或噪声结构复杂的场景,工程上会用 η ∝ B \eta\propto\sqrt{B} η∝B 更保守地放缩(比线性放缩更稳健)。
-
动态替代:增大批次替代衰减学习率:Smith 等人提出,在训练过程中增加批大小可以在很多情形下替代传统的学习率衰减,并保持相似学习曲线,从而减少参数更新次数并提高并行性。(arXiv)
-
梯度噪声刻度(gradient noise scale):McCandlish 等人提出“gradient noise scale”作为可测量的统计量,用来预测“最大有用批大小”。当 B B B 超过这个尺度,进一步增大批次收益递减。这个量与上文的 B noise B_{\text{noise}} Bnoise 是同类概念,可用于工程上的快速判定。(arXiv)
-
为什么要 warmup:一方面,放大初始学习率会在训练早期引发不稳定(梯度/激活爆炸);另一方面,warmup(线性或余弦)在训练开始阶段逐步提升 η \eta η 能让参数和归一化层逐步适应大步长,这是实践中保持稳定的关键步骤(Goyal 等人在大批量训练里用了 warmup 使线性放缩稳定)。(arXiv)
五、复杂优化器(Adam / RMSProp)为何“破坏”了简单缩放规则?
Adam 的主要构件是:
m t = β 1 m t − 1 + ( 1 − β 1 ) g ~ B , v t = β 2 v t − 1 + ( 1 − β 2 ) g ~ B 2 , m_t=\beta_1 m_{t-1} + (1-\beta_1)\tilde g_B,\quad v_t=\beta_2 v_{t-1} + (1-\beta_2)\tilde g_B^2, mt=β1mt−1+(1−β1)g~B,vt=β2vt−1+(1−β2)g~B2,
ϕ ~ B ∝ m t v t + ϵ . \tilde\phi_B \propto \frac{m_t}{\sqrt{v_t}+\epsilon}. ϕ~B∝vt+ϵmt.
难点:
- 更新向量包含了非线性除法与开方:因此期望运算不再可交换——一般有
E [ m t v t ] ≠ E [ m t ] E [ v t ] \displaystyle \mathbb{E}\!\left[\frac{m_t}{\sqrt{v_t}}\right]\neq \frac{\mathbb{E}[m_t]}{\sqrt{\mathbb{E}[v_t]}} E[vtmt]=E[vt]E[mt];
这使得像对 SGD 那样的闭式推导变得非常困难。 - 需要大量假设(梯度成分独立、近似高斯、弱相关性等)才能得到任何形式化的近似解;这些假设在真实深网训练中往往不成立或仅近似成立。
- 学术界对 Adam 收敛性与参数灵敏度的研究很多(Kingma & Ba 原始工作与后续许多收敛分析),但仍没有像 SGD 那样清晰的、普适的缩放法则。(arXiv)
结论:对 Adam 你需要更多经验法则与数值试验来决定如何随 B B B 调整 η \eta η。
六、工程实战配方(可直接拿来试的步骤)
下面按“先验→试验→放缩→监控→微调”的顺序给出实务流程。
-
先做小规模基线
- 在单卡/小批次 B 0 B_0 B0 上做学习率网格或 LR-finder,得到一个合适的基线学习率 η 0 \eta_0 η0。
-
选择放缩策略
-
目标:把有效批次放大到目标 B B B。若放大倍数 k = B / B 0 k=B/B_0 k=B/B0:
- 先试线性放缩:初始 η = k ⋅ η 0 \eta = k\cdot \eta_0 η=k⋅η0,并用 warmup(常见 warmup 长度为若干千步或和 k k k 成正比)。Goyal 等实验证明此法在很多视觉任务上可行。(arXiv)
- 若训练抖动/发散,退到 η ∝ k \eta\propto\sqrt{k} η∝k 或把 η \eta η 再乘以 0.5——0.8 的保守因子。
-
-
warmup(强烈建议)
- 在训练早期(例如前 1–10% 的训练步数,或与 k k k 成正比)线性增长 η \eta η 从很小的值到目标值;很多大批量训练都需要 warmup 来稳定。(arXiv)
-
动量与批大小的交互
- Smith 等人指出,可通过调整动量系数 m m m 配合 B B B 增加(例如 B ∝ 1 / ( 1 − m ) B \propto 1/(1-m) B∝1/(1−m) 的思路)来减少更新数量,但这有时会轻微损害泛化。实际中通常保持常用的动量(0.9)不变,或做小范围微调。(arXiv)
-
梯度累积(当显存受限时)
- 用小显存/小微批次模拟大批次:在多步内累积梯度再更新。注意动量状态与累积步数的交互(累积会改变等效噪声时间尺度)。
-
监控关键指标
- 实时看训练损失、验证损失、梯度范数、权重范数、学习率。若训练早期验证损失“突然上去”或梯度爆炸,先减小 η \eta η 或延长 warmup。
-
测量噪声刻度
- 若可行,估计 gradient noise scale(或 McCandlish 等人建议的度量),它能给出“有效最大批大小”的数值判断。若 B B B 超过该规模,继续增大 B B B 的收益递减。(arXiv)
七、常见误区与问答
问:批次越大,训练越快吗?
答:不一定。大批次减少更新次数但增加每次计算量;若超过噪声刻度,数据效率会下降(需要更多样本到达相同性能)。一言以蔽之:时间效率 vs 数据效率 的权衡。(arXiv)
问:Adam 是否不需要我们关心放缩法则?
答:不对。Adam 的 adaptive 机制改变了缩放行为,但并没有把缩放问题消灭——你仍需实验和 warmup,而且理论上更难给出统一解析。(arXiv)
问:有没有“万能”放缩公式?
答:没有。上文给出的 η SGD ∗ \eta^*_{\text{SGD}} ηSGD∗ 是在局部泰勒近似与若干统计量定义下的近似表达,对不同模型/阶段/优化器需要做经验微调。
八、课堂演示

九、本课小结(讲义版)
-
理论:在 SGD 近似下,最佳学习率由“信号(对齐) / 成本(方差 × 曲率)” 的比值给出,导出:
η SGD ∗ ≈ η max 1 + B noise / B . \eta^*_{\text{SGD}} \approx \frac{\eta_{\max}}{1 + B_{\text{noise}}/B}. ηSGD∗≈1+Bnoise/Bηmax.
-
实践:线性放缩 + warmup 是工程界常用且常有效的做法(ImageNet / ResNet 的成功示例)。(arXiv)
-
测量工具:gradient noise scale 可以帮助判断何时再增大批次变得没意义。(arXiv)
-
拓展:Adam 等自适应方法改变了可推导性,需在下一课深入讨论。(arXiv)
参考与拓展阅读(我在课堂中常提到的几篇关键论文)
- Goyal et al., 2017 — Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour(线性放缩 + warmup 的经典工程论文)。(arXiv)
- Smith et al., 2017/2018 — Don’t Decay the Learning Rate, Increase the Batch Size(增加批大小可替代衰减学习率的经验与分析)。(arXiv)
- McCandlish et al., 2018 — An Empirical Model of Large-Batch Training(提出 gradient noise scale,用来预测最大有用批次)。(arXiv)
- Kaplan et al., 2020 — Scaling Laws for Neural Language Models(更宏观的 scaling law:模型/数据/算力 与性能的幂律关系,供背景知识参考)。(arXiv)
- Kingma & Ba, 2014 — Adam: A Method for Stochastic Optimization(Adam 原始论文,理解自适应优化器的结构很重要)。(arXiv)
下一课预告(系列衔接)
第二课 · Adam 等自适应优化器的缩放难题(要点):
- 为什么 Adam 的非线性( m t / v t m_t/\sqrt{v_t} mt/vt)让期望难算?
- 现有理论上的近似与缺陷(什么时候可用?什么时候会误导?)。
- 实验剖析:在大批量下 Adam 与 SGD 的收敛/泛化差异。
更多推荐


所有评论(0)