[关闭]
@songying 2018-09-30T17:13:40.000000Z 字数 2736 阅读 1011

An overview of gradient descent optimization algorithms

综述类论文


https://blog.csdn.net/qq_16234613/article/details/78912322

Abstract

虽然梯度下降优化算法越来越受欢迎,但通常作为黑盒优化器使用,因此很难对其优点和缺点的进行实际的解释。本文旨在让读者对不同的算法有直观的认识,以帮助读者使用这些算法。在本综述中,我们介绍梯度下降的不同变形形式,总结这些算法面临的挑战,介绍最常用的优化算法,回顾并行和分布式架构,以及调研用于优化梯度下降的其他的策略。

Introduction

本文旨在让读者对不同的优化梯度下降的算法有直观的认识,以帮助读者使用这些算法。
- 在第二章中,我们首先介绍梯度下降的几种变体。
- 在第三章中,我们简要总结在训练过程中所面临的挑战。
- 在第四章中,介绍最常用的优化算法
- 第5章中, 我们将简单讨论在并行和分布式环境中优化梯度下降的算法和框架
- 在第6部分,我们将思考对优化梯度下降有用的一些其他策略。

2. Gradient descent variants

梯度下降法有三种变体,它们之间的区别为我们在计算目标函数的梯度时使用到多少数据。根据数据量的不同,我们在参数更新的精度和更新过程中所需要的时间两个方面做出权衡。

Batch gradient descent

Stochastic gradient descent

Mini-batch gradient descent

3. Chanlleges

  1. 学习率的选择,学习率太小会导致收敛的速度很慢,学习率太大会妨碍收敛,导致损失函数在最小值附近波动甚至偏离最小值。
  2. 学习率的调整问题, 如果需要根据预定义好的 策略更新学习率, 则对于不同的数据集,必须每次设置好学习策略。
  3. 对所有的参数更新使用同样的学习率。如果数据是稀疏的,同时,特征的频率差异很大时,我们也许不想以同样的学习率更新所有的参数,对于出现次数较少的特征,我们对其执行更大的学习率。
  4. 高度非凸误差函数普遍出现在神经网络中,在优化这类函数时,另一个关键的挑战是使函数避免陷入无数次优的局部最小值。Dauphin等人[5]指出出现这种困难实际上并不是来自局部最小值,而是来自鞍点,即那些在一个维度上是递增的,而在另一个维度上是递减的。这些鞍点通常被具有相同误差的点包围,因为在任意维度上的梯度都近似为0,所以SGD很难从这些鞍点中逃开。

优化算法

1. 动量法 ?

SGD在每次计算梯度的时候, 梯度的方向是不同的, 这可能导致一种震荡现象, 这种震荡现象减慢了梯度下降法的速度,这也导致你无法使用更大的学习率, 如果你使用较大的学习率, 这也可能导致震荡更大, 收敛更慢。

SGD很难通过陡谷,即在一个维度上的表面弯曲程度远大于其他维度的区域[19],这种情况通常出现在局部最优点附近。在这种情况下,SGD摇摆地通过陡谷的斜坡,同时,沿着底部到局部最优点的路径上只是缓慢地前进。


其中, 大多数情况下取 0.9。
上式中, 表示上一时刻梯度的实际值, 表示当前位置根据损失函数 算得的梯度。

从本质上说,动量法,就像我们从山上推下一个球,球在滚下来的过程中累积动量,变得越来越快(直到达到终极速度,如果有空气阻力的存在,则)。同样的事情也发生在参数的更新过程中:对于在梯度点处具有相同的方向的维度,其动量项增大,对于在梯度点处改变方向的维度,其动量项减小。因此,我们可以得到更快的收敛速度,同时可以减少摇摆。

2. Nesterov 加速下降法

https://zhuanlan.zhihu.com/p/22810533
博士论文: http://www.cs.utoronto.ca/~ilya/pubs/ilya_sutskever_phd_thesis.pdf

对比两个公式,我们发现, 主要区别在于 的更新,具体来说是后一项的不同。 我们来分析一下区别:

3. Adagrad

思想: 让学习率适应参数,对于出现次数较少的特征,我们对其采用更大的学习率,对于出现次数较多的特征,我们对其采用较小的学习率。

Adagrad非常适合处理稀疏数据

t 表示每一次迭代, 一般是一个极小值,目的是防止分母为0一般取值为 是一个对角矩阵, 每个对角线位置的值累加到 t 次迭代的对应参数 梯度平方和, 表示前t步参数梯度的累加。


随着算法不断的迭代, 会越来越大,整体的学习率会越来越小。所以一般来说adagrad算法一开始是激励收敛,到了后面就慢慢变成惩罚收敛,速度越来越慢。

Adagrad算法的优点: 消除了手动调整 learning rate,大多数实现使用 learning rate = 0.01 。

Adagrad 主要的缺点在于它的分母项的积累: 由于每个附加项都是正数,因此累积总和在训练期间不断增长。这反过来导致学习速率缩小并最终变得无限小,此时算法不再能够获得额外的知识。

4. Adadelta

5. RMSprop

6. Adam

如何选择优化算法

6. 优化策略

1. 数据的洗牌与课程学习

2. 批量归一化

3. Early stopping

4. 梯度噪音

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注