乐趣区

关于人工智能:为什么Adam-不是默认的优化算法

因为训练工夫短,越来越多人应用自适应梯度办法来训练他们的模型,例如 Adam 它曾经成为许多深度学习框架的默认的优化算法。只管训练后果优越,但 Adam 和其余自适应优化办法与随机梯度降落 (SGD) 相比,有时的成果并不好。这些办法在训练数据上体现良好,但在测试数据却差很多。

最近,许多钻研人员曾经开始针对这个问题进行钻研,尤其是咱们最罕用的 Adam。本篇文章将试着了解一下这些钻研后果。

Adam 收敛速度更快,但最终的后果却并不好!

为了充沛了解这一说法,咱们先看一看 ADAM 和 SGD 的优化算法的利弊。

传统的梯度降落是用于优化深度学习网络的最常见办法。该技术在 1950 年代首次提出,能够通过观察参数变动如何影响指标函数,抉择一个升高错误率的方向来更新模型的每个参数,并且能够进行持续迭代,直到指标函数收敛到最小值。

SGD 是梯度降落的一种变体。SGD 并不对整个数据集执行计算——而是只对随机抉择的数据示例的一个小子集进行计算。在学习率较低的状况下,SGD 的性能与惯例梯度降落雷同。

Adam 的优化办法依据对梯度的一阶和二阶的预计来计算不同参数的个体自适应学习率。它联合了 RMSProp 和 AdaGrad 的长处,对不同的参数计算个别的自适应的学习率。与 RMSProp 中基于均匀第一阶矩 (平均值) 来调整参数学习率不同,Adam 还应用了梯度的第二阶矩 (非核心方差) 的平均值。

上图来自 cs231n,依据下面的形容 Adam 能迅速收敛到一个“尖利的最小值”,而 SGD 计算工夫长步数多,可能收敛到一个“平坦的最小值”,并且测试数据上体现良好。

为什么 ADAM 不是默认优化算法呢?

2019 年 9 月发表的文章《Bounded Scheduling Method for Adaptive Gradient Methods》钻研了导致 Adam 在训练简单神经网络时体现不佳的因素。咱们这里将 Adam 教训概化能力较弱的关键因素归纳如下:

  • 梯度尺度的不平均会导致自适应梯度的办法泛化性能较差。但 SGD 具备对立尺度,训练误差小,在测试数据推广时成果也会好
  • Adam 应用的指数挪动均匀并不能使学习率枯燥降落,这将导致它不能收敛到最优解,从而导致泛化性能较差。
  • Adam 学习到的学习率在某些状况下可能太小而不能无效收敛,这会导致它找不到正确的门路而收敛到次长处。
  • Adam 可能会大幅提高学习率,这不利于算法的整体性能。

最初咱们做个总结

只管自适应梯度算法的收敛速度更快,但其泛化性能却比 SGD 算法差。具体来说,自适应梯度算法在训练阶段的停顿很快,但在测试数据上的体现很快就会停滞不前。然而 SGD 通常对模型性能的改善很慢,但能够取得更高的测试性能。对于这种泛化差距的一种教训解释是,自适应梯度算法偏向于收敛到尖利的极小值,其局部地区的曲率较大,所以泛化性能较差,而 SGD 则偏向于寻找平坦的极小值,因而泛化较好。

然而,本文这并不是否定自适应梯度办法在神经网络框架中的学习参数的奉献。而是心愿可能在应用 Adam 的同时试验 SGD 和其余非自适应梯度办法,因为自觉地将 Adam 设置为默认优化算法可能不是最好的办法。

https://avoid.overfit.cn/post/0ef6af02aa2947bca154a89cc9c67436

作者:Harjot Kaur

退出移动版