深度学习之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。
除了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。
相关文章推荐
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- 转:深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- SGD,Momentum,AdaGrad,RMSProp,Adam等优化算法发展历程
- 【深度学习】深入理解优化器Optimizer算法(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
- CS231n课程笔记6.1:优化迭代算法之SGD,Momentum,Netsterov Momentum,AdaGrad,RMSprop,Adam
- 深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
- CS231n作业笔记2.3:优化算法Momentum, RMSProp, Adam
- 深度学习优化算法Momentum RMSprop Adam
- 优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam
- 【deeplearning.ai笔记第二课】2.2 优化算法(动量梯度下降,RMSprop,adam)
- 从修正Adam到理解泛化:概览2017年深度学习优化算法的最新研究进展
- 优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- 梯度下降与优化方法(BGD & SGD & Momentum & AdaGrad & RMSProp & Adam)
- 从修正Adam到理解泛化:概览2017年深度学习优化算法的最新研究进展
- 深度学习—加快梯度下降收敛速度(二):Monmentum、RMSprop、Adam
- 深度学习笔记6:神经网络优化算法之从SGD到Adam