机器学习|深度学习中优化方法

深度学习中优化方法

momentum、Nesterov Momentum、AdaGrad、Adadelta、RMSprop、Adam
一、 指数加权平均(Exponentially weighted average) 在下面要讲的很多算法都用到了 指数加权平均,看一下 指数加权平均(Exponentially weighted average) 的定义:
机器学习|深度学习中优化方法
文章图片

下面直接看实现指数加权平均(Exponentially weighted average) 的伪代码:

V0 = 0 repeat { get next theta_t V_theta = beta * V_theta + (1 - beta)* theta_t }

二、带偏差修正的指数加权平均(bias correction in exponentially weighted average) 指数加权平均 不能很好地拟合前几天的数据,因此需要 偏差修正.
公式为:
机器学习|深度学习中优化方法
文章图片

三、momentum 动量的引入就是为了加快学习过程,特别是对于高曲率、小但一致的梯度,或者噪声比较大的梯度能够很好的加快学习过程。动量的主要思想是积累了之前梯度指数级衰减的移动平均(前面的指数加权平均),下面用一个图来对比下,SGD和动量的区别:
机器学习|深度学习中优化方法
文章图片

区别: SGD每次都会在当前位置上沿着负梯度方向更新(下降,沿着正梯度则为上升),并不考虑之前的方向梯度大小等等。而动量(moment)通过引入一个新的变量 v vv 去积累之前的梯度(通过指数衰减平均得到),得到加速学习过程的目的。
公式:机器学习|深度学习中优化方法
文章图片

四、Nesterov Momentum Nesterov Momentum是对Momentum的改进,可以理解为nesterov动量在标准动量方法中添加了一个校正因子。用一张图来形象的对比下momentum和nesterov momentum的区别(图片来自:http://ttic.uchicago.edu/~shubhendu/Pages/Files/Lecture6_pauses.pdf):

机器学习|深度学习中优化方法
文章图片

这是公式:
机器学习|深度学习中优化方法
文章图片

上面那个公式运算成本大,改良版公式:
机器学习|深度学习中优化方法
文章图片

五、AdaGrad(Adaptive Gradient) 通常,我们在每一次更新参数时,对于所有的参数使用相同的学习率。而AdaGrad算法的思想是:每一次更新参数时(一次迭代),不同的参数使用不同的学习率。AdaGrad 的公式为:
机器学习|深度学习中优化方法
文章图片
机器学习|深度学习中优化方法
文章图片

六、Adadelta Adadelta是对Adagrad的改进,主要是为了克服Adagrad的两个缺点(摘自Adadelta论文《AdaDelta: An Adaptive Learning Rate Method》):
  • the continual decay of learning rates throughout training
  • the need for a manually selected global learning rate
为了解决第一个问题,Adadelta只累积过去 w ww 窗口大小的梯度,其实就是利用前面讲过的指数加权平均,公式如下:
机器学习|深度学习中优化方法
文章图片

机器学习|深度学习中优化方法
文章图片

其中 ε 是为了防止分母为0
七、RMSprop(root mean square prop均方根算法 ) RMSprop也是对Adagrad的扩展,以在非凸的情况下效果更好。和Adadelta一样,RMSprop使用指数加权平均(指数衰减平均)只保留过去给定窗口大小的梯度,使其能够在找到凸碗状结构后快速收敛。
在实际使用过程中,RMSprop已被证明是一种有效且实用的深度神经网络优化算法。目前它是深度学习人员经常采用的优化算法之一
机器学习|深度学习中优化方法
文章图片

同样 ε 是为了防止分母为0,β 默认值设为 0.9,学习率 α 默认值设为 0.001

八、Adam(Adaptive Moment Estimation) Adam实际上是把momentum和RMSprop结合起来的一种算法
机器学习|深度学习中优化方法
文章图片

机器学习|深度学习中优化方法
文章图片

实践表明,Adam算法在很多种不同的神经网络结构中都是非常有效的
八、该如何选择优化算法
介绍了这么多算法,那么我们到底该选择哪种算法呢?目前还没有一个共识,schaul et al 在大量学习任务上比较了许多优化算法,结果表明,RMSprop,Adadelta和Adam表现的相当鲁棒,不分伯仲。Kingma et al表明带偏差修正的Adam算法稍微好于RMSprop。总之,Adam算法是一个相当好的选择,通常会得到比较好的效果。


————————————————
版权声明:本文为CSDN博主「天泽28」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012328159/article/details/80311892
【机器学习|深度学习中优化方法】

    推荐阅读