momentum
梯度下降或随机梯度下降都是目标函数在自变量当前位置下降最快的方向,然而,每次迭代都沿着最陡方向并且只考虑当前位置,会使得目标函数很容易陷入局部最小值和鞍点。
可以看到,同一位置上,目标函数在竖直方向( x 2 x_2 x2轴方向)比在水平方向( x 1 x_1 x1轴方向)的斜率的绝对值更大。因此,给定学习率,梯度下降迭代自变量时会使自变量在竖直方向比在水平方向移动幅度更大。那么,我们需要一个较小的学习率从而避免自变量在竖直方向上越过目标函数最优解。然而,这会造成自变量在水平方向上朝最优解移动变慢。
然而当我们将学习率变大,此时自变量在竖直方向不断越过最优解并逐渐发散。
动量法
动量法可以很好的解决梯度下降“鼠目寸光”只关注当前位置的弊端,设时间步 t t t的自变量为 x t \boldsymbol{x}_t xt,学习率为 η t \eta_t ηt,小批量随机梯度 g t \boldsymbol{g}_t gt。在时间步 0 0 0,动量法创建速度变量 v 0 \boldsymbol{v}_0 v0,并将其元素初始化成0。在时间步 t > 0 t>0 t>0,动量法对每次迭代的步骤做如下修改:
v t ← γ v t − 1 + η t g t , x t ← x t − 1 − v t , \begin{aligned} \boldsymbol{v}_t &\leftarrow \gamma \boldsymbol{v}_{t-1} + \eta_t \boldsymbol{g}_t, \\ \boldsymbol{x}_t &\leftarrow \boldsymbol{x}_{t-1} - \boldsymbol{v}_t, \end{aligned} vtxt←γvt−1+ηtgt,←x