Momentum(动量法)

就是给梯度加了个惯性——下坡的时候不会因为一点小颠簸就猛刹车,而是顺着大势继续跑,收敛更快、抖动更少。

亦作、亦称:动量法 · momentum SGD · Nesterov momentum · SGD with Momentum · Gradient Momentum · Gradient Descent with Momentum · 重球法 · 动量梯度下降

动量法通过积累历史梯度方向、赋予参数更新「惯性」,显著加快深度模型训练收敛速度并抑制梯度噪声震荡。它是 SGD 到 Adam 之间最关键的过渡性优化思想,至今仍是各类优化器的核心组件。

概述

动量法(Momentum)是梯度优化的核心改进之一,广泛用于深度学习模型训练。

  • 核心思想:将历史梯度以指数加权方式累积为「动量」,参数更新时同时考虑当前梯度与过去方向
  • 物理比喻:如同重球在碗形曲面滚动,具有惯性,不会因单次小扰动改变大方向
  • 标准形式:v_t = β·v_{t-1} + (1-β)·∇L,θ = θ - α·v_t
  • 超参数:动量系数 β(通常 0.9)和学习率 α 是两个主要调节旋钮
  • 适用范围:几乎所有基于梯度的模型训练,尤其适合高曲率、高噪声场景

工作原理

动量法通过指数移动平均对梯度历史进行加权平滑,形成稳定的更新方向。

  • 梯度平滑:v_t 是过去所有梯度的指数加权平均,β 越大历史权重越重(衰减越慢)
  • 方向稳定:在梯度一致的维度上,动量不断积累,步长等效放大;在震荡维度上,正负相消,步长收缩
  • 学习率缩放:有效步长约为 α/(1-β),β=0.9 时约等于 10 倍学习率效果
  • 噪声抑制:mini-batch 的随机梯度噪声被历史动量稀释,轨迹更平滑
  • 鞍点逃逸:惯性使优化器能「冲过」平坦的鞍点区域,而非在此停滞

主要变体

动量法有两个最重要的变体,在理论保证和实践效果上各有特点。

  • 标准动量(Heavy Ball / Classical Momentum):Polyak 1964,直接用当前位置梯度更新动量,实现简单
  • Nesterov 加速梯度(NAG):先沿当前动量方向走一步,再计算「未来位置」梯度,理论收敛速度从 O(1/k) 提升至 O(1/k²)
  • Adam 内置动量:Adam 的一阶矩 m_t = β₁·m_{t-1} + (1-β₁)·∇L 本质上是带偏差修正的动量项,β₁ 默认 0.9
  • 带动量的 AdamW:在 Adam 动量基础上加入权重衰减解耦,为 Transformer 训练主流选择
  • SAM + Momentum:Sharpness-Aware Minimization 与动量结合,寻找更平坦的泛化极小值

应用场景

动量法在深度学习各领域均有核心应用,是工程实践的标准配置。

  • 计算机视觉:ResNet、ViT 等大型 CV 模型训练时,SGD + Momentum(β=0.9)是获得 SOTA 泛化性能的常用组合
  • 自然语言处理:预训练 LLM 通常使用 AdamW(内置动量),β₁=0.9 为标准配置
  • 强化学习:策略梯度方法中,动量帮助稳定高方差的策略更新
  • 对比学习:MoCo 等方法中,动量编码器(Momentum Encoder)以极慢速度更新 key 编码器,维持特征一致性
  • 学习率 Warmup 配合:大批量训练时,动量与线性 warmup 结合可避免训练初期不稳定

与相邻概念区别

动量法常与 Adam、RMSProp 等自适应优化器混淆,核心区别在于是否适应每维度学习率。

  • vs 普通 SGD:SGD 每步只用当前梯度,动量法引入历史方向,收敛更快、轨迹更稳
  • vs Adam:Adam = 动量(一阶矩)+ 自适应学习率(二阶矩),动量法本身不调整各参数维度的学习率
  • vs RMSProp:RMSProp 只用二阶矩做自适应缩放,不积累一阶方向动量
  • vs Nesterov:标准动量在当前位置算梯度;NAG 先「跳」到预估的下一步位置再算梯度,更具前瞻性
  • vs 动量编码器(Momentum Encoder):MoCo 中的「动量」指以小系数 EMA 缓慢更新网络权重,与优化动量概念不同,注意区分

局限与误区

动量法并非无副作用,在某些场景下需谨慎调参。

  • 超调风险:β 过大时,惯性导致优化器在最优点附近反复「冲过头」,引发震荡甚至发散
  • 局部最优陷阱:惯性虽助于逃出浅层鞍点,但在凸性较强的局部极小值附近可能过冲
  • 超参敏感:β 与学习率 α 存在耦合,调整其中一个往往需同步调另一个
  • 误解「动量越大越好」:β=0.999 极端情况下几乎只沿历史方向走,对数据分布变化响应极慢
  • 非平稳场景:在线学习或数据分布漂移时,过大动量会让模型「忘不掉」旧分布的梯度方向

发展脉络

动量法的演化跨越六十年,从数值分析到现代深度学习均留下重要足迹。

  • 1964 年:Polyak 发表「重球法」,提出动量思想,证明可将收敛步数减少至 √R 倍(R 为条件数)
  • 1983 年:Nesterov 提出加速梯度法(NAG),理论收敛率达 O(1/k²),优于标准动量的 O(1/k)
  • 1986 年:Rumelhart、Hinton、Williams 在反向传播论文中将动量引入神经网络训练
  • 2013 年:Sutskever 等人发表 ICML 论文,系统研究动量初始化与超参在深度学习中的影响,确立 β=0.9 实践标准
  • 2015-2017 年:Adam(β₁=0.9)成为深度学习默认优化器,动量内置于一阶矩
  • 2020 年后:AdamW、LAMB、LARS 等新一代优化器均以动量为基础组件,持续推动大模型训练边界

常见误解

日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。

  • 「就是给梯度加了个惯性——下坡的时候不会因为一点小颠簸就猛刹车,而是顺着大势继续跑,收敛更快、抖动更少。」
  • 「动量法相当于给优化器装了个『记忆』,记住之前走的方向,不会被单次噪声梯度带跑偏。」
  • 「常见误解:动量系数 β 越大越好——实际上 β 过大会让模型在最优点附近一直『冲过头』,反而难以收敛。」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

延伸阅读

从知识库精选 3 篇文章,帮助深入理解该术语。

  1. 1

    优化器:SGD, Momentum, Adam, AdamW

    从梯度下降到 AdamW,系统梳理深度学习优化器演进与选择策略

  2. 2

    梯度下降算法全解:从 SGD 到 Adam 的优化之路

    系统掌握从最基础的梯度下降到高阶自适应优化算法的完整演进路径,理解每种优化器的数学原理、适用场景与现代深度学习中的最佳实践

  3. 3

    自监督视觉学习:MAE, DINO, MoCo

    无需标注数据的视觉预训练,掌握自监督学习的最新进展

外部参考

维基百科:查看「Momentum」词条

本页内容为本站原创撰写;维基百科链接仅作延伸参考。