当前位置: 首页 > article >正文

动量法与带阻尼的二阶 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+1vt=Δtγvtvtη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+1xt=vt+1
当 ( Δ t → 0 \Delta t \to 0 Δt0) 时:

  • 左边变成导数:( x t + 1 − x t Δ t → d x d t \frac{x_{t+1} - x_t}{\Delta t} \to \frac{dx}{dt} Δtxt+1xtdtdx),( v t + 1 − v t Δ t → d v d t \frac{v_{t+1} - v_t}{\Delta t} \to \frac{dv}{dt} Δtvt+1vtdtdv)。
  • 对于 ( γ < 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 告诉我们什么?
  1. 收敛性

    • 当 ( t → ∞ t \to \infty t ),( d x d t → 0 \frac{dx}{dt} \to 0 dtdx0),( d 2 x d t 2 → 0 \frac{d^2 x}{dt^2} \to 0 dt2d2x0),则 ( β ∇ f ( x ) → 0 \beta \nabla f(x) \to 0 βf(x)0),( x x x ) 趋向最优解。
    • 阻尼项 ( μ d x d t \mu \frac{dx}{dt} μdtdx ) 确保速度不会无限增长,系统最终稳定。
  2. 振荡与平滑

    • 如果 ( μ \mu μ) 太小(( γ \gamma γ) 接近 1),系统可能振荡,像弹簧过度摆动。
    • 如果 ( μ \mu μ) 适中,运动会平滑收敛,这解释了为何 ( γ = 0.9 \gamma = 0.9 γ=0.9) 常效果良好。
  3. 与深度学习的联系

    • 动量法的加速本质上是二阶动态的离散近似,连续视角揭示了其物理意义。
与扩散模型的类比

如果你熟悉扩散模型(如 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大模型辅助下完成。


http://www.kler.cn/a/577853.html

相关文章:

  • 力扣热题 100:二叉树专题进阶题解析(后7道)
  • C++从入门到精通系列教程之第十篇:异常处理与调试技巧
  • 车载以太网测试-3【Wireshark介绍】
  • LINUX网络基础 [五] - HTTP协议
  • LeetCode 热题 100_字符串解码(71_394_中等_C++)(栈)
  • 腾讯云短信
  • 【Python机器学习】1.8. 逻辑回归实战(基础):建立一阶边界模型、画分类散点图、逻辑回归模型的代码实现、可视化决策边界
  • PHP之特性
  • Ae 效果详解:VR 降噪
  • LeetCode 538.把二叉搜索树转换为累加树
  • Java直通车系列13【Spring MVC】(Spring MVC常用注解)
  • 【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建
  • java后端开发day27--常用API(二)正则表达式爬虫
  • 李宏毅机器学习课程笔记05 | 卷积神经网络Convolutional Neural Network(CNN)
  • 目标追踪综述
  • 8. 机器人模型训练与评估(具身智能机器人套件)
  • selenium库工作原理
  • Three.js 进阶(uv映射的应用)
  • tauri-plugin-shell插件将_blank的a标签用浏览器打开了,,,解决办法
  • 搜广推校招面经四十