momentum
是优化算法中的一个超参数,主要用于改善梯度下降的收敛性能,特别是在处理非凸优化问题时。它在随机梯度下降(Stochastic Gradient Descent, SGD)和其变种中经常被使用。
以下是动量的主要作用和原理:
-
加速收敛: 动量的引入旨在加速模型训练的收敛过程。它模拟了物体在运动过程中的动量,帮助模型在梯度更新时更快地前进。
-
克服局部极小值: 动量有助于克服梯度下降中可能遇到的局部极小值。由于动量的存在,即使在梯度变小的区域,模型也有一定的“惯性”,可以越过这些局部最小值。
-
减小震荡: 动量有助于减小参数更新时的震荡,特别是在曲线陡峭或弯曲的情况下。它可以在梯度变化较大的方向上积累速度,从而减小参数在这些方向上的更新幅度。
动量的计算方式通常是使用一个指数衰减的移动平均,具体公式如下:
v
t
=
β
⋅
v
t
−
1
+
(
1
−
β
)
⋅
g
t
\ v_t = \beta \cdot v_{t-1} + (1 - \beta) \cdot g_t \
vt=β⋅vt−1+(1−β)⋅gt
在实际梯度更新时,动量被加到梯度上,以影响参数的更新:
θ t + 1 = θ t − α ⋅ v t \ \theta_{t+1} = \theta_t - \alpha \cdot v_t \ θt+1=θt−α⋅vt