概述
它是深度学习中使用最广泛的训练技巧之一。
深入探讨
普通随机梯度下降 (SGD) 通过与当前小批量梯度相反的方向步进来更新参数。在形状像狭长峡谷的风景中,这条河蜿蜒穿过陡峭的墙壁,同时沿着平缓的地板爬行。由 Polyak 和后来的 Rumelhart 及其同事推广的动量通过维持速度矢量来解决这个问题:每一步将新的梯度与先前速度的一小部分(动量系数,通常为 0.9)混合。一致的梯度方向会增强和加速,而振荡分量会部分抵消。物理上的类比是一个滚下坡的重球:它会在稳定的方向上增加速度,并且较少因嘈杂的颠簸而偏转,从而比普通 SGD 提供更快、更平滑的收敛。
现实世界的实施
训练像 ResNet 这样的深度卷积网络,其中动量为 0.9 的 SGD 是标准配方。
使用小批量时平滑噪声梯度估计。
通过携带速度穿过平坦区域来逃离浅层局部高原。
用作自适应优化器(例如 Adam 和 RMSprop 变体)中的动量项。
动量随机梯度下降的未来
动量仍然是基础:像 Adam 及其变体这样的自适应优化器嵌入了动量式一阶矩估计,而带有动量的 SGD 仍然是一个强大的基线,通常比大型视觉模型上的自适应方法具有更好的泛化能力。关于动量调度、解耦权重衰减及其与超大规模训练的相互作用的研究仍在继续。随着优化器针对更大的模型不断发展,预计动力仍将是核心组成部分。
付诸实践
为什么这很重要
- 更清晰的判决. 它可以帮助您将清晰的技术声明与营销语言分开。
- 成本与预算. 在花费金钱或时间之前,您可以提出更好的实施问题。
- 团队与工作流程. 具有共同理解的团队可以做出更好的产品、政策和学习决策。
留意
- 不同的团队可能会以不同的方式使用同一术语,因此请尽早定义范围。
- 基准测试可能看起来很强大,但实际性能却参差不齐。
- 忽视数据质量和评估计划通常会产生脆弱的结果。
后续步骤
- 从您需要的结果的简单语言定义开始。
- 在测试之前选择一种成功指标和一种失败条件。
- 使用代表性数据运行小型试点,而不是完善的演示集。
- 记录动量随机梯度下降在哪些方面有帮助以及在哪些方面更简单的方法更好。
不断探索
常见问题
什么是动量随机梯度下降?
动量是梯度下降的一种调整,它累积过去梯度的运行平均值,让优化更快地穿过山谷并抑制振荡。它是深度学习中使用最广泛的训练技巧之一。
训练过程中动量项积累了什么?
Momentum 维护一个速度向量,该向量是最近梯度的指数加权移动平均值,从而平滑更新方向。
在又长又窄的峡谷中,普通 SGD 会遇到什么问题而动量可以帮助解决?
如果没有动量,SGD 就会在峡谷的陡峭方向上振荡。动量抵消了这些振荡并沿着平缓的谷底加速。
哪种物理类比最常用于描述动量?
动量被比作一个重球,它可以在一致的方向上增加速度,并抵抗噪音碰撞带来的偏转。
当 beta = 0.9 时,动量将沿一致方向的有效步骤放大大约多少?
放大系数约为 1/(1 - beta),并且 1/(1 - 0.9) = 10,因此一致的方向速度大约加快十倍。
哪种现代优化器包含动量式一阶矩估计?
Adam 将梯度的类似动量的一阶矩(均值)估计与二阶矩(方差)估计相结合以实现自适应缩放。