原理
动量梯度下降(Momentum Gradient Descent) 是一种优化算法,通过引入动量项来加速梯度下降过程。其核心思想是:
- 在更新参数时,不仅考虑当前梯度,还累积历史梯度的加权平均。
- 类似于物理中的动量,使参数更新方向在惯性方向上更稳定,减少震荡。

梯度更新
- 动量项计算:
引入动量变量 ,表示历史梯度的指数加权平均: 其中 是动量系数(通常取 0.9), 是当前梯度。
- 参数更新:
使用动量项替代原始梯度进行更新: 其中 是学习率。
示例
假设目标函数是,初始坐标,学习率,动量系数,下表列出8个时间步的梯度更新结果:
| 时间步 | SGD梯度 (x,y) | Momentum梯度 (v_x,v_y) |
|---|---|---|
| 0 | (-8.0000, 90.0000) | (-8.0000, 90.0000) |
| 1 | (-6.4000, -90.0000) | (-11.2000, -18.0000) |
| 2 | (-5.1200, 90.0000) | (-10.0800, 43.2000) |
| 3 | (-4.0960, -90.0000) | (-7.4368, -30.5280) |
| 4 | (-3.2768, 90.0000) | (-4.8748, 34.3872) |
| 5 | (-2.6214, -90.0000) | (-2.9999, -25.2557) |
| 6 | (-2.0972, 90.0000) | (-1.7000, 28.4034) |
| 7 | (-1.6777, -90.0000) | (-0.9200, -19.9620) |
| 可以看出SGD以缓慢且震荡的方式向原点接近,而Momentum则快速且平滑。一开始Momentum的梯度较小是因为我们设定的初始动量为0。 |
优点
-
加速收敛:在梯度方向一致的维度上累积动量,加快收敛速度。
-
减少震荡:通过动量平滑梯度方向,减少参数更新的震荡。
-
逃离局部极小值:动量可能帮助跳出局部极小值或鞍点。
缺点
-
超参数敏感:需手动调整 和学习率 。
-
过冲风险:动量过大可能导致参数更新越过最优解,产生震荡。

- 非自适应:对所有参数使用相同的学习率,可能不如自适应优化算法(如 Adam)灵活。