SGD, AdaDelta, Ada-Grad, Adam, NAG, RMSprop 六种梯度下降方法横向对比
来源:互联网 发布:新致软件 编辑:程序博客网 时间:2024/06/08 00:10
转载自:原文
第一节 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社区,谢谢译本作者。
- SGD, AdaDelta, Ada-Grad, Adam, NAG, RMSprop 六种梯度下降方法横向对比
- 十一、改变神经网络的学习方法(5):随机梯度下降的变化形式(Adagrad、RMSProp、Adadelta、Momentum、NAG)
- 优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam
- 优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- SGD,Adagrad,Adadelta,Adam等优化方法总结和比较
- 自适应学习速率SGD优化方法比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 【deeplearning.ai笔记第二课】2.2 优化算法(动量梯度下降,RMSprop,adam)
- 深度学习—加快梯度下降收敛速度(二):Monmentum、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)、批量梯度下降(BGD)的对比
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- ruby on rails
- 设计模式之初识
- 七步带你认识计算机视觉(Computer Vision)
- win10上安装tensorflow注意事项
- Java复习之进程与线程
- SGD, AdaDelta, Ada-Grad, Adam, NAG, RMSprop 六种梯度下降方法横向对比
- UML图详解
- 关于Unicode和ANSI字符集处理
- 【django4】简单注册/登陆/注销功能
- Android Studio 2.3 正式版新功能,你不来看看?!
- 深入分析计算机的函数调用与进程切换
- Android之RootTools框架简单使用
- 【学记】这个部分叫做熬
- telnet开启本地回显功能