第一节 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社区,谢谢译本作者。