Momentum Gradient Descent(动量梯度下降)是标准梯度下降(SGD)的一个重要改进版,旨在加速训练过程,并帮助模型更有效地找到最优解。
你可以将动量(Momentum)想象成物理学中的惯性。
动量梯度下降(Momentum GD)的核心思想
标准 SGD 的问题:
标准的 SGD(随机梯度下降)在每次更新时都只看当前的梯度方向。这使得它在以下两种地形中表现不佳:
- “峡谷”地形: 在损失函数曲面狭长陡峭的区域(像一个深谷),梯度会在两侧剧烈震荡,更新方向不稳定,导致收敛缓慢。
- 平坦区域: 遇到梯度接近零的区域时,更新会停滞不前,难以逃脱局部最优解。
动量的解决方案:
动量方法引入了一个速度变量(或历史积累值),它不只考虑当前的梯度,还会记住之前所有步骤的平均移动方向。
- 当前梯度就像你给球施加的瞬时推力。
- 动量就像球积累的速度和惯性。
动量法的更新规则
动量法将权重的更新分为两步:
-
计算速度($v$): 当前的速度是之前速度和当前梯度的加权平均。
$$v_t = \beta \cdot v_{t-1} + (1-\beta) \cdot \nabla J(\theta_t) \quad \rightarrow \text{简化后常用:} v_t = \beta \cdot v_{t-1} + \eta \cdot \nabla J(\theta_t)$$- $\beta$(动量系数):一个介于 0 到 1 之间的超参数(通常是 0.9),控制了历史梯度的影响程度。
- $v_{t-1}$:上一步积累的速度。
- $\nabla J(\theta_t)$:当前计算的梯度。
-
更新权重($\theta$): 使用计算出的速度来更新权重。
$$\theta_{t+1} = \theta_t - v_t$$
动量法的优势
- 加速收敛(在一致方向): 如果许多连续的梯度方向都指向同一个方向(例如,在一个平缓的斜坡上),动量会积累速度,使得模型可以大步前进,加速收敛。
- 抑制震荡(在不一致方向): 在陡峭的“峡谷”地形中,垂直于峡谷方向的梯度会来回震荡,但这些震荡方向上的动量会被相互抵消。而沿着峡谷底部(即最优方向)的梯度方向会持续积累,从而抑制震荡,使模型更稳定地沿着最优路径前进。
- 跳出局部最优: 动量带来的惯性可以帮助模型冲过梯度很小(接近平坦)的区域,跳出浅层的局部最优,去寻找更深的全局最优。