技术笔记 | 从动力学视角理解一个反直觉事实:学习率太小不只是慢,还会弱化离散优化自带的隐式梯度正则。可复用工具是 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,使得这串点刚好是它的精确解?
也就是说,不把离散化误差看成“坏掉的部分”,而是把它解释成“优化目标 / 动力学被悄悄改写了”。
这是一个很可复用的分析模板:
- 先写出理想连续动力学 。
- 再写出实际离散更新 。
- 假设离散点来自 modified ODE:
- 用 Taylor / operator expansion 反推 。
- 如果 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 项形式一致。
但工程上有两个问题:
- 计算 需要二阶信息,至少要 Hessian-vector product,成本比普通反传高。
- 它不一定完全替代真实离散优化的全部效应,因为上面只保留了一阶项;高阶项、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:
- 写清楚原始目标 和连续 ideal dynamics。
- 写清楚实际 update rule。
- 选小参数做展开:学习率、噪声强度、温度、mask rate 等。
- 保留低阶项,不要一开始就追求 exact。
- 看额外项是否能写成某个 regularizer 的梯度。
- 标注适用边界:smoothness、小步长、full-batch / mini-batch、参数化依赖。
10. 边界与批判
-
只是一阶近似。 公式里的 是低阶项;学习率大时高阶项不能忽略,甚至直接不稳定。
-
主要对应 full-batch GD。 SGD 还有 mini-batch 噪声,batch size 本身也是一种 implicit regularization。IGR 和 SGD noise 是不同机制,不能混成一句“大学习率有噪声所以泛化好”。
-
adaptive optimizer 不能直接套系数。 Adam / RMSProp 改变了参数空间的度量,相当于引入 preconditioner;modified loss / modified dynamics 需要重推。
-
flatness claim 要克制。 “有限学习率偏向小梯度 / 平缓区域”有推导支撑;“平缓区域一定泛化好”不是纯数学结论,而是经验相关 + 额外假设。
-
梯度惩罚不等于 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
- 苏剑林,《从动力学角度看优化算法(五):为什么学习率不宜过小?》,Scientific Spaces,2020-10-10。
- Implicit Gradient Regularization,ICLR 2021;arXiv version last revised 2022-07-18。