概述
它通常比经典动量收敛得更快、更稳定。
深入探讨
经典动量计算当前位置的梯度,然后添加累积速度。 Nesterov 的见解源自 Yurii Nesterov 1983 年关于加速凸优化的工作,即首先将动量步骤带到前瞻点并评估那里的梯度。这让优化器可以预测动力的所在,并在超调之前进行修正,就像跑步者看到前方的曲线并尽早而不是之后进行调整一样。对于平滑凸问题,Nesterov 的方法在步数上实现了 1/k^2 量级的最佳收敛速度,这比普通梯度下降的 1/k 得到了明显的改进。在深度学习中,它在大多数框架中作为一个简单的选项提供,并且在相同系数下通常比标准动量产生更快、更少振荡的训练。
现实世界的实施
在 PyTorch 或 TensorFlow SGD 中启用 Nesterov=True 标志,以实现更快、更流畅的训练。
加速大规模逻辑回归等平滑凸问题的收敛。
在训练接近极小值的深度网络时减少超调和振荡。
为 Nadam 优化器提供支持,为 Adam 添加 Nesterov 前瞻功能。
Nesterov 加速梯度的未来
Nesterov 动量是 PyTorch、TensorFlow 等优化器中的内置标志,Adam (Nadam) 的 Nesterov 变体将前瞻与自适应缩放混合在一起。它的加速理论继续激发对动量方法、重启方案以及加速为何有助于非凸深度网络的分析的研究。对于追求更快、更稳定收敛的从业者来说,预计内斯特罗夫式的前瞻仍将是一种悄然常见的默认设置。
付诸实践
为什么这很重要
- 更清晰的判决. 它可以帮助您将清晰的技术声明与营销语言分开。
- 成本与预算. 在花费金钱或时间之前,您可以提出更好的实施问题。
- 团队与工作流程. 具有共同理解的团队可以做出更好的产品、政策和学习决策。
留意
- 不同的团队可能会以不同的方式使用同一术语,因此请尽早定义范围。
- 基准测试可能看起来很强大,但实际性能却参差不齐。
- 忽视数据质量和评估计划通常会产生脆弱的结果。
后续步骤
- 从您需要的结果的简单语言定义开始。
- 在测试之前选择一种成功指标和一种失败条件。
- 使用代表性数据运行小型试点,而不是完善的演示集。
- 记录 Nesterov 加速梯度在哪些方面有帮助以及在哪些方面更简单的方法更好。
不断探索
常见问题
什么是 Nesterov 加速梯度?
Nesterov 加速梯度 (NAG) 是一种更智能的动量形式,可以在计算梯度之前进行预判,从而对其进行修正。它通常比经典动量收敛得更快、更稳定。
与经典动量相比,内斯特罗夫加速梯度的定义思想是什么?
Nesterov 首先应用动量步骤到达前瞻位置,然后计算那里的梯度,给出预期修正。
Nesterov 的方法在平滑凸问题上可达到多少可证明的收敛速度?
Nesterov 的加速方法为平滑凸目标实现了最佳 1/k^2 速率,比梯度下降的 1/k 更快。
这种加速梯度法最初是谁提出的?
Yurii Nesterov 于 1983 年发表了用于凸优化的加速梯度法。
为什么前瞻梯度有助于接近曲线最小值?
通过评估动量前进的梯度,内斯特罗夫可以比经典动量更早地纠正即将发生的超调。
在实践中,Nesterov 动量的计算成本与经典动量相比如何?
框架实现了重新排列的形式,因此 Nesterov 比普通动量增加了可以忽略不计的额外成本。