技术笔记 | 从动力学视角理解一个反直觉事实:学习率太小不只是慢,还会弱化离散优化自带的隐式梯度正则。可复用工具是 backward error analysis:把离散算法反推成某个连续 ODE 的精确解。| 2026-07

本文是对苏剑林《从动力学角度看优化算法(五):为什么学习率不宜过小?》的个人学习改写与公式展开。原文讨论的论文是 Implicit Gradient Regularization (IGR, ICLR 2021)。

结论先行

如果把连续梯度流看成理想优化过程:

那么普通 GD 的离散更新

并不只是对上面 ODE 的粗糙近似。换一个角度看:这些离散点可以被看成某个 modified ODE 的精确轨迹。保留到学习率 的一阶项,这个 modified ODE 等价于在优化一个 modified loss:

直觉上,有限学习率自动给 loss 加了一个“梯度不要太大”的惩罚。 越大,这个惩罚越强; 时,这个隐式正则消失。

这给“学习率不宜过小”一个不同于“训练太慢”的解释:即使不考虑算力和时间,过小学习率也可能失去一部分有益的 implicit regularization。

1. 问题:为什么不是越小越稳?

“学习率太大容易发散”很直觉:步子太大,越过低谷甚至震荡爆炸。

但“学习率太小”通常只被理解成训练慢。这个解释不够深,因为它默认:如果算力无限,小学习率最后也能到同样好的地方。IGR 这条线的判断是:有限步长本身改变了优化偏好。它不是单纯的数值误差,而是一种 implicit bias。

更具体地说,GD 的离散性让优化轨迹倾向避开梯度很大的区域。梯度很大的区域通常意味着 loss 对参数扰动敏感;在局部二阶近似下,这和 sharp basin / 高曲率方向联系很紧。因此,有限学习率会偏向更平缓的区域。

需要提前标注边界:这不是“学习率越大越好”。下面推导只保留小 的低阶项;当 大到破坏稳定性时,发散问题先出现。

2. 连续视角:梯度反方向为什么是最快下降方向?

设参数是时间的函数 ,loss 也是沿轨迹变化的函数:

对时间求导,用链式法则:

这里有两个向量:

  • :当前位置 loss 增长最快的方向。
  • :优化轨迹下一瞬间要往哪里走。

内积可以写成“长度 × 长度 × 夹角余弦”:

如果固定移动速度 ,想让 loss 降得最快,就是让这个导数尽可能负。最小的 ,也就是 方向完全相反。

所以,一个自然的连续优化动力学是:

其中

这个 ODE 叫 gradient flow。普通 GD 可以看成对它做 Euler 离散化:

这里的 是连续时间, 是时间步长;第 次迭代对应

3. 反过来问“它精确优化了什么?”

通常我们会这样想:

连续 ODE 是真实对象,离散 GD 是近似,所以有误差。

backward error analysis 反过来问:

既然离散 GD 产生了一串点,是否存在另一个 ODE,使得这串点刚好是它的精确解?

也就是说,不把离散化误差看成“坏掉的部分”,而是把它解释成“优化目标 / 动力学被悄悄改写了”。

这是一个很可复用的分析模板:

  1. 先写出理想连续动力学
  2. 再写出实际离散更新
  3. 假设离散点来自 modified ODE:
  1. 用 Taylor / operator expansion 反推
  2. 如果 modified vector field 仍然是某个函数的负梯度,就把它解释成 modified loss。

这篇的结论就来自第 5 步:普通 GD 一阶近似下等价于优化

4. 公式推导:从差分方程到 modified ODE

4.1 用 Taylor 展开一步之后的参数

我们想把 以及它对时间的导数表示出来。Taylor 展开:

为了写得紧凑,把“对 求导”这个操作记成

那么上面的 Taylor 展开可以写成:

括号里的级数正是指数函数

这一步的 sense 是:往后走 时间,相当于把“时间平移算子”作用到当前函数上 不是玄学,只是 Taylor series 的压缩写法。

4.2 把 GD 写成算符形式

GD 更新是:

代入

我们想得到 ,所以两边乘上:

得到:

看成一个整体,令 。经典展开是:

所以:

保留到 的一阶项:

也就是:

4.3 展开 :为什么会出现 Hessian?

这里会直接使用「gradient 的 Jacobian 就是 Hessian」。如果这个 shape 关系还不熟,先看 Jacobian、Hessian 与 SVD

的意思是: 沿着轨迹随时间怎么变。

用链式法则:

。于是:

右边又出现了 。因为我们只保留到一阶,可以先用零阶近似:

代回去:

丢掉二阶小量:

现在用 。这时 就是 Hessian

4.4 把 Hessian 项改写成梯度惩罚

关键恒等式:

如果不熟这个式子,可以按分量展开。令 ,那么:

对第 个参数求偏导:

写成矩阵形式就是:

时,,而 Hessian 对称,所以:

因此:

代回 modified ODE:

也就是:

所以,一阶近似下,离散 GD 像是在优化:

这就是“有限学习率带来隐式梯度正则”的来源。

5. 为什么 会偏向 flat region?

这个正则不是 weight decay。它不直接惩罚参数大小,而是惩罚“当前位置 loss 对参数变化有多敏感”。

看局部二阶近似。假设 是一个局部极小点,附近取一个小扰动

因为极小点附近 ,所以一阶展开:

于是梯度惩罚项变成:

如果 Hessian 的某个方向特征值很大,沿那个方向稍微偏一点,梯度就会迅速变大,惩罚项也变大。这就是 sharp basin 的 sense:不是只看极小点本身,而是看它周围 loss 增长得有多快。

所以 的直觉是:

  • 它惩罚轨迹经过大梯度区域。
  • 它让“周围一动就梯度很大”的解变得不划算。
  • 它会偏向更宽、更平缓的 basin。

但要小心一个边界:flatness 本身不是一个完全坐标无关的概念,重参数化会改变 sharpness 的数值。因此这里最好把 claim 限制为:在给定参数化与一阶 modified loss 近似下,有限学习率引入了对梯度范数的惩罚;这与偏向 flat basin 的经验现象一致。不要把它过度说成“已经证明 flat minima 因果导致泛化好”。

6. 一个 1D sanity check

用最简单的一维二次函数检查系数:

梯度是:

GD 更新:

如果它来自某个连续 ODE:

那么走过一个时间步 后:

要和 GD 匹配,就需要:

两边取 log:

很小时,使用

也就是说,GD 的 modified ODE 是:

再看 modified loss:

求导:

完全匹配上面的 modified ODE。

这个例子给的 intuition 很清楚:曲率 越大,有限学习率带来的额外项 越明显。高曲率方向被更强地“看见”了。

7. 为什么这对调 learning rate 有启发?

传统解释:

大学习率快,小学习率慢。

IGR 视角补了一层:

大一点的学习率会更强地惩罚大梯度轨迹;小到接近连续 gradient flow 时,这个正则弱化。

这能解释一种常见训练经验:前期较大学习率不只是为了快,还可能帮助模型避开 sharp / sensitive 区域;后期 anneal 到小学习率,则是为了让模型在已经找到的 basin 里收敛得更精细。

也就是说,learning rate schedule 可以被理解成一种“正则强度 schedule”:

前期 大:探索 + 强 implicit regularization。 后期 小:稳定收敛 + 减少离散化扰动。

这也解释了为什么“直接用极小学习率从头训”不一定只是低效,而是可能改变最终偏好的解。

8. 显式加这个正则可以吗?

理论上可以。直接优化:

就是显式梯度惩罚。若令 ,它和一阶 IGR 项形式一致。

但工程上有两个问题:

  1. 计算 需要二阶信息,至少要 Hessian-vector product,成本比普通反传高。
  2. 它不一定完全替代真实离散优化的全部效应,因为上面只保留了一阶项;高阶项、SGD 噪声、batch size、momentum、adaptive preconditioner 都会改写 modified dynamics。

所以这更像一个解释工具:它告诉我们 learning rate 本身已经在做某种正则,并不是建议所有训练都显式加二阶惩罚。

9. 可复用的 modeling pattern

这篇最值得复用的不是某个具体系数,而是分析范式:

当一个算法是离散过程时,不只问它近似了哪个连续过程,也反过来问:它精确对应哪个被修改过的连续过程?

可以迁移到很多问题:

  • 优化器:momentum / Adam / weight decay 到底改写了什么动力学?
  • 学习率 schedule:不同阶段的 implicit regularizer 强弱如何变化?
  • batch size:离散梯度 + 采样噪声能否写成 modified SDE?
  • post-training:某些看似经验性的技巧是否等价于在优化某个隐式目标?

一个实用 checklist:

  1. 写清楚原始目标 和连续 ideal dynamics。
  2. 写清楚实际 update rule。
  3. 选小参数做展开:学习率、噪声强度、温度、mask rate 等。
  4. 保留低阶项,不要一开始就追求 exact。
  5. 看额外项是否能写成某个 regularizer 的梯度。
  6. 标注适用边界:smoothness、小步长、full-batch / mini-batch、参数化依赖。

10. 边界与批判

  1. 只是一阶近似。 公式里的 是低阶项;学习率大时高阶项不能忽略,甚至直接不稳定。

  2. 主要对应 full-batch GD。 SGD 还有 mini-batch 噪声,batch size 本身也是一种 implicit regularization。IGR 和 SGD noise 是不同机制,不能混成一句“大学习率有噪声所以泛化好”。

  3. adaptive optimizer 不能直接套系数。 Adam / RMSProp 改变了参数空间的度量,相当于引入 preconditioner;modified loss / modified dynamics 需要重推。

  4. flatness claim 要克制。 “有限学习率偏向小梯度 / 平缓区域”有推导支撑;“平缓区域一定泛化好”不是纯数学结论,而是经验相关 + 额外假设。

  5. 梯度惩罚不等于 Hessian 惩罚。 它惩罚的是 ,不是直接惩罚 。只是靠近极小点时,梯度如何随扰动增长由 Hessian 控制,所以二者产生联系。

与其他概念的关系

  • 权重空间几何:IGR 是“优化过程为什么可能偏向 wide basin”的一个动力学解释,但不能单独证明 flat minima 的泛化因果性。
  • learning rate schedule:可以把 当成 implicit gradient regularization 的强度旋钮。warmup / cosine decay / late-stage annealing 都可以从这个角度重新解释。
  • explicit regularization:weight decay 惩罚参数范数,IGR 惩罚 loss gradient 范数;二者作用对象不同。
  • backward error analysis:这是一种把“数值离散误差”转成“隐式目标变化”的方法论,以后看优化器和训练 trick 时可以重复使用。

Sources