知乎引用

常见的优化算法包括梯度下降法、牛顿法、Momentum、Adagrad、Adam等

SGD

 

是通过梯度方向和步长,直接求解目标函数的最小值时的参数。

越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡。

SGD就是每一次迭代计算mini-batch的梯度,然后对参数进行更新,是最常见的优化方法了。即:

机器学习优化方案对比
优点:

由于每次迭代只使用了一个样本计算梯度,训练速度快;

包含一定随机性,每次计算的梯度基本是正确的导数的。

缺点:

选择合适的learning rate比较困难 - 对所有的参数更新使用同样的learning rate;

SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点;

带有随机性造成损失函数在收敛过程中严重震荡。

牛顿法

是通过求解目标函数的一阶导数为0时的参数,进而求出目标函数最小值时的参数。

优点:

收敛速度很快;

海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果;

缺点:

海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。

Momentum

momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度:

机器学习优化方案对比

优点:

前后梯度一致的时候能够加速学习;

前后梯度不一致的时候能够抑制震荡,越过局部极小值。(加速收敛,减小震荡)

缺点:

增加了一个超参数。

 

Adagrad

Adagrad其实是对学习率进行了一个约束:

机器学习优化方案对比
优点:

减少了学习率的手动调节;

前期gt较小的时候, regularizer较大,能够放大梯度;

后期gt较大的时候,regularizer较小,能够约束梯度;

适合处理稀疏梯度

缺点:

由公式可以看出,仍依赖于人工设置一个全局学习率;

设置过大的话,会使regularizer过于敏感,对梯度的调节太大;

分母上梯度平方的累加将会越来越大,使得训练提前结束


 RMSProp

优点:

相比于AdaGrad,这种方法更好的解决了深度学习中过早的结束学习的问题;

适合处理非平稳目标,对RNN效果很好。

缺点:

依然依赖于全局学习速率。

Adam   (Adaptive Moment Estimation)

本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。

Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。公式如下:

机器学习优化方案对比

优点:

对内存需求较小

为不同的参数计算不同的自适应学习率

结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点

也适用于大多非凸优化 - 适用于大数据集和高维空间

Adam 比其他适应性学习方法效果要好。适用于多数情况。

缺点:

复杂。

 

适用场景:


1 对于稀疏数据,尽量使用学习率可自适应的优化方法,不用手动调节,而且最好采用默认值。
2 SGD通常训练时间更长,但是在好的初始化和学习率调度方案的情况下(很多论文都用SGD),结果更可靠。
3 如果在意更快的收敛,并且需要训练较深较复杂的网络时,推荐使用学习率自适应的优化方法。
4 RMSprop,Adam是比较相近的算法,在相似的情况下表现差不多 。Adam 就是在 RMSprop 的基础上加了 bias-correction 和 momentum,随着梯度变得稀疏,Adam 比 RMSprop 效果会好。整体来讲,Adam 是最好的选择。

相关文章:

  • 2021-07-29
  • 2021-07-18
  • 2021-12-03
  • 2021-08-22
  • 2021-12-03
  • 2021-12-03
  • 2021-12-03
  • 2021-12-03
猜你喜欢
  • 2021-10-20
  • 2021-08-21
  • 2021-12-03
  • 2021-04-24
  • 2021-12-03
  • 2021-12-03
  • 2021-09-29
相关资源
相似解决方案