梯度下降优化算法
这些优化器旨在解决标准梯度下降在实际应用中遇到的挑战,例如学习率难以选择、收敛速度慢、容易陷入局部最优解以及鞍点(Saddle Points)问题。
以下是几种最著名且广泛使用的梯度下降优化算法变体:
1. 动量算法(Momentum)
动量算法引入了一个“速度”概念,旨在加速相关方向的收敛,并抑制震荡。
- 核心思想: 它不仅考虑当前位置的梯度,还累积过去梯度的指数加权平均值。就像一个球从山上滚下来,它会获得动量,即使遇到小颠簸也能继续前进。
- 工作原理与公式

-
优点
- 加速收敛:在大多数情况下,动量算法能比标准 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. 梯度下降
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算法
浙公网安备 33010602011771号