momentum
梯度下降或随机梯度下降都是目标函数在自变量当前位置下降最快的方向,然而,每次迭代都沿着最陡方向并且只考虑当前位置,会使得目标函数很容易陷入局部最小值和鞍点。

可以看到,同一位置上,目标函数在竖直方向(x2轴方向)比在水平方向(x1轴方向)的斜率的绝对值更大。因此,给定学习率,梯度下降迭代自变量时会使自变量在竖直方向比在水平方向移动幅度更大。那么,我们需要一个较小的学习率从而避免自变量在竖直方向上越过目标函数最优解。然而,这会造成自变量在水平方向上朝最优解移动变慢。

然而当我们将学习率变大,此时自变量在竖直方向不断越过最优解并逐渐发散。
动量法
动量法可以很好的解决梯度下降“鼠目寸光”只关注当前位置的弊端,设时间步t的自变量为xt,学习率为ηt,小批量随机梯度gt。在时间步0,动量法创建速度变量v0,并将其元素初始化成0。在时间步t>0,动量法对每次迭代的步骤做如下修改:
vtxt←γvt−1+ηtgt,←xt−1−vt,
其中,动量超参数γ满足0≤γ<1。当γ=0时,动量法等价于小批量随机梯度下降。

可以看到使用较小的学习率η=0.4和动量超参数γ=0.5时,动量法在竖直方向上的移动更加平滑,且在水平方向上更快逼近最优解。下面使用较大的学习率η=0.6,此时自变量也不再发散。

指数加权移动平均
给定超参数0≤γ<1,当前时间步t的变量yt是上一时间步t−1的变量yt−1和当前时间步另一变量xt的线性组合:
yt=γyt−1+(1−γ)xt.
我们可以对yt展开:
yt=(1−γ)xt+γyt−1=(1−γ)xt+(1−γ)⋅γxt−1+γ2yt−2=(1−γ)xt+(1−γ)⋅γxt−1+(1−γ)⋅γ2xt−2+γ3yt−3…
例如,当γ=0.95时,
yt≈0.05i=0∑190.95ixt−i.
在实际中,我们常常将yt看作是对最近1/(1−γ)个时间步的xt值的加权平均。由0.9520≈exp(−1),得到当γ=0.95时,yt可以被看作对最近20个时间步的xt值的加权平均;当γ=0.9时,yt可以看作是对最近10个时间步的xt值的加权平均。而且,离当前时间步t越近的xt值获得的权重越大(越接近1)。
由指数加权移动平均理解动量法
我们对动量法的速度变量做变形:
vt←γvt−1+(1−γ)(1−γηtgt).
相比于小批量随机梯度下降,动量法在每个时间步的自变量更新量近似于将最近1/(1−γ)个时间步的普通更新量(即学习率乘以梯度)做了指数加权移动平均后再除以1−γ。所以,在动量法中,自变量在各个方向上的移动幅度不仅取决当前梯度,还取决于过去的各个梯度在各个方向上是否一致。
看完这系列,就可吟诗一首
梯度下降可沉甸,随机降低方差难。
引入动量别弯慢,Adagrad梯方贪。
Adadelta学率换,RMSProp梯方权。
Adam动量RMS伴,优化还需己调参。
注释
梯方:梯度按元素平方
贪:因贪婪故而不断累加
学率:学习率