梯度下降优化算法

这些优化器旨在解决标准梯度下降在实际应用中遇到的挑战,例如学习率难以选择、收敛速度慢、容易陷入局部最优解以及鞍点(Saddle Points)问题。
以下是几种最著名且广泛使用的梯度下降优化算法变体:

1. 动量算法(Momentum)

动量算法引入了一个“速度”概念,旨在加速相关方向的收敛,并抑制震荡。
  • 核心思想: 它不仅考虑当前位置的梯度,还累积过去梯度的指数加权平均值。就像一个球从山上滚下来,它会获得动量,即使遇到小颠簸也能继续前进。
  • 工作原理与公式

image

  • 优点
    • 加速收敛:在大多数情况下,动量算法能比标准 SGD 更快地收敛到最优解。
    • 抑制震荡:在目标函数曲面狭窄(例如某些方向梯度大,另一些方向梯度小)时,动量有助于平滑更新路径,减少不必要的震荡。
    • 跳出局部最优:累积的动量有时能帮助优化过程跳过小的局部最优解或鞍点,找到更好的全局最优解。

2. Nestorov 加速梯度(Nesterov Accelerated Gradient, NAG)

NAG 是对动量算法的改进,它在计算梯度时更具前瞻性。
  • 核心思想: 它不计算当前位置的梯度,而是计算“向前看”一步(即考虑动量方向)的位置的梯度。这使得算法能够更智能地“刹车”,避免冲过最小值。
  • 优点: 通常比标准动量算法收敛更快。

3. 自适应学习率算法

这些算法的核心是动态调整每个参数的学习率,使得频繁更新的参数学习率降低,而很少更新的参数学习率升高。
1) Adagrad (Adaptive subgradient method)
  • 核心思想: 根据参数的历史平方梯度和来自适应地调整学习率。对稀疏数据特别有效。
  • 缺点: 随着训练的进行,累积的平方梯度和会变得非常大,导致学习率无限接近于零,使得模型过早停止学习。
2) 均方根反向传播 RMSProp(Root Mean Square Propagation)
  • 核心思想: 针对 Adagrad 的缺点进行改进,引入了指数加权移动平均(EWMA)来代替简单的累积和,从而“忘记”遥远过去的梯度信息。
  • 优点: 解决了学习率急剧下降的问题,在处理非平稳目标时表现良好。
3) Adadelta
  • 核心思想: 也是对 Adagrad 的改进,它完全取消了手动设置全局学习率𝜂的需要,通过使用参数更新的平方根的 EWMA 来自适应地调整学习率。

4). Adam (Adaptive Moment Estimation)

Adam 是目前最流行、最常用的优化算法之一,几乎是深度学习领域的首选。
  • 核心思想: 它结合了 Momentum(一阶矩估计,梯度的均值)和 RMSprop(二阶矩估计,梯度的非中心化方差)的优点,并且包含了偏差校正机制。
  • 优点: 高效、内存占用少、适用于大多数非凸优化问题、对超参数的选择(如学习率)相对不敏感。
  • 广泛应用: 它是许多深度学习框架(如 TensorFlow、PyTorch)中的默认优化器。

5). Adamax, Nadam

这些是 Adam 的进一步变体:
  • Adamax: 结合了 Adam 和无穷范数(𝐿∞范数)的概念,在某些情况下(尤其是处理 NLP 任务时)表现优于 Adam。
  • Nadam (Nesterov-accelerated Adaptive Moment Estimation): 将 Nesterov 动量集成到 Adam 中,通常效果与 Adam 相似或略好。
以上梯度优化算法属于一阶优化算法 (First-order Optimization),通常根据它们利用的目标函数信息量来粗略划分的。
一阶优化算法总结
选择合适的优化算法至关重要。虽然标准的 SGD 及其动量变体依然有效,但在大多数现代深度学习任务中,Adam 是一个很好的起点,因为它通常能提供快速且稳定的收敛。

4. 附录

二阶优化算法(Second-order Optimization)
对于二阶优化算法,这里也简单描述一下,了解即可,为啥不详述了呢?个人觉得学海无涯,当然主要原因参考文末。如有疑问,欢迎留言交流,共同进步。
二阶优化算法不仅利用一阶导数(梯度),还利用目标函数的二阶导数(海森矩阵 Hessian Matrix)的信息。海森矩阵描述了梯度的变化率,即函数的曲率信息。
特点:
  • 收敛速度快:理论上,如果能准确计算和使用二阶信息,二阶方法通常能以更少的迭代次数收敛到最优解。
  • 信息量大:利用曲率信息可以更精确地找到最优解的方向和步长,避免了一阶方法中手动调整学习率的麻烦。
  • 计算成本极高:海森矩阵的大小是参数数量的平方(𝑁×𝑁)。在深度学习中,参数量𝑁通常非常巨大(数百万到数十亿),导致海森矩阵无法存储,更难以计算和求逆。 
常见算法:
  • 牛顿法 (Newton's Method):最基础的二阶算法。它直接使用海森矩阵的逆来计算最优步长。
  • 拟牛顿法 (Quasi-Newton Methods):为了解决牛顿法计算海森矩阵成本高的问题,拟牛顿法使用一阶梯度信息来估计(近似)海森矩阵或其逆矩阵。
    • BFGS (Broyden–Fletcher–Goldfarb–Shanno)
    • L-BFGS (Limited-memory BFGS):在内存受限的情况下更适用。
 在现代深度学习实践中,一阶优化算法(尤其是 Adam 及其变体)是绝对的主流,因为它们在计算效率和实际性能之间取得了最佳平衡。

参考资料:

1. 梯度下降 

2.吴恩达深度学习课程

3. Duchi, J., Hazan, E., & Singer, Y. (2011). Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 12(Jul), 2121-2159.

4. Zeiler, M. D. (2012). ADADELTA: an adaptive learning rate method. arXiv preprint arXiv:1212.5701.

5.Tieleman, T., & Hinton, G. (2012). Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude. COURSERA: Neural networks for machine learning, 4(2), 26-31.

6. Kingma, D. P., & Ba, J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980.

7. AdaGrad算法

 

posted @ 2025-11-17 16:03  PKICA  阅读(8)  评论(0)    收藏  举报