深度学习中优化方法
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
文章图片
文章图片
其中 ε 是为了防止分母为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
【机器学习|深度学习中优化方法】
推荐阅读
- 睿智的目标检测|睿智的目标检测55——Keras搭建YoloV5目标检测平台
- 深度学习理论|DeepLearning:训练神经网络—梯度下降优化器(optimizer)
- 深度学习|Colab使用教程
- 神经网络|深度学习中的五大正则化方法和七大优化策略
- jvm|面了一个阿里P9的程序员,我慌了...
- PyTorch深度学习|PyTorch深度学习实践(三)
- 脑技术|人工智能、机器学习、神经网络和深度学习的发展历程(下)
- 【跟李沐学AI】|【跟李沐学AI】11.1 迁移学习
- 深度学习_李宏毅|【李宏毅2021机器学习深度学习】10-1 概述领域自学习(Domain Adaptation)