常见梯度下降法变式总结(SGD, Momrntum,Adagrad等)

常见的梯度下降法的变式
1 SGD 随机梯度下降
随机梯度下降法是梯度下降法的一个小变形,就是每次使用一批(batch)数据进行梯度的计算,而不是计算全部数据的梯度,因为现在深度学习的数据量都特别大,所以每次都计算所有数据的梯度是不现实的,这样会导致运算时间特别长,同时每次都计算全部的梯度还失去了一些随机性,容易陷入局部误差,所以使用随机梯度下降法可能每次都不是朝着真正最小的方向,但是这样反而容易跳出局部极小点。
2 Momentum (动量法)
这种优化方法在随机梯度下降的同时,增加动量(Momentum)。这来自物理中的概念,可以想象损失函数是一个山谷,一个球从山谷滑下来,在一个平坦的地势,球的滑动速度就会慢下俩,可能陷入一些鞍点或者局部极小值点。这个时候给他增加动量就可以让它从高处滑落时的势能转换为平地的动能,相当于惯性增加了小球在平地滑动的速度,从而帮助其跳出鞍点或者局部极小值点。
3 Nesterov Momentum(NAG)
Nesterov Momentum是Momentum的变种,用于解决SGD容易陷入局部最优的问题。我们知道Momentum方法中梯度方向由积累的动量和当前梯度方法共同决定,与其看当前梯度方向,不妨先看看跟着积累的动量走一步是什么情况,再决定怎么走。
当一个小球从山谷上滚下的时候,盲目的沿着斜率方向前行,其效果并不令人满意。我们需要有一个更「聪明」的小球,它能够知道它再往哪里前行,并在知道斜率再度上升的时候减速。

在小球向下滚动的过程中,我们希望小球能够提前知道在哪些地方坡面会上升,这样在遇到上升坡面之前,小球提前就开始减速,就不容易陷入局部最优解。
4 Adagrad
这是一种自适应学习率的方法,它的公式
在这里插入图片描述
通过公式,我们可以看到学习率在不断变小, 且收每次计算出来的梯度的影响,对于参数比较大的参数,它的学习率就会变得相对更小,里面的根号特别重要,没有这个根号算法表现给常差,同时ϵ是一个平滑参数,通常设置为10-4~10-8,这是为了避免分母为。
它通过记录每次迭代过程中的前进方向和距离,从而使得针对不同问题,有一套自适应调整学习率的方法,对于出现频率较低参数采用较大的α更新;相反,对于出现频率较高的参数采用较小的α更新。
自适应学习率的一个缺点就行在某些情况下一直递减的学习率并不好,这样会造成学习过早停止。
5 RMSprop
这是一种非常有效的自适应学习率改进方法,它的公式时:
在这里插入图片描述
这里多了一个α,这是一个衰减率,也就是说RMSprop不再将前面所有的梯度平方求和,而是通过一个衰减率将其变小,使用了一个滑动平均的方式,越靠前面的梯度对自适应的学习率影响较小,这样就能更加的有效的避免Adagrad学习率一直递减太多的问题,能够更快的收敛。Adagrad会累加之前所有的梯度平方,而RMSprop仅仅是计算对应的平均值,因此可缓解Adagrad算法学习率下降较快的问题。
6 Adam
Adam是一种综合型的学习方法,可以看成是RMSprop加上动量(Momentum)的学习方法,达到比RMSprop更好的效果。
7 Nadam
Nadam可以看成为Nadam = Adam + NAG。

你可能感兴趣的:(常见梯度下降法变式总结(SGD, Momrntum,Adagrad等))