互联网资讯 / 人工智能 · 2023年11月25日 0

选择适合机器学习项目的优化器

为机器学习项目挑选合适的优化器并非易事。

优化器在深度学习中扮演着关键角色,使用不同的优化器进行深度学习任务会产生显著不同的结果,这也是研究者们不断探索的原因之一。常见的优化算法包括梯度下降(包括 BGD、SGD 和 MBGD 变体)、AdagRad、AdaM、MoMentuM 等。在如此众多的选择中,如何做出明智的决策呢?

近期,Lightly-AI 的机器学习工程师 PHilIPp WiRth 撰写了一篇指南,概述了计算机视觉、自然语言处理和机器学习领域中常用的优化器,并提供了选择合适优化器的建议。

优化器怎么选?一文教你选择适合不同ML项目的优化器

具体而言,文章建议通过以下三个问题来选择优化器:

首先,查阅相关研究论文,初步使用相同的优化器;其次,查看表 1,将自己数据集的属性与不同优化器的优缺点进行对比;最后,根据可用资源对优化器进行调整。

引言

为机器学习项目选择最佳优化器是一项复杂的任务。流行的深度学习库(如 PyToRch 或 TensoRFLow)提供了多种可供选择的优化器,各自具有不同的优缺点。不当的选择可能对项目产生负面影响,因此选择优化器在构建、测试和部署机器学习模型的过程中至关重要。

优化器怎么选?一文教你选择适合不同ML项目的优化器

上图展示了不同优化器对模型性能的显著影响。

选择优化器的难点在于没有一个通用的解决方案。实际上,优化器的表现高度依赖于具体设置。因此,根本问题是:“哪种优化器最适合自身项目的特点?”

接下来,本文将围绕这一问题分为两部分进行探讨:第一部分简要介绍常用优化器,第二部分讲述“三步选择法”,以帮助用户为自己的机器学习项目选出最佳优化器。

常用优化器

深度学习中几乎所有主流的优化器均基于梯度下降。这意味着它们需要反复估算给定损失函数 L 的斜率,并沿相反方向调整参数(以向下移动至假定的全局最小值)。最基础的示例是自 20 世纪 50 年代以来广泛应用的随机梯度下降(SGD)算法。进入 21 世纪后,自适应梯度法(如 AdaGRad 或 AdaM)逐渐流行。

然而,近期趋势显示,一些研究开始回归使用传统的 SGD,而非自适应梯度法。此外,当前深度学习面临的挑战催生了新的 SGD 变体,例如 LARS、LAMB。例如,谷歌研究院在其最新论文中使用 LARS 来训练一种强大的自监督模型。

在本文中,参数用 w 表示,梯度用 g 表示,α 表示每个优化器的全局学习率,t 表示时间步(time step)。

随机梯度下降(SGD)算法

优化器怎么选?一文教你选择适合不同ML项目的优化器

在随机梯度下降算法(SGD)中,优化器基于小批量数据估计下降最快的方向,并朝该方向进行调整。由于步长固定,SGD 可能会迅速陷入平稳区(plateaus)或局部最小值。

带动量的 SGD

优化器怎么选?一文教你选择适合不同ML项目的优化器

其中 β<1。当使用动量时,SGD 在连续下降的方向上加速(因此这种方法被称为“重球法”)。这种加速有助于模型跳出平稳区,降低陷入局部极小值的风险。

AdaGRad

优化器怎么选?一文教你选择适合不同ML项目的优化器

AdaGRad 是首批成功实施自适应学习率的方法之一。它通过平方梯度之和的倒数的平方根来调整每个参数的学习率,从而在稀疏梯度方向上进行较大调整。结果显示,AdaGRad 在具有稀疏特征的场景中能迅速收敛。

RMSProp

优化器怎么选?一文教你选择适合不同ML项目的优化器

RMSProp 是一种尚未发布的优化器,但近年来已被广泛使用。其理念与 AdaGRad 相似,但其对梯度的重新缩放方式不那么激进:用平方梯度的移动均值替代平方梯度的总和。RMSProp 通常与动量结合使用,是 RProp 在小批量设置下的变种。

AdaM

优化器怎么选?一文教你选择适合不同ML项目的优化器

AdaM 将 AdaGRad、RMSProp 和动量方法结合在一起。下一步的方向依据梯度的移动平均值决定,步长的大小由全局步长设置上限。此外,类似于 RMSProp,AdaM 也对梯度的每个维度进行重新缩放。AdaM 与 RMSProp(或 AdaGRad)之间的一个主要区别在于对瞬时估计 M 和 v 的零偏差进行了校正。以少量超参数进行微调,AdaM 通常能获得令人满意的性能。

AdaMW

优化器怎么选?一文教你选择适合不同ML项目的优化器

LoshcHilOV 和 HutteR 在自适应梯度方法中提出了 L2 正则化和权重衰减的不等式,认为这种不等式限制了 AdaM 的表现。于是,他们提出将权重衰减与学习率解耦。实验结果表明,AdaMW 在泛化性能上优于 AdaM(利用动量缩小与 SGD 的差距),并且对于 AdaMW 而言,最优超参数的范围更宽。

LARS

优化器怎么选?一文教你选择适合不同ML项目的优化器

LARS 是 SGD 的带动量扩展,能够适应每层的学习率。LARS 最近在研究领域引起了广泛关注,主要是由于可用数据的持续增长以及机器学习的分布式训练日益流行。这推动了批处理大小的增加,导致训练变得不稳定。有研究者(Yang et al)认为,这些不稳定性源于某些层的梯度标准与权重标准之间的失衡,因此提出了一种基于“信任”参数 η 的优化器。

如何选择合适的优化器?

如上所述,为机器学习问题选择合适的优化器可能相当复杂。更具体地说,没有通用的解决方案,必须根据特定问题进行选择。在选择优化器之前,可以问自己以下三个问题:

类似数据集和任务的 SOTA 结果是什么?使用了哪些优化器?为什么选择这些优化器?

如果你正在使用一种新型的机器学习方法,可能会找到一篇或多篇关于类似问题或数据的优秀论文。通常,论文作者会进行广泛的交叉验证,并给出最成功的配置。读者可以尝试理解他们选择这些优化器的原因。

例如:假设你想训练生成对抗网络(GAN)来对一组图像进行超分辨率处理。经过研究后,你发现一篇论文中,研究者使用 AdaM 优化器解决了完全相同的问题。威尔逊等人认为,训练 GAN 不应过于关注优化问题,而 AdaM 在这种情况下可能非常合适。因此,在这种情况下,AdaM 是一个不错的选择。

另外,数据集中是否存在某些特性使特定优化器更具优势?如果是这样,优化器的选择就显得尤为重要。

下表 1 概述了几种优化器的优缺点。读者可以尝试找到与数据集特征、训练设置和项目目标相匹配的优化器。一些优化器在具有稀疏特征的数据上表现优异,而另一些则在处理先前未见过的数据时可能更有效。一些优化器在大批量训练时表现良好,而另一些则可能在泛化不佳的情况下收敛到极小的最小值。

优化器怎么选?一文教你选择适合不同ML项目的优化器

举例来说:如果你需要将用户反馈分类为正面和负面,考虑使用词袋模型(bag-of-words)作为机器学习模型的输入特征。由于这些特征可能非常稀疏,选择自适应梯度方法会很合适。但具体选择哪种优化器呢?参考上表 1,AdaGRad 在自适应梯度方法中参数最少,适合时间有限的项目,因此可能会选择 AdaGRad 作为优化器。