第6讲 · 损失景观(下):尖锐度与稳定边缘

斯坦福大学 CS312《深度学习炼金术》(2026 年秋季)官方课堂幻灯片 · 中文重构

原始标题 Loss Landscapes Part 2: Edge of Stability
材料来源 lecture_06.pdf(共 70 页幻灯片)
课程主页 https://deep-learning-alchemy.github.io/
材料版权 课程材料版权归原课程方及授课教师所有,本书仅供学习

对应讲次:第6讲(Stanford CS312 深度学习炼金术)

制作模型:deepseek-flash(vb compose)

开场:课程事务与本讲路线

在进入技术内容之前,讲义先花了一页讲怎么做作业——这一页值得原样保留,因为它说的不是"不要用 AI",而是"怎么用才不浪费一次实验"。

本讲的三条主线(对应讲义第 3 页):

  1. 稳定边缘(Edge of Stability, EoS):锐度在训练过程中如何演化?先看全批量的朴素梯度下降(GD),再逐步加入现代优化器的组件。这条主线紧密跟随 Jeremy Cohen 与 Alex Damian 的教程 https://centralflows.github.io。
  2. 数据受限时,锐度如何影响模型性能?——这会用到「泛化」单元里的概念。
  3. 如何直接优化锐度?

编者说明:本讲反复出现的核心量是锐度(sharpness),即损失函数 Hessian 矩阵的最大特征值 $S=\lambda_{\max}\!\left(\nabla^2 L(w)\right)$。它刻画"损失曲面最陡方向有多陡"。讲义默认读者已经熟悉这个定义(第 5 讲的损失曲面部分已经建立),本讲直接拿它做动力学分析。

二次型的稳定性直觉:$S < 2/\eta$

先把最简单的情形算清楚。假设我们在一个二次损失 $\frac{1}{2}Sx^2$ 上做梯度下降:

老师在二次型上一步步推出 S < 2/η 的稳定条件,这是后面整个 EoS 叙事的出发点

🖼️ 老师在二次型上一步步推出 S < 2/η 的稳定条件,这是后面整个 EoS 叙事的出发点

$$ L(x)=\frac{1}{2}Sx^2,\qquad x_{t+1}=x_t-\eta\,\nabla L(x_t)=x_t-\eta S x_t=(1-\eta S)\,x_t . $$

要让 $x_t$ 收敛而不是爆炸,必须 $|1-\eta S|<1$,也就是

$$ S<\frac{2}{\eta}. $$

否则训练就会发散。这就是"传统二次型直觉"的全部内容:学习率给定了,锐度就有一个硬上限。

推广到多维:在 $L(w)=\frac{1}{2}w^\top H w$ 上做梯度下降,各个特征方向是解耦的,第 $i$ 个特征方向上的坐标按 $(1-\eta\lambda_i)$ 缩放。因此稳定条件等价于 Hessian 的所有特征值都落在 $2/\eta$ 以下:

$$ \lambda_i(H)<\frac{2}{\eta}\quad\text{对所有 } i . $$

只要有一个特征值越界,那个方向就会来回振荡。

编者拓展|把"发散"与"振荡"分开看:$1-\eta S\in(-1,0)$ 时是振荡收敛(每步换号但幅度变小),$1-\eta S<-1$ 时是振荡发散(每步换号且幅度变大)。临界点 $S=2/\eta$ 恰好是 $1-\eta S=-1$,即"幅度不变地来回跳"。后面 EoS 的全部故事都发生在这一条边界上——所以记住这个特殊值:在边界上,参数不会收敛到极小值,而是绕着它来回振荡。

编者说明:讲义在第 5 页顺带提到,"这个对学习率的要求和之前讲过的 NQM 里的条件是一样的"——即前面讲过的某个模型给出的稳定条件与这里同形。幻灯片只留下了缩写,没有在本页展开定义,读者按"同样的 $2/\eta$ 型稳定判据"理解即可(详见文末「已知疑点」)。

深度网络的锐度:发散、振荡与回落

有了上面的心智模型,一个非常自然的推测是:深度网络里的梯度下降也应该遵守同样的稳定性,锐度会始终保持在 $2/\eta$ 以下。

展示 loss 突然冲高、参数绕主特征值振荡的第一手实验曲线

🖼️ 展示 loss 突然冲高、参数绕主特征值振荡的第一手实验曲线

失败案例:把二次型的稳定判据直接搬到深度网络。 这个心智模型会预测:一旦锐度超过 $2/\eta$,训练必然发散。但实验做出来完全不是这样。

紧接着的一页:振荡之后锐度不升反降,这是与二次型直觉分道扬镳的关键一步

🖼️ 紧接着的一页:振荡之后锐度不升反降,这是与二次型直觉分道扬镳的关键一步

这两页是整个 EoS 叙事的转折点。"锐度不升反降"意味着深度网络的损失曲面并不是一个固定的二次型——参数的运动本身会改变曲面的形状,而改变的方向恰好是把锐度压小。

完整训练曲线与 Edge of Stability 的提出

把整段训练画出来(而不是只盯着出问题的那几百步),图像就非常清楚了:

一页给出完整 run 的 loss 与锐度曲线,锐度长期均衡在 2/η,是 EoS 最直接的证据

🖼️ 一页给出完整 run 的 loss 与锐度曲线,锐度长期均衡在 2/η,是 EoS 最直接的证据

换一个学习率再做一次,均衡点会按 $2/\eta$ 相应地移动——这确认了阈值确实由学习率决定,而不是某个与网络结构有关的常数。

flowchart LR
    A["渐进锐化:S 持续上升"] --> B{"S 达到 2/η ?"}
    B -- "还没到" --> A
    B -- "越界" --> C["沿主特征方向振荡<br/>loss 出现尖峰"]
    C --> D["振荡把锐度压回去"]
    D --> A
    style C fill:#ffe0e0
    style D fill:#e0ffe0

于是传统图像需要修正:梯度下降并不是"待在稳定区域内",而是贴着这条边界走。 这就是 稳定边缘(Edge of Stability, EoS):

$$ S \;\approx\; \frac{2}{\eta}\quad\text{(在训练的中后期长期成立)}. $$

注意这里的用词是"贴着走"而不是"被约束在下方":锐度可以短暂越界(此时 loss 冲高),然后被振荡推回来,周而复始。

小批量 SGD、自稳定与多特征值

说明前述现象不是全批量 GD 的伪影,小批量 SGD 同样出现,只是阈值不同

🖼️ 说明前述现象不是全批量 GD 的伪影,小批量 SGD 同样出现,只是阈值不同

二阶泰勒展开把振荡写成二次近似,解释“为什么会在主特征向量上振荡”

🖼️ 二阶泰勒展开把振荡写成二次近似,解释“为什么会在主特征向量上振荡”

三阶项把振荡与锐度的梯度联系起来,是自稳定机制的数学核心

🖼️ 三阶项把振荡与锐度的梯度联系起来,是自稳定机制的数学核心

全批量不是必需的

前面曲线里的 loss 尖峰异常夸张,这是全批量梯度下降造成的(全批量下每一步都是确定性的"撞墙",没有噪声来抹平)。同样的现象在小批量 SGD 上依然存在,只是阈值不同——[Jastrzebski et al., 2018] 已经报告过这一点。作业的 Problem 3 会让大家在典型的小批量 regime 里自己探索 EoS。

自稳定:二阶展开解释"为什么会振荡"

把绕主特征向量的振荡写出来。设 $u$ 是主特征向量方向(单位向量),$x$ 是振荡幅度,则在两步之间参数近似为

$$ w_t \;=\; w + (-1)^t x\,u . $$

在这个权重附近对损失做泰勒展开,只保留一阶与二阶项:

$$ L\big(w+(-1)^t x u\big)\;\approx\; L(w)+(-1)^t x\,\big\langle \nabla L(w),u\big\rangle+\frac{x^{2}}{2}\,u^{\top}\nabla^{2}L(w)\,u . $$

最后一项里的 $u^{\top}\nabla^{2}L(w)\,u$ 就是 $u$ 方向上的曲率(也就是该方向的 Hessian 特征值)。于是这个近似就是一个二次模型:沿着 $u$ 的方向,梯度把我们推向与 $u$ 相反的方向,锐度大时就会来回振荡——这正是上一节的 $S<2/\eta$ 判据在小范围上的翻版。

自稳定:三阶展开才是"魔法"所在

二阶近似只能解释"为什么会振",解释不了"为什么振着振着锐度就降了"。真正的机制藏在三阶项里。

保留到三阶后,把相邻两步($(-1)^t=\pm1$)平均一下,振荡的奇次项相消,剩下一个不振荡的净位移。这个净位移正比于

$$ -\,\frac{1}{2}\,\eta\,x^{2}\;\nabla_w\!\Big(u^{\top}\nabla^{2}L(w)\,u\Big), $$

也就是说:梯度下降隐式地对"$u$ 方向上的锐度"做了一次步长为 $\frac{1}{2}\eta x^{2}$ 的梯度下降。振荡幅度越大,这一步越大;锐度越陡,它被压得越快。

这就是 自稳定(self-stabilization):不需要任何显式的正则项,梯度下降自己就会把锐度往 $2/\eta$ 拉回来。

编者拓展|这一步为什么是"平均"出来的:单看某一步,奇次项($\pm$)并不为零;但参数在两步之间来回摆,真正决定长期轨迹的是两步的平均位移。在平均中,一阶项 $\pm x\langle\nabla L,u\rangle$ 部分抵消,而三阶项的贡献因为与振荡幅度 $x^2$ 同号(平方后符号固定)而保留下来——所以它是"单向"的、持续起作用的。这也解释了为什么自稳定是隐含偏置(implicit bias)而不是显式惩罚:它来自离散化的高阶误差,连续时间极限(梯度流)里根本看不到它(下一节就会看到这一点)。

多个特征值

上面只分析了最大特征值。当 Hessian 有多个较大的特征值时,实验上会看到多个特征值陆续抵达 EoS,并各自在该阈值附近振荡。这暗示 EoS 不是"只有最大特征值特殊"的巧合,而是所有跑到 $2/\eta$ 的方向共同参与的动力学。

从梯度流到中心流

精确的离散动力学很难直接分析,于是自然的想法是:有没有一个连续时间的理论构造,能抓住训练的宏观性质?

用实验曲线指出梯度流在 EoS 之后失效,说明为什么需要新的连续时间模型

🖼️ 用实验曲线指出梯度流在 EoS 之后失效,说明为什么需要新的连续时间模型

最标准的答案是梯度流(gradient flow)——梯度下降的连续时间近似,一个微分方程:

中心流微分方程与“锐度时间导数为零”的约束,是整条推导的关键一步

🖼️ 中心流微分方程与“锐度时间导数为零”的约束,是整条推导的关键一步

$$ \frac{d w}{d t}=-\nabla L(w). $$

失败案例:梯度流在越过 EoS 之后失效。 在锐度还没到达 $2/\eta$ 之前,梯度流确实和实测训练曲线吻合得很好;但一旦进入 EoS 区间,梯度流会继续让锐度增长(它不知道 $2/\eta$ 这条边界的存在,因为它把步长当成了无穷小),而实验里锐度是停在 $2/\eta$ 附近的。这条矛盾说明:EoS 是离散化带来的现象,连续时间极限本质上抓不到它。

中心流:给"时间平均轨迹"建模

中心流(central flow)提出的修正是:不去建模每一步的迭代,而去建模时间平均后的轨迹。

推导的骨架是(讲义称之为"非正式证明草图"):假设时间平均轨迹满足某条微分方程,证明只有一条这样的方程讲得通,再验证它与实验一致。

具体地,当只有一个特征值处在 EoS 上时,可以把每个迭代写成"平均项 + 振荡项":

$$ w_t \;=\; \bar w_t + (-1)^t u_t , $$

对它做泰勒展开,然后"滥用一下记号"(讲义原话)把振荡项消掉,就得到一条形如

$$ \frac{d\bar w}{dt}\;=\;-\,\nabla L(\bar w)\;+\;\alpha(\bar w)\cdot v(\bar w) $$

的微分方程,其中多出来的 $\alpha$ 是一个由振荡决定的、未知的锐度惩罚项。$v$ 就是振荡把平均参数推动的方向。

关键的一步是怎么定出 $\alpha$。 我们已知:进入 EoS 之后,时间平均的锐度不再变化。于是强行要求沿中心流的锐度时间导数为零:

$$ \frac{d}{dt}S\big(\bar w(t)\big)\;=\;\big\langle \nabla S(\bar w),\,\dot{\bar w}\big\rangle\;=\;0 . $$

这是一个关于未知量 $\alpha$ 的方程——一个方程、一个未知数。讲义指出:满足这个性质的 $\alpha$ 只有一个,于是中心流被唯一确定。

flowchart TD
    A["离散迭代 w_{t+1} = w_t − η∇L(w_t)"] --> B["写成 w_t = 平均项 + (−1)^t 振荡项"]
    B --> C["泰勒展开后对两步平均,振荡项相消"]
    C --> D["得到含未知锐度惩罚 α 的微分方程"]
    D --> E["约束:进入 EoS 后 dS̄/dt = 0"]
    E --> F["唯一解出 α → 中心流"]
    F --> G["与实测时间平均轨迹对比"]
    style E fill:#fff3c4
    style F fill:#e0ffe0

编者说明:讲义把中心流的最终闭式写在幻灯片图形里,文字层只保留了"存在唯一解"这一结论。上面给出的 $d\bar w/dt=-\nabla L+\alpha v$ 是推导的结构,不是最终表达式;$\alpha$ 的具体形式请以 https://centralflows.github.io 教程与所引论文为准。

中心流的经验验证与河谷解释

解出 $\alpha$ 之后,就可以拿它做经验预测了。结果是:中心流与实测轨迹吻合得相当好——平均参数怎么走、锐度怎么变,基本都能跟上。

中心流预测与实验曲线几乎重合,是这套理论最有力的验证

🖼️ 中心流预测与实验曲线几乎重合,是这套理论最有力的验证

它还能做两件更细的事:

  1. 推广到多个特征向量,把每个方向的运动分别跟踪;
  2. 跟踪单个预测值的变化(不只是整体的 loss)。

河谷(river valley)解释

前面几讲讲过的河谷心智模型在这里重新派上用场:损失曲面像一条狭长的河谷,横向是陡峭的谷壁(高曲率方向),纵向是平缓的谷底("河流方向")。因为中心流刻画的是时间平均动力学,它直观上对应的正是河谷方向上的运动。

这带来一个有意思的结论:即使不做学习率退火(annealing),训练也在沿着河谷悄悄前进——中心流把这个"隐藏进展"显式地揭示了出来,甚至能预测不退火时的 loss。

河谷里的运动其实有两层,是同时发生的:

  1. 在两面墙之间来回振荡(来自高锐度);
  2. 在竖直方向上移动(来自锐度本身在变化)。

第一层运动来自锐度高,第二层运动来自锐度在振荡中被改变——后者正是自稳定效应的宏观体现。

动量:大批量放大锐度,小批量压低锐度

到此为止我们分析的还是朴素 GD。现代优化器有三个 EoS 尚未覆盖的组件:动量(momentum)、小批量 SGD(minibatch SGD)、自适应优化器(adaptive optimizers)。这一节先处理动量。

给出全批量下梯度累加 g/(1+β)、锐度放大 1+β 倍的推导

🖼️ 给出全批量下梯度累加 g/(1+β)、锐度放大 1+β 倍的推导

动量把历史梯度累加起来:

总结大批量/小批量两个相反 regime,是这一段的结论页

🖼️ 总结大批量/小批量两个相反 regime,是这一段的结论页

$$ v_{t+1}=\beta v_t+g_t,\qquad w_{t}=w_{t-1}-\eta\,v_{t+1}. $$

要讨论锐度,就必须重新推导最大稳定学习率。

大批量:梯度在两面墙之间来回

如果是全批量且在二次型上,梯度会把我们在两面墙之间来回推,于是梯度序列近似交替变号:$g_t\approx g,\; g_{t-1}\approx -g,\; g_{t-2}\approx g,\dots$。累积起来:

$$ g_t+\beta g_{t-1}+\beta^{2}g_{t-2}+\beta^{3}g_{t-3}+\cdots \;\approx\; g-\beta g+\beta^{2}g-\beta^{3}g+\cdots \;=\;\frac{g}{1+\beta}. $$

也就是说,动量把有效梯度缩小了 $1/(1+\beta)$ 倍。等效地,在同一个学习率下,稳定所能容忍的锐度被放大 $1+\beta$ 倍:

$$ S_{\text{稳定上限}}\;\approx\;(1+\beta)\cdot\frac{2}{\eta}. $$

小批量:梯度近似独立,方差累积

小批量情形完全不同。回想河谷模型:小批量 regime 是被噪声主导的,各步的梯度方向近似独立。这时不能做上面的交错相消,而要看方差的累积:

$$ \operatorname{Var}(g)=\operatorname{Var}\!\big(g_t+\beta g_{t-1}+\beta^{2}g_{t-2}+\cdots\big) \approx \operatorname{Var}(g_t)+\operatorname{Var}(\beta g_{t-1})+\operatorname{Var}(\beta^{2}g_{t-2})+\cdots =\frac{\operatorname{Var}(g)}{1-\beta}. $$

(讲义里写的是这个式子。)噪声被放大,于是在随机 EoS 的意义上,动量反而降低锐度。

于是结论是:动量有两个 regime——

regime 梯度结构 动量的作用
大批量(全批量) 梯度在墙间交替,相干累积 $\dfrac{g}{1+\beta}$ 增大稳定锐度阈值($\times(1+\beta)$)
小批量(噪声主导) 各步近似独立,方差累积 $\dfrac{\operatorname{Var}(g)}{1-\beta}$ 降低稳定时的锐度

讲义指向 Andreyev et al., 2026 关于动量的分析,以及 Song et al., 2026 关于"带零阶优化噪声的 EoS"的分析。

编者拓展|两个式子在算什么:大批量那个式子是对梯度的线性叠加(相干求和,符号交错所以得到几何级数),小批量那个式子是对方差的叠加(独立随机变量方差可加)。二者的结论方向相反,根本原因是"梯度之间是相干还是不相干"——这正是河谷模型里"陡壁方向"与"噪声方向"的区分在动量上的投影。

已知疑点提示:若把 $g_t,g_{t-1},\dots$ 真当作独立同分布,$\sum_k\beta^{2k}\operatorname{Var}(g)=\operatorname{Var}(g)/(1-\beta^2)$ 而不是 $/(1-\beta)$。讲义写的是 $1/(1-\beta)$,本处按讲义原文照录,差异见文末「已知疑点」。

Scalar RMSProp:有效锐度与两条自稳定通道

最后要把分析推广到 SGD 之外。起点选一个最简单的自适应优化器:Scalar RMSProp——它是 Adam 去掉动量、去掉逐参数自适应之后的版本(整个网络共享一个标量 $\nu_t$)。

定义有效锐度 ηS/√ν_t 并给出它应稳定在 2 的判据

🖼️ 定义有效锐度 ηS/√ν_t 并给出它应稳定在 2 的判据

它的更新是

把 RMSProp 的自稳定拆成“降锐度”与“涨 ν_t”两条通道,解释自适应优化器为何稳定

🖼️ 把 RMSProp 的自稳定拆成“降锐度”与“涨 ν_t”两条通道,解释自适应优化器为何稳定

$$ \nu_t=\beta_2\nu_{t-1}+(1-\beta_2)\,\lVert g_t\rVert^{2},\qquad w_{t+1}=w_t-\frac{\eta}{\sqrt{\nu_t}}\,g_t . $$

关键视角的转换:这里的步长不该看成 $\eta$,而该看成 $\eta/\sqrt{\nu_t}$。于是振荡条件变成

$$ S>\frac{2\sqrt{\nu_t}}{\eta}, $$

这自然引出一个新的量——有效锐度(effective sharpness):

$$ S_{\text{eff}}\;=\;\frac{\eta S}{\sqrt{\nu_t}}, $$

它应该在训练中稳定在 2 附近。

实验证实:有效锐度确实表现出 EoS 行为,稳定在 2 附近。

两条自稳定通道

Scalar RMSProp 的有效锐度能自稳定,有两个原因:

  1. 和梯度下降一样:振荡本身会自动降低锐度 $S$(上一节的三阶项机制)。
  2. RMSProp 独有的:振荡会增大梯度范数,导致 $\nu_t$ 增长,从而通过分母(而不是分子)把有效锐度 $\eta S/\sqrt{\nu_t}$ 压低。

$\beta_2$ 的作用也随之清楚:$\beta_2$ 越大,$\nu_t$ 更新越慢,自稳定发生得越慢,有效锐度的下降就更多依赖"锐度真的被压下来"这条通道,而不是靠 $\nu_t$ 的上涨。长期来看,高 $\beta_2$ 会导致更低的锐度与更低的 $\nu_t$,但二者的组合给出相同的有效锐度。

Scalar RMSProp 的中心流

和梯度流一样,我们也可以写出 Scalar RMSProp 的"稳定流";和 GD 一样,可以重复中心流的推导(时间平均梯度 → 近似梯度范数 → 最终预测)。同样地,只有一个方差更新计划(variance schedule)能满足约束,而它的经验预测非常好。

训练过程中可以观察到:

也就是说,Scalar RMSProp 在不显式计算锐度的前提下,自动把有效步长平衡在 $2/S$ 上——这是"RMSProp 能自适应损失曲面"的一个精确说法。

消融:锐度正则是额外的好处

如果我们人为构造一个去掉锐度正则项的流,就能把两个效应分开:

所以自适应的好处不只是"调节步长",还有"每振荡一次就顺手把锐度压一点"。学习率越大,振荡越剧烈,锐度被压得越多。

一个常见困惑:自适应优化器里学习率还有什么意义?

常见疑问是:既然学习率会被 $\sqrt{\nu_t}$ 重新缩放(在 EoS 上有效步长还被钉死在 $2/S$),那调 $\eta$ 还有什么用?

答案是:更大的学习率带来更强的锐度正则,从而把有效步长推得更大。所以"调大学习率确实增大了步长",只是这条因果链相当间接。

RMSProp 的稳态预条件子在优化什么

把 Scalar RMSProp 推广到真正的 RMSProp:维护逐坐标的梯度平方指数滑动平均。这等价于去掉动量的 Adam,也等价于用

把 RMSProp 的稳态预条件子写成一个凸规划,后面才能解释它到底在优化什么

🖼️ 把 RMSProp 的稳态预条件子写成一个凸规划,后面才能解释它到底在优化什么

$$ \operatorname{diag}\!\left(\frac{\sqrt{\nu_t}}{\eta}\right) $$

做对角预条件(diagonal preconditioning)。

这里值得强调一句:人们常有一种直觉,觉得 Adam/RMSProp 的作用类似于牛顿法;但要注意它们是纯一阶方法——只用了梯度,没有用二阶信息。

实验上,RMSProp 的 loss 曲线很平滑,但各个坐标本身振荡得相当厉害。既然我们在分析预条件后的梯度下降,最方便的看法是考察有效 Hessian:

$$ P^{-1}H=\operatorname{diag}\!\left(\frac{\eta}{\sqrt{\nu_t}}\right)H, $$

看它的特征值是否超过 2——于是又回到了熟悉的 EoS。

(对 RMSProp 也能为所有特征值推出形式相似的中心流,可惜它没有简单的闭式解,讲义跳过了这段推导;预测效果如预期。)

稳态预条件子等价于一个凸规划

那么 RMSProp 的预条件子究竟在算什么?考虑稳态(stationary)预条件子,它可以写成一个凸优化问题:

$$ \min_{P\ \succ\ 0,\ P\ \text{对角}}\ \operatorname{tr}(P) \qquad\text{s.t.}\qquad P\ \succeq\ \tfrac{1}{2}H . $$

怎么读这个式子:

两个对照:

编者拓展|为什么 $P=H/2$ 是最优解:在全体对称正定矩阵上最小化 $\operatorname{tr}(P)$ 且要求 $P\succeq H/2$,最小的迹显然在 $P=H/2$ 处取到(任何更小的 $P$ 都会破坏约束,任何更大的 $P$ 都会让迹变大)。所以"去掉对角约束"确实精确地退化成 Hessian 预条件——这就是讲义那句"只优化第一项等价于用 Hessian 做预条件"的代数依据。对角约束把解限制在对角矩阵上,代价就是无法完全对齐 Hessian 的特征方向,只能"逐坐标各让一步"。

编者说明:讲义把凸规划的具体目标函数放在幻灯片图形里,文字层只保留了"约束保证稳定、$\operatorname{tr}(P)$ 放大步长、去掉对角约束退化为 Hessian 预条件"这三句解读。上面的写法是据此重构的。

EoS 与中心流的失效边界

这套唯象学(phenomenology)并不是万能的。讲义明确列出,在下列情形下它总体上不太可靠:

一页列出 EoS/中心流不适用的情形,提示读者这套理论的边界

🖼️ 一页列出 EoS/中心流不适用的情形,提示读者这套理论的边界

此外还有一个更根本的空白:为什么会发生渐进锐化(progressive sharpening),目前基本不清楚。 也就是说,"锐度在训练前期持续上升"这一现象的成因仍是开放的。

作业会让大家自己动手:分析锐度与有效锐度作为学习率、批大小、动量等超参数的函数,最终稳定在哪里。讲义给的建议顺序是:先把 EoS/中心流的预测理清楚,再跑实验,看模型在哪些地方预测对了、哪些地方预测错了。

锐度与泛化:相关性到底有多强

到这里为止,我们关心锐度的理由是"降低锐度可以放大有效步长,从而加速训练"。但还有另一个问题:锐度对泛化有影响吗?

给出各泛化度量的相关性排名表,锐度 0.516 排第一,是“锐度有用”这一说法的主要依据

🖼️ 给出各泛化度量的相关性排名表,锐度 0.516 排第一,是“锐度有用”这一说法的主要依据

先换个设定。本讲之前我们一直在"数据无限、步数固定"的语境下讨论模型性能;但如果约束来自样本数量而不是步数,情况就变了:此时训练损失与验证损失并不相关。我们可以通过"背下样本"非常激进地把训练损失压到很低,但真正关心的是验证集上的损失。

用构造性例子说明全局极小可以极尖锐,且锐度不具有参数化不变性

🖼️ 用构造性例子说明全局极小可以极尖锐,且锐度不具有参数化不变性

民间直觉与"神奇泛化"

有一个流传很久的直觉:更平坦的极小值泛化更好([Hochreiter and Schmidhuber, 1997];[Dziugaite and Roy, 2017])。

Jiang et al., 2019 在 2187 个模型的扫描上系统比较了各种泛化度量与模型性能的相关性。总体结论是:大多数度量的相关性很差,而锐度是一个有希望的候选。讲义给出的排名表(相关系数)是:

泛化度量 相关系数
$1/\alpha'$ sharpness mag 0.516
sum-of-fro / margin 0.381
pacbayes-orig 0.360
path-norm / margin 0.305
grad-noise-final 0.292
fro / spec 0.243
cross-entropy 0.147
# params −0.15

锐度 0.516 排第一——这就是"锐度有用"这一说法的主要依据。

后续的反驳

但后续研究发现,这个相关性其实相当弱,而且经常是负的([Andriushchenko et al., 2023])。更严重的是,可以构造出全局极小值极其尖锐、但泛化很好的例子([Dinh et al., 2017])。

失败案例:锐度不是参数化不变的。 这是锐度作为泛化度量最根本的缺陷之一:它的数值依赖于你怎么参数化网络。同一个函数,换一套参数化,锐度就变了,但泛化性能一点没变。

编者拓展|参数化不变性缺失的一个最小例子:考虑把某一层的权重做线性重参数化 $w=c\,w'$($c>0$,网络表达的函数完全相同)。由于 Hessian 关于 $w$ 是二阶量,在新坐标下有 $H'=c^{2}H$,于是锐度被乘以 $c^{2}$。函数没变、泛化没变,锐度却随 $c$ 任意缩放。想让锐度成为有意义的度量,必须先固定一种参数化(或者做某种归一化),这也是后续文献里各种"锐度定义修正"的出发点。

SAM:直接优化锐度

假设我们相信锐度既影响训练速度、又影响泛化,那么一个自然的问题就是:能不能直接优化它?

讲清 SAM 的操作化定义——在权重的有界对抗扰动下最小化 loss

🖼️ 讲清 SAM 的操作化定义——在权重的有界对抗扰动下最小化 loss

已知的"间接旋钮"有几个:高学习率、小批量——它们都会通过 EoS 机制压低锐度。而 Foret et al., 2020 提出了锐度感知最小化(Sharpness-Aware Minimization, SAM),直接针对锐度做优化。

说明 SAM 优化的锐度依赖批大小 m,批大小为 1 时退化为平均情况锐度

🖼️ 说明 SAM 优化的锐度依赖批大小 m,批大小为 1 时退化为平均情况锐度

核心直觉与操作化

核心直觉是:不要去找"loss 低的那个点",而要去找"周围一整片区域 loss 都低"的极小值。

操作化为:在权重附近做一次有界的对抗扰动,然后在这个扰动下最小化损失:

$$ \min_{w}\ \max_{\lVert \epsilon\rVert\le \rho}\ L(w+\epsilon). $$

实践中,内层的对抗者(adversary)用一次梯度来估计:

$$ \hat\epsilon=\rho\,\frac{\nabla L(w)}{\lVert \nabla L(w)\rVert}. $$

经验表现与批大小依赖

编者说明:"SAM 究竟在优化什么"是本讲反复出现的主题——原论文的 $\rho$ 邻域、批大小为 1 时的平均情况锐度、以及对角预条件子下的"有效锐度",是三个不同的对象。读后续文献时要注意区分。

应用:锐度感知预训练

一个有用的应用直觉是:更平坦的极小值提供更好的微调初始化。因此,追求更平坦的极小值(用 SAM,或者干脆用更高的学习率)可以得到更适合微调的预训练初始化——讲义引用 "Sharpness-Aware Pretraining Mitigates Catastrophic Forgetting" 作为例证。

编者拓展|这条链路为什么说得通:微调会改变损失曲面,如果初始点位于一个宽阔平坦的盆地里,那么微调带来的扰动不容易把参数推出盆地——这正是"缓解灾难性遗忘"的直观解释。注意这是心智模型层面的论证,讲义并没有给出定量的界。

总结:锐度作为心智模型

讲义最后还放了几条研究生对锐度的"真情告白"——有人被它"拐走"两年,有人说"锐度是 ML 里唯一有趣的问题",也有人说"我很高兴在读博前就意识到它不是泛化的答案"。这段话恰好概括了这一讲的态度:锐度是一个极好的心智模型,但不是一个已经解决的答案。

附:参考与延伸阅读

(本书材料里没有外部链接;正文中的链接均为撰写时补充。)

已知疑点

  1. "NQM" 缩写未定义。 讲义第 5 页说"回想一下,我们在 NQM with hi 里对学习率有同样的条件",但幻灯片从未展开 NQM 指的是哪个模型。本讲按"与二次型同形的 $2/\eta$ 稳定判据"理解,具体所指需回看前序讲次。
  2. 动量的方差累积公式与标准代数不符。 讲义第 32 页写 $\operatorname{Var}(g_t+\beta g_{t-1}+\beta^2g_{t-2}+\cdots)=\operatorname{Var}(g)/(1-\beta)$。若各步梯度独立同分布,正确结果是 $\sum_k \beta^{2k}\operatorname{Var}(g)=\operatorname{Var}(g)/(1-\beta^{2})$。差异可能是讲义笔误,也可能它统计的是标准差量级而非方差。本处照录讲义原文,定性结论(小批量下动量降低稳定锐度)不受影响。
  3. 动量"锐度放大 $1+\beta$ 倍"的方向。 讲义第 31 页原文是 "for the same learning rate, sharpness increases by a factor of $1+\beta$"。本书按"可稳定的锐度阈值被放大 $1+\beta$ 倍"来解释(因为有效梯度被缩小了 $1/(1+\beta)$)。严格的最大稳定学习率还需对动量递推做完整的稳定性分析,讲义未给出闭式。
  4. 中心流与 Scalar RMSProp 中心流的最终表达式缺失。 幻灯片第 20–22、41–42 页把关键公式放在图形里,文字层只剩"存在唯一解"的结论。本书给出的是推导结构($d\bar w/dt=-\nabla L+\alpha v$ 与约束 $dS/dt=0$),不是最终闭式,请以 https://centralflows.github.io 与所引论文为准。
  5. RMSProp 凸规划的目标函数与"第二项"的所指。 讲义第 51–54 页把凸规划写在图形里,文字层只说"约束保证稳定、$\operatorname{tr}(P)$ 放大步长、去掉对角约束退化为 Hessian 预条件",并在第 54 页说"第二项的存在是为了直接拖慢训练"。本书把"第二项"理解为对角约束(即 $P$ 必须为对角矩阵),并给出 $P=H/2$ 为无约束最优解的论证;若原目标函数另含显式惩罚项,则该解读需要修正。
  6. 自稳定三阶展开的具体系数。 讲义第 15 页给出"有效步长 $\frac{1}{2}\eta x^{2}$",但把展开式画在图中。本书写出的净位移 $-\frac12\eta x^2\nabla_w(u^\top\nabla^2Lu)$ 是按该描述与所引论文(Self-Stabilization: The Implicit Bias of Gradient Descent at the Edge of Stability)的记法重构的,未逐项核对原论文。
  7. 文献年份。 讲义引用的 Andreyev et al., 2026 与 Song et al., 2026 是课程材料中的写法(课程本身为 2026 年),本书照录,未做外部核实。
  8. 幻灯片第 69 页的四条"锐度告白"是匿名引语,讲义未标注出处;本书只作氛围性转述,不作为任何论据。
  9. 本讲未发现其他明显疑点;讲义中所有数字(相关系数表、批大小 2187 个模型、放大因子 $1+\beta$、有效锐度稳定值 2)均照录自幻灯片原文。