深度学习优化算法解析(Momentum, RMSProp, Adam)

  • Post author:
  • Post category:其他


深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及mini-batch SGD算法基本大家都能理解,这里就一笔带过了。下面重点讲一下Momentum算法,RMSProp算法和Adam算法。

在讲这个算法之前说一下

移动指数加权平均

。移动指数加权平均法加权就是根据同一个移动段内不同时间的数据对预测值的影响程度,分别给予不同的权数,然后再进行平均移动以预测未来值。假定给定一系列数据值







x


1





x1


等于历史值的加权率。如果把公式详细的展开,就会得到一个指数形式的公式,这里就不详细讲了。根据这个公式我们可以根据给定的数据,拟合出下图类似的一条比较平滑的曲线。



1. Momentum

通常情况我们在训练深度神经网络的时候把数据拆解成一小批一小批地进行训练,这就是我们常用的mini-batch SGD训练算法,然而虽然这种算法能够带来很好的训练速度,但是在到达最优点的时候并不能够总是真正到达最优点,而是在最优点附近徘徊。另一个缺点就是这种算法需要我们挑选一个合适的学习率,当我们采用小的学习率的时候,会导致网络在训练的时候收敛太慢;当我们采用大的学习率的时候,会导致在训练过程中优化的幅度跳过函数的范围,也就是可能跳过最优点。我们所希望的仅仅是网络在优化的时候网络的损失函数有一个很好的收敛速度同时又不至于摆动幅度太大。

所以Momentum优化器刚好可以解决我们所面临的问题,它主要是基于梯度的移动指数加权平均。假设在当前的迭代步骤第






t




t


是网络的学习率。当我们使用Momentum优化算法的时候,可以解决mini-batch SGD优化算法更新幅度摆动大的问题,同时可以使得网络的收敛速度更快。

2. RMSProp

RMSProp算法的全称叫 Root Mean Square Prop,是Geoffrey E. Hinton在Coursera课程中提出的一种优化算法,在上面的Momentum优化算法中,虽然初步解决了优化中摆动幅度大的问题。所谓的摆动幅度就是在优化中经过更新之后参数的变化范围,如下图所示,蓝色的为Momentum优化算法所走的路线,绿色的为RMSProp优化算法所走的路线。


优化算法走的路线



为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对权重






W




W


3. Adam

有了上面两种优化算法,一种可以使用类似于物理中的动量来累积梯度,另一种可以使得收敛速度更快同时使得波动的幅度更小。那么讲两种算法结合起来所取得的表现一定会更好。Adam(Adaptive Moment Estimation)算法是将Momentum算法和RMSProp算法结合起来使用的一种算法,我们所使用的参数基本和上面讲的一致,在训练的最开始我们需要初始化梯度的累积量和平方累积量。











v




d


w







=


0


,





v




d


b







=


0


;





s




d


w







=


0


,





s




d


b







=


0




vdw=0,vdb=0;sdw=0,sdb=0


则需要我们在训练的时候进行微调。

通过上面的三个算法基本讲述了神经网络中的优化器,理解了这三个算法其他的算法也就引刃而解了。