(公式、图解与深度思考 — 系列第 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}\;} ηSGDgHg+B1tr(ΣH)g2=1+Bnoise/Bηmax

    其中 η max ⁡ = ∥ g ∥ 2 g ⊤ H g \eta_{\max}=\dfrac{\|g\|^2}{g^\top H g} ηmax=gHgg2 B noise = tr ⁡ ( Σ H ) g ⊤ H g B_{\text{noise}}=\dfrac{\operatorname{tr}(\Sigma H)}{g^\top H g} Bnoise=gHgtr(Σ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 wRN
  • 损失: 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=1Bg~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)ηϕ~Bg+21η2ϕ~BHϕ~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]g21η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. ηΔLE[ϕ~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

  1. 信号项:

    E [ g ~ B ] ⊤ g = g ⊤ g = ∥ g ∥ 2 . \mathbb{E}[\tilde g_B]^\top g = g^\top g = \|g\|^2. E[g~B]g=gg=g2.

  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.

  3. 代价项代入:

    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(ggH)=Btr(ΣH)+gHg.

  4. 所以得到(恢复成可解释形式):

       η 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)} \;}. ηSGDgHg+B1tr(ΣH)g2.

  5. 定义两物理量使表达更直观:

    • η max ⁡ ≡ ∥ g ∥ 2 g ⊤ H g \displaystyle \eta_{\max} \equiv \frac{\|g\|^2}{g^\top H g} ηmaxgHgg2 —— 当噪声消失( 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} BnoisegHgtr(ΣH) —— 等效噪声批次(衡量噪声对学习率的抑制强度)。

    于是简洁形式:

       η SGD ∗ ≈ η max ⁡ 1 + B noise / B    . \boxed{\;\eta^*_{\text{SGD}} \approx \frac{\eta_{\max}}{1 + B_{\text{noise}}/B}\;}. ηSGD1+Bnoise/Bηmax.

几何意义:当 B ≪ B noise B \ll B_{\text{noise}} BBnoise 时,噪声主导, η ∗ ≈ η max ⁡ ⋅ B B noise \eta^* \approx \eta_{\max}\cdot \frac{B}{B_{\text{noise}}} ηηmaxBnoiseB(近线性于 B B B);当 B ≫ B noise B \gg B_{\text{noise}} BBnoise 时, η ∗ → η max ⁡ \eta^*\to\eta_{\max} ηηmax


四、从理论到经验:常见缩放规则(和为什么它们能工作)

  1. 线性学习率放缩(Linear scaling rule):将批次放大 k k k 倍,把初始学习率也放大 k k k 倍(通常配合 warmup)。在图像领域的经典实践中被证实可行(ResNet-50, ImageNet 等),并被广泛采用。(arXiv)

  2. 平方根放缩(Conservative):在一些不稳定或噪声结构复杂的场景,工程上会用 η ∝ B \eta\propto\sqrt{B} ηB 更保守地放缩(比线性放缩更稳健)。

  3. 动态替代:增大批次替代衰减学习率:Smith 等人提出,在训练过程中增加批大小可以在很多情形下替代传统的学习率衰减,并保持相似学习曲线,从而减少参数更新次数并提高并行性。(arXiv)

  4. 梯度噪声刻度(gradient noise scale):McCandlish 等人提出“gradient noise scale”作为可测量的统计量,用来预测“最大有用批大小”。当 B B B 超过这个尺度,进一步增大批次收益递减。这个量与上文的 B noise B_{\text{noise}} Bnoise 是同类概念,可用于工程上的快速判定。(arXiv)

  5. 为什么要 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=β1mt1+(1β1)g~B,vt=β2vt1+(1β2)g~B2,

ϕ ~ B ∝ m t v t + ϵ . \tilde\phi_B \propto \frac{m_t}{\sqrt{v_t}+\epsilon}. ϕ~Bvt +ϵ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[vt mt]=E[vt] E[mt]
    这使得像对 SGD 那样的闭式推导变得非常困难。
  • 需要大量假设(梯度成分独立、近似高斯、弱相关性等)才能得到任何形式化的近似解;这些假设在真实深网训练中往往不成立或仅近似成立。
  • 学术界对 Adam 收敛性与参数灵敏度的研究很多(Kingma & Ba 原始工作与后续许多收敛分析),但仍没有像 SGD 那样清晰的、普适的缩放法则。(arXiv)

结论:对 Adam 你需要更多经验法则与数值试验来决定如何随 B B B 调整 η \eta η


六、工程实战配方(可直接拿来试的步骤)

下面按“先验→试验→放缩→监控→微调”的顺序给出实务流程。

  1. 先做小规模基线

    • 在单卡/小批次 B 0 B_0 B0 上做学习率网格或 LR-finder,得到一个合适的基线学习率 η 0 \eta_0 η0
  2. 选择放缩策略

    • 目标:把有效批次放大到目标 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 的保守因子。
  3. warmup(强烈建议)

    • 在训练早期(例如前 1–10% 的训练步数,或与 k k k 成正比)线性增长 η \eta η 从很小的值到目标值;很多大批量训练都需要 warmup 来稳定。(arXiv)
  4. 动量与批大小的交互

    • Smith 等人指出,可通过调整动量系数 m m m 配合 B B B 增加(例如 B ∝ 1 / ( 1 − m ) B \propto 1/(1-m) B1/(1m) 的思路)来减少更新数量,但这有时会轻微损害泛化。实际中通常保持常用的动量(0.9)不变,或做小范围微调。(arXiv)
  5. 梯度累积(当显存受限时)

    • 用小显存/小微批次模拟大批次:在多步内累积梯度再更新。注意动量状态与累积步数的交互(累积会改变等效噪声时间尺度)。
  6. 监控关键指标

    • 实时看训练损失、验证损失、梯度范数、权重范数、学习率。若训练早期验证损失“突然上去”或梯度爆炸,先减小 η \eta η 或延长 warmup。
  7. 测量噪声刻度

    • 若可行,估计 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}. ηSGD1+Bnoise/Bηmax.

  • 实践:线性放缩 + warmup 是工程界常用且常有效的做法(ImageNet / ResNet 的成功示例)。(arXiv)

  • 测量工具:gradient noise scale 可以帮助判断何时再增大批次变得没意义。(arXiv)

  • 拓展:Adam 等自适应方法改变了可推导性,需在下一课深入讨论。(arXiv)


参考与拓展阅读(我在课堂中常提到的几篇关键论文)

  1. Goyal et al., 2017Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour(线性放缩 + warmup 的经典工程论文)。(arXiv)
  2. Smith et al., 2017/2018Don’t Decay the Learning Rate, Increase the Batch Size(增加批大小可替代衰减学习率的经验与分析)。(arXiv)
  3. McCandlish et al., 2018An Empirical Model of Large-Batch Training(提出 gradient noise scale,用来预测最大有用批次)。(arXiv)
  4. Kaplan et al., 2020Scaling Laws for Neural Language Models(更宏观的 scaling law:模型/数据/算力 与性能的幂律关系,供背景知识参考)。(arXiv)
  5. Kingma & Ba, 2014Adam: A Method for Stochastic Optimization(Adam 原始论文,理解自适应优化器的结构很重要)。(arXiv)

下一课预告(系列衔接)

第二课 · Adam 等自适应优化器的缩放难题(要点):

  • 为什么 Adam 的非线性( m t / v t m_t/\sqrt{v_t} mt/vt )让期望难算?
  • 现有理论上的近似与缺陷(什么时候可用?什么时候会误导?)。
  • 实验剖析:在大批量下 Adam 与 SGD 的收敛/泛化差异。
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐