深度学习---动量法

感情迁移 提交于 2019-12-26 20:06:15

损失函数有关自变量的梯度代表了损失函数在自变量当前位置下降最快的方向。因此,梯度下降也叫作最陡下降。在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新自变量,然而,如果自变量的迭代方向仅仅取决于自变量当前位置,可能会带来一些问题。

例如:损失函数为f(x)=0.1x12+2x22f(x)=0.1x_1^2 + 2x_2^2
该函数在x1,x2x_1,x_2的斜率相差较大,如果给定学习率,梯度下降迭代自变量时,会使自变量在x2x_2比在x1x_1的移动幅度更大,可能会越过最优解;如果降低学习率,会造成在x1x_1方向上朝最优解移动缓慢,收敛速度变慢。

动量法

动量法的提出就是为了解决上述问题。
设损失函数在时间步t的小批量随机梯度为gtg_t,时间步tt的自变量为xtx_t,学习率为ηt\eta_t。在时间步0,动量法创建速度变量v0v_0,并将其初始化为0。在时间t>0t>0,动量法对每次迭代的步骤做如下修改:
vtγvt1+ηtgtxtxt1vtv_t\leftarrow \gamma v_{t-1} + \eta_tg_t \\ x_t\leftarrow x_{t-1} - v_t
其中动量超参数γ\gamma满足0<γ<10<\gamma<1。且当γ=0\gamma=0时,动量法等价于小批量随机梯度下降。

动量法原理解释

(1)指数加权移动平均
给定超参数0γ<10\leq\gamma<1,当前时间步tt的变量yty_t是上一时间步t1t-1的变量yt1y_{t-1}和当前时间步另一变量xtx_t的线性组合:
yt=γyt1+(1γ)xty_t=\gamma y_{t-1}+(1-\gamma)x_t
yty_t展开是:
yt=(1γ)xt+γyt1=(1γ)xt+(1γ)γxt1+γ2yt2=(1γ)xt+(1γ)γxt1+(1γ)γ2xt2+γ3yt3y_t=(1-\gamma)x_t + \gamma y_{t-1}\\ =(1-\gamma)x_t + (1-\gamma)\gamma x_{t-1}+\gamma^2y_{t-2}\\=(1-\gamma)x_t+(1-\gamma)\gamma x_{t-1}+(1-\gamma)\gamma^2 x_{t-2}+\gamma^3 y_{t-3}
n=1/(1γ)n=1/(1-\gamma),那么(11/n)n=γ1/(1γ)(1-1/n)^n=\gamma^{1/(1-\gamma)}
因为limn(11n)n=exp(1)0.3679\lim_{n \to \infty} (1- \frac 1n)^n=exp(-1) \approx0.3679
所以当γ1\gamma\rightarrow1时,γ1/(1γ)=exp(1)\gamma^{1/(1-\gamma)}=exp(-1),如0.9520exp(1)0.95^{20} \approx exp(-1)。如果把exp(1)exp(-1)当作一个比较小的数,可以在近似中忽略所有含γ1/(1γ)\gamma^{1/(1-\gamma)}和比γ1/(1γ)\gamma^{1/(1-\gamma)}更高阶的系数的项。
例如,当γ=0.95\gamma=0.95时,yt0.05i=0190.95ixtiy_t \approx0.05\sum_{i=0}^{19}{0.95^ix_{t-i}}
实际上,常常将yty_t看作是对最近1/(1γ)1/(1-\gamma)个时间步的xtx_t值加权平均。
(2)由指数加权移动平均理解动量法
对动量法的速度变量做变性
vtγvt1+(1γ)(ηt1γgt)v_t\leftarrow \gamma v_{t-1}+(1-\gamma)(\frac {\eta_t}{1-\gamma}g_t)
由指数加权移动平均的形式可得,速度变量vtv_t实际上对序列{ηtigti/(1γ):i=0,...,1/(1γ)1}\{\eta_{t-i}g_{t-i}/(1-\gamma):i=0,...,1/(1-\gamma)-1\}做了指数加权移动平均。
相对于小批量随机梯度下降,动量法在每个时间步的自变量更新量近似于将前者对应的最近1/(1γ)1/(1-\gamma)个时间步的更新量做了指数加权移动平均后再除以(1γ)(1-\gamma)。所以在动量法中,自变量在各个方向上的移动幅度不仅取决于当前梯度,还取决于过去的各个梯度在各个方向上是否一致。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!