您的位置:首页 > 运维架构

深度学习之momentum,RMSprop,Adam优化算法

2017-11-25 09:25 776 查看
momentum算法:

除了batch/mini-batch/stochastic gradient descent 梯度下降法,还有一种算法叫做momentum梯度下降法,运行速度几乎总是快于标准的地图下降法,简而言之,基本的思想就是计算梯度的指数加权平均数,并利用该梯度更新权重 ,以下是batch/mini-batch gradient descent以及momentum梯度下降法走势图。



蓝线表示batch梯度下降法 ,红线是momentum梯度下降法

我们会发现梯度下降法需要很多计算步骤,慢慢摆动到最小值,这种上下波动减慢了梯度下降法的速度,导致我们无法使用更大的学习率,结果可能会偏离函数的范围,为了避免摆动过大,我们需要使用较小的学习率,另一个看待问题的角度是在纵轴上,我们希望慢一点,但是在横轴上,我们希望快一点,所以使用momentum梯度下降法,我们需要做的是,在每次迭代中,确切的说是在第t次迭代中,我么要计算微分dw,db,注意是利用现有的mini-batch计算dw,db,如果使用batch梯度下降法,则现在的mini-batch就是全部的batch,对于batch梯度下降法的效果是一样的。momentum的算法流程如下:

momentum

on iteration t:

compute dw,db on current mini-batch

V_dw=β∗V_dw+(1−β)∗dw

V_db=β∗V_db+(1−β)∗db

20000
w=w−αVdw

b=b−αVdb

在这里β相当于摩擦力,db,dw相当于加速度,这样就可以减缓梯度下降的幅度,如果平均这些梯度,就会发现这些纵轴上的摆动,平均值接近于零。因此用算法几次迭代之后,发现momentum梯度下降法,最终以纵轴方向摆动小了,横轴方向运动更快,因此算法走了一条更加直接的路径。

在上述算法中,有两个超参数,学习率α以及参数β,在这里β控制着指数加权平均数,β最常用的值是0.9。

RMSprop算法:

上面讲到momentum可以加快学习算法,还有一个叫做RMSprop算法,全称是(root mean square prop)算法,他也可以加速梯度下降,算法流程如下:

on iteration t:

compute dw,db on current mini-batch

Sdw=βSdw+{1−β}dw2

Sdb=βSdb+{1−β}db2

w=w−αdwSdw+ε−−−−−−−√

b=b−αdbSdb+ε−−−−−−√

这里需要说明的是,上面平方的操作是针对整个符号的,这样做能够保留微分平方的加权平均数。

我们来理解一下其原理,记得在w方向,我们希望学习速度快,而在垂直方向我们希望减小在纵轴上的摆动,所以有了Sdw和Sdb,我们希望Sdw相对较小,Sdb相对较大,所以我们要除以较大的数,从而减缓纵轴上的变化,在这里,另一个影响是可以用一个更大的学习率,然后加快学习,从而无须担心其在纵轴上的偏离。注意,这里选择加上ε,是为了防止分母为0,其实ε对算法的真正意义不大,我们一般将ε设置为10−8.

Adam算法:

RMSprop以及Adam优化算法是少有的经受住考验的两种算法,他们已被证明适用于不同的深度学习结构。

Adam优化算法基本上就是将momentum和RMSprop结合在一起,我们来看看Adam算法的流程。使用Adam算法首先需要初始化

vdw=0,Sdw=0,Vdb=0,Sdb=0

on iteration t:

compute dw,db, using current mini-batch

V_dw=β1∗V_dw+(1−β1)∗dw

V_db=β1∗V_db+(1−β1)∗db

momentum更新了β1

Sdw=β2Sdw+{1−β2}dw2

Sdb=β2Sdb+{1−β2}db2

RMSprop更新了超参数β2 注意:一般计算Adam优化算法的时候要计算偏差修正。

Vdw=β1Vdw+(1−β1)dw

Vdb=β1Vdb+(1−β1)db

Vcorreteddw=Vdw(1−βt1)

Vcorreteddb=Vdb(1−βt1)

Scorreteddw=Sdw(1−βt2)

Scorreteddb=Sdb(1−βt2)

w=w−αVcorrecteddwScorrecteddw+ε−−−−−−−−−−√

b=b−αVcorrecteddbScorrecteddb+ε−−−−−−−−−−√

基本流程就是这样,这里有很多超参数,超参α很重要,经常需要调整,β1的常用缺省值为0.9,这是dw的移动平均数,这是momentum涉及的项,至于超参数β2,Adam论文的作者给出的推荐值是0.998.

最后谈谈为什么叫Adam算法,Adam代表的事Adaptive Moment Estimation。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习
相关文章推荐