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

SGD, AdaDelta, Ada-Grad, Adam, NAG, RMSprop 六种梯度下降方法横向对比

2017-03-05 21:34 681 查看
转载自:原文

第一节 SGD 随机梯度下降 Stochastic gradient descent

利用负梯度方向来更新权重W:





加入了动量momentum  μ后:



第二节 AdaDelta 

出自M. Zeiler - ADADELTA: An adaptive learning rate method.

用一阶导去估计海森矩阵的方法,但是是来源于Ada-Grad方法,具有5个优点:

1.自适应,省去了人工设定学习率的过程;

2.只用到一阶信息,计算开销小;

3.超参数不敏感性,其公式中额外增加的参数的选择对求解结果没有很大影响;

4.鲁棒性;

5.按维度分开计算学习率;

由于学习率在网络的训练过程中是应该逐渐减小的,这就是学习率的退火处理。

(1)学习率退货有两种:在合适的时候加快学习,在靠近局部最优时减慢学习。通常设计退火与迭代次数相关,因此也增加了一些权值衰减的超参数;

(2)基于一阶导的逐维学习率控制。由于启发式退火的学习率是全局学习率,而参数向量的每一维实际对学习骑着不同的作用,所以逐维学习可以抵消这种差异。引入动量(Momentum)是一种做法,Ada-Grad也可以。假设超参数平面如一条狭长的河谷,传统方法会在河谷两岸来回摆动,而加入了动量可以减轻这种摆动。Ada-Grad则是让每一维下降细化了,不会存在摆动的事情。其思想在于每一位参数遵循自己的动态变化。从梯度在训练中是递减的这样一个实际出发,我们知道当梯度变化得越多,变得越小了,说明学习进行得越久,学习率应该就越小,这样损失函数越靠近最小值。Ada-Grad对之前每次迭代的梯度做了累加,把这个累加值做分母,变化的越多就让其衰减越快。其形式:




(3)用二阶导处理,直接用海森矩阵的逆或者近似值去做。

Becker和LecCun的"Improving the convergence of back-propagation learning with second order methods"中提出了海森矩阵的对角阵方法,在普通SGD的两倍时间中求得diag(H),




Schaul的"No more pesky learning rates" 说明了完全自动选择学习率的方法,没有细看,有必要时可以再去研究。

AdeDelta 源自Ada-Grad,其重要两个思想(1)改进了Ada-Grad的梯度累加,学习率无穷小的问题;(2)近似海森矩阵。

细说(1),令

,ρ是与动量相似的衰减常数。

计算均方根

,因此改进了Ada-Grad,



对于(2),出发点是因为一阶计算时单位不统一,二阶计算时统一:







进一步定义



第三节 AdaGrad

之前第二节有顺带分析过,这个是能起到一个控制每维梯度方向的作用。



第四节 Adam

对于AdaGrad的泛化,其加入了:自适应时刻估计变量mt, μt 。



第五节 NAG



第六节 RMSprop



第四节到第六节这三个方法在体会完第二节的AdaDelta方法后,就能立刻理解了,简直小巫见大巫,但是也都有其巧妙之处。这里就摘自Caffe官方教程的中译本,谢谢Caffe社区,谢谢译本作者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐