深度学习Momentum(动量方法)

转自:http://blog.csdn.net/bvl10101111/article/details/72615621算法

先上结论:学习

1.动量方法主要是为了解决Hessian矩阵病态条件问题(直观上讲就是梯度高度敏感于参数空间的某些方向)的。.net

2.加速学习 blog

3.通常将参数设为0.5,0.9,或者0.99,分别表示最大速度2倍,10倍,100倍于SGD的算法。图片

4.经过速度v,来积累了以前梯度指数级衰减的平均,而且继续延该方向移动: get

这里写图片描述

 

再看看算法: 
这里写图片描述it

动量算法直观效果解释:方法

  如图所示,红色为SGD+Momentum。黑色为SGD。能够看到黑色为典型Hessian矩阵病态的状况,至关于大幅度的徘徊着向最低点前进。 
  而因为动量积攒了历史的梯度,如点P前一刻的梯度与当前的梯度方向几乎相反。所以本来在P点本来要大幅徘徊的梯度,主要受到前一时刻的影响,而致使在当前时刻的梯度幅度减少。 
  直观上讲就是,要是当前时刻的梯度与历史时刻梯度方向类似,这种趋势在当前时刻则会增强;要是不一样,则当前时刻的梯度方向减弱。 im

这里写图片描述

 

从另外一个角度讲:img

  要是当前时刻的梯度与历史时刻梯度方向类似,这种趋势在当前时刻则会增强;要是不一样,则当前时刻的梯度方向减弱。 
  假设每一个时刻的梯度g老是相似,那么由这里写图片描述咱们能够直观的看到每次的步长为: 

这里写图片描述 
即当设为0.5,0.9,或者0.99,分别表示最大速度2倍,10倍,100倍于SGD的算法。
相关文章
相关标签/搜索