损失函数有关自变量的梯度代表了损失函数在自变量当前位置下降最快的方向。因此,梯度下降也叫作最陡下降。在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新自变量,然而,如果自变量的迭代方向仅仅取决于自变量当前位置,可能会带来一些问题。
例如:损失函数为 f ( x ) = 0.1 x 1 2 + 2 x 2 2 f(x)=0.1x_1^2 + 2x_2^2 f(x)=0.1x12+2x22
该函数在 x 1 , x 2 x_1,x_2 x1,x2的斜率相差较大,如果给定学习率,梯度下降迭代自变量时,会使自变量在 x 2 x_2 x2比在 x 1 x_1 x1的移动幅度更大,可能会越过最优解;如果降低学习率,会造成在 x 1 x_1 x1方向上朝最优解移动缓慢,收敛速度变慢。
动量法
动量法的提出就是为了解决上述问题。
设损失函数在时间步t的小批量随机梯度为 g t g_t gt,时间步 t t t的自变量为 x t x_t xt,学习率为 η t \eta_t ηt。在时间步0,动量法创建速度变量 v 0 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 v_t\leftarrow \gamma v_{t-1} + \eta_tg_t \\ x_t\leftarrow x_{t-1} - v_t vt←γvt−1+ηtgt