动量法与带阻尼的二阶 ODE:从离散优化到连续动态的奇妙联系
动量法与带阻尼的二阶 ODE:从离散优化到连续动态的奇妙联系
作为深度学习研究者,你一定对动量法(Momentum Method)不陌生。它是梯度下降的“加速版”,通过引入动量项帮助模型更快收敛,尤其在损失函数表面崎岖时表现优异。但你是否知道,动量法背后其实隐藏着一个物理学中的连续动态——带阻尼的二阶 ODE(Ordinary Differential Equation,普通微分方程)?本篇博客将以直观的语言,面向深度学习研究者(而不是数学系同学),介绍动量法如何对应于这种 ODE,帮助你从一个新颖的连续视角理解这个经典优化算法。
动量法:直觉与公式
在深度学习中,动量法是对梯度下降的改进。普通的梯度下降更新规则是:
x
t
+
1
=
x
t
−
η
∇
f
(
x
t
)
x_{t+1} = x_t - \eta \nabla f(x_t)
xt+1=xt−η∇f(xt)
其中 (
η
\eta
η ) 是学习率,(
∇
f
(
x
t
)
\nabla f(x_t)
∇f(xt)) 是梯度。动量法引入了一个“速度”变量 (
v
t
v_t
vt ),让更新不仅依赖当前梯度,还考虑之前的移动方向:
v
t
+
1
=
γ
v
t
−
η
∇
f
(
x
t
)
v_{t+1} = \gamma v_t - \eta \nabla f(x_t)
vt+1=γvt−η∇f(xt)
x
t
+
1
=
x
t
+
v
t
+
1
x_{t+1} = x_t + v_{t+1}
xt+1=xt+vt+1
- ( v t v_t vt ):速度,记录历史梯度的累积方向。
- ( γ \gamma γ ):动量系数(通常接近 1,如 0.9),控制历史信息保留程度。
- ( η \eta η ):学习率,控制梯度影响。
直观来说,动量法就像一个小球在损失函数表面滚动:不仅受当前坡度(梯度)推动,还带着之前的惯性(动量),这让它能越过小坑洼,加速朝全局最优前进。
从离散到连续:动量法的 ODE
动量法的离散更新看起来很简单,但如果我们把它想象成一个连续过程,会发生什么?我们可以把时间步长看作一个小小的 ( Δ t \Delta t Δt),然后推导出它的连续形式——一个二阶 ODE。
离散到连续的转换
假设 (
v
t
v_t
vt ) 是速度,(
x
t
x_t
xt ) 是位置,时间步长为 (
Δ
t
\Delta t
Δt)。动量法的更新可以写为:
v
t
+
1
=
γ
v
t
−
η
∇
f
(
x
t
)
v_{t+1} = \gamma v_t - \eta \nabla f(x_t)
vt+1=γvt−η∇f(xt)
x
t
+
1
=
x
t
+
v
t
+
1
Δ
t
x_{t+1} = x_t + v_{t+1} \Delta t
xt+1=xt+vt+1Δt
(这里我们稍微调整了形式,让速度的更新更符合连续推导,实际实现中可能直接用 (
x
t
+
1
=
x
t
+
v
t
+
1
x_{t+1} = x_t + v_{t+1}
xt+1=xt+vt+1 ),但为了推导 ODE,我们引入 (
Δ
t
\Delta t
Δt) 来模拟微小时间步长。)
计算速度的变化率:
v
t
+
1
−
v
t
Δ
t
=
γ
v
t
−
v
t
−
η
∇
f
(
x
t
)
Δ
t
=
(
γ
−
1
)
v
t
Δ
t
−
η
Δ
t
∇
f
(
x
t
)
\frac{v_{t+1} - v_t}{\Delta t} = \frac{\gamma v_t - v_t - \eta \nabla f(x_t)}{\Delta t} = \frac{(\gamma - 1) v_t}{\Delta t} - \frac{\eta}{\Delta t} \nabla f(x_t)
Δtvt+1−vt=Δtγvt−vt−η∇f(xt)=Δt(γ−1)vt−Δtη∇f(xt)
位置的变化率:
x
t
+
1
−
x
t
Δ
t
=
v
t
+
1
\frac{x_{t+1} - x_t}{\Delta t} = v_{t+1}
Δtxt+1−xt=vt+1
当 (
Δ
t
→
0
\Delta t \to 0
Δt→0) 时:
- 左边变成导数:( x t + 1 − x t Δ t → d x d t \frac{x_{t+1} - x_t}{\Delta t} \to \frac{dx}{dt} Δtxt+1−xt→dtdx),( v t + 1 − v t Δ t → d v d t \frac{v_{t+1} - v_t}{\Delta t} \to \frac{dv}{dt} Δtvt+1−vt→dtdv)。
- 对于 ( γ < 1 \gamma < 1 γ<1),令 ( μ = 1 − γ Δ t \mu = \frac{1 - \gamma}{\Delta t} μ=Δt1−γ),则 (( γ − 1 ) v t = − μ Δ t v t \gamma - 1) v_t = -\mu \Delta t v_t γ−1)vt=−μΔtvt)。当 ( Δ t \Delta t Δt) 很小时,( μ \mu μ) 是一个正的阻尼系数。
- 令学习率 ( η \eta η) 随 ( Δ t \Delta t Δt) 缩放,如 ( η = β Δ t \eta = \beta \Delta t η=βΔt),其中 ( β \beta β) 是常数。
于是:
d
x
d
t
=
v
\frac{dx}{dt} = v
dtdx=v
d
v
d
t
=
−
μ
v
−
β
∇
f
(
x
)
\frac{dv}{dt} = -\mu v - \beta \nabla f(x)
dtdv=−μv−β∇f(x)
二阶 ODE 的形式
注意到 (
v
=
d
x
d
t
v = \frac{dx}{dt}
v=dtdx ),我们可以把速度 (
v
v
v ) 代入第二个方程,得到一个二阶 ODE:
d
d
t
(
d
x
d
t
)
=
−
μ
d
x
d
t
−
β
∇
f
(
x
)
\frac{d}{dt} \left( \frac{dx}{dt} \right) = -\mu \frac{dx}{dt} - \beta \nabla f(x)
dtd(dtdx)=−μdtdx−β∇f(x)
即:
d
2
x
d
t
2
+
μ
d
x
d
t
+
β
∇
f
(
x
)
=
0
\frac{d^2 x}{dt^2} + \mu \frac{dx}{dt} + \beta \nabla f(x) = 0
dt2d2x+μdtdx+β∇f(x)=0
这就是动量法对应的带阻尼二阶 ODE!
物理类比:带阻尼的运动
这个 ODE 看起来很像物理学中的一个经典模型——带阻尼的弹簧系统:
m
d
2
x
d
t
2
+
b
d
x
d
t
+
k
x
=
0
m \frac{d^2 x}{dt^2} + b \frac{dx}{dt} + k x = 0
mdt2d2x+bdtdx+kx=0
- ( m d 2 x d t 2 m \frac{d^2 x}{dt^2} mdt2d2x):加速度(质量 ( m m m ) 乘以二阶导数)。
- ( b d x d t b \frac{dx}{dt} bdtdx ):阻尼力,减缓速度。
- ( k x k x kx ):弹簧恢复力。
在动量法的 ODE 中:
- ( d 2 x d t 2 \frac{d^2 x}{dt^2} dt2d2x ):参数 ( x x x ) 的“加速度”。
- ( μ d x d t \mu \frac{dx}{dt} μdtdx ):阻尼项,( μ = 1 − γ Δ t \mu = \frac{1 - \gamma}{\Delta t} μ=Δt1−γ) 表示动量的衰减。
- ( β ∇ f ( x ) \beta \nabla f(x) β∇f(x) ):类似于“力”,由梯度驱动,推着 ( x x x ) 朝损失函数的最优解移动。
想象一个小球在损失函数表面滚动:梯度像重力拉它向下,阻尼像摩擦力减缓它的速度,最终它会停在最低点。
为什么是二阶 ODE?
- 一阶 vs 二阶:普通梯度下降对应一阶 ODE(( d x d t = − β ∇ f ( x ) \frac{dx}{dt} = -\beta \nabla f(x) dtdx=−β∇f(x))),只考虑位置变化。动量法引入速度 ( v v v ),需要二阶导数来描述加速度,因此是二阶 ODE。
- 动量的作用:二阶项让系统具有“惯性”,能加速通过平坦区域或跳出小坑,与动量法的加速效果一致。
这个 ODE 告诉我们什么?
-
收敛性:
- 当 ( t → ∞ t \to \infty t→∞ ),( d x d t → 0 \frac{dx}{dt} \to 0 dtdx→0),( d 2 x d t 2 → 0 \frac{d^2 x}{dt^2} \to 0 dt2d2x→0),则 ( β ∇ f ( x ) → 0 \beta \nabla f(x) \to 0 β∇f(x)→0),( x x x ) 趋向最优解。
- 阻尼项 ( μ d x d t \mu \frac{dx}{dt} μdtdx ) 确保速度不会无限增长,系统最终稳定。
-
振荡与平滑:
- 如果 ( μ \mu μ) 太小(( γ \gamma γ) 接近 1),系统可能振荡,像弹簧过度摆动。
- 如果 ( μ \mu μ) 适中,运动会平滑收敛,这解释了为何 ( γ = 0.9 \gamma = 0.9 γ=0.9) 常效果良好。
-
与深度学习的联系:
- 动量法的加速本质上是二阶动态的离散近似,连续视角揭示了其物理意义。
与扩散模型的类比
如果你熟悉扩散模型(如 DDPM 或 NCSN),会发现它们也用到了类似的连续动态。NCSN 的退火采样从高噪声到低噪声逐步去噪,类似于从高阻尼到低阻尼的平滑过渡。动量法的 ODE 为理解这些方法的连续本质提供了一个切入点。
总结
动量法的离散更新:
v
t
+
1
=
γ
v
t
−
η
∇
f
(
x
t
)
,
x
t
+
1
=
x
t
+
v
t
+
1
v_{t+1} = \gamma v_t - \eta \nabla f(x_t), \quad x_{t+1} = x_t + v_{t+1}
vt+1=γvt−η∇f(xt),xt+1=xt+vt+1
对应于带阻尼的二阶 ODE:
d
2
x
d
t
2
+
μ
d
x
d
t
+
β
∇
f
(
x
)
=
0
\frac{d^2 x}{dt^2} + \mu \frac{dx}{dt} + \beta \nabla f(x) = 0
dt2d2x+μdtdx+β∇f(x)=0
这个 ODE 将动量法从离散步骤升华为连续的梯度流,揭示了其加速和稳定性的物理根源。对于深度学习研究者来说,这种视角不仅加深了对优化算法的理解,还为探索连续优化方法(如 Neural ODE)打开了大门。
注:本文避免过多数学推导,以直觉和类比为主,适合非数学背景的深度学习研究者。
后记
2025年3月8日19点36分于上海,在Grok 3大模型辅助下完成。