try ai
科普
编辑
分享
反馈
  • 自适应优化器

自适应优化器

SciencePedia玻尔百科
核心要点
  • 自适应优化器通过为每个模型参数维护一个独特的、不断演变的步长,克服了单一学习率的局限性。
  • 现代标准优化器 Adam 结合了动量(梯度的一阶矩)来引导方向,以及自适应缩放(梯度的二阶矩)来控制步长。
  • 诸如 AMSGrad 和 AdamW 等改进方法通过解决收敛问题并提供更有效的权重衰减正则化实现,对 Adam 进行了优化。
  • 这些优化器对于训练大型模型、处理稀疏特征以及支持物理信息神经网络(PINN)等高级应用至关重要。

引言

现代机器学习的核心挑战在于优化:在一个广阔而复杂的潜在解空间中,寻找最优的模型。其基础方法——梯度下降,将这个搜索过程比作一个滚下山坡的球,其步长——即学习率——决定了它的速度。然而,在深度学习的险峻地形中,单一的固定学习率往往不够用,会导致进展缓慢或剧烈震荡。这就提出了一个关键问题:我们如何设计能够智能地根据问题的局部地形调整步长的算法?

本文将以​​自适应优化器​​的形式探讨这个问题的答案。这类强大的算法已成为现代人工智能的引擎。通过“聆听”它们遇到的梯度历史,这些方法为每一个参数动态地调整学习率,使其能够以惊人的效率穿越深邃的峡谷、平坦的高原和陡峭的悬崖。

我们将首先在第一章“原理与机制”中,探讨支配这些优化器的​​原理与机制​​,剖析像 RMSProp 和 Adam 这样的方法如何利用梯度的一阶矩和二阶矩来建立动量和缩放步长。接着,我们将在第二章“应用与跨学科联系”中看到这些概念的实际应用,展示自适应优化器如何在解决医学、气候科学和联邦学习等现实世界问题中发挥关键作用,将它们从数学理论转变为不可或缺的科学发现工具。

原理与机制

想象一下,你正在一个广阔、雾气弥漫的山脉中寻找最低点。你看不到整张地图,但在任何一个位置,你都能感觉到脚下地面的坡度。最简单的策略是总是朝下坡方向迈出一步。这就是​​梯度下降​​的精髓,它是机器学习的基础算法。你迈步的方向由梯度——即最陡峭的下降方向——引导,而步长的大小就是我们所说的​​学习率​​。

这听起来足够简单。但如果地形不是一个平缓、均匀的碗状呢?如果它是一个遍布深邃狭窄峡谷、平坦高原和突然悬崖的险恶地带呢?单一固定的步长突然变成了一个巨大的累赘。

单一学习率的束缚

让我们来探讨峡谷问题,这是优化中一个被称为​​各向异性​​曲面的经典问题。想象一个山谷,其宽度方向极其陡峭,但其长度方向坡度非常平缓。我们的目标是沿着平缓的斜坡走到山谷的最低点。

如果我们选择一个大的学习率以便在平缓的斜坡上快速前进,那么一旦我们的路径稍有偏离,峡谷壁的陡峭梯度就会把我们猛地甩向山谷的另一侧,撞到对面的崖壁上。我们最终会在两壁之间来回反弹,剧烈震荡,而向真正最小值的进展却慢得令人沮丧。反之,如果我们为了避免这种情况而选择一个极小的学习率,我们虽然可以免受震荡之苦,但在谷底的前进过程将是极其缓慢的。我们陷入了一个两难的境地,一个无法满足任何一个目标的折衷方案。

这正是函数 f(θ)=a1θ12+a2θ22+bcos⁡(cθ1)f(\boldsymbol{\theta}) = a_1 \theta_1^2 + a_2 \theta_2^2 + b \cos(c \theta_1)f(θ)=a1​θ12​+a2​θ22​+bcos(cθ1​) 所定义的精心构造的数学曲面所探讨的情景。通过将一个系数设置得远大于另一个(例如,a1≫a2a_1 \gg a_2a1​≫a2​),我们就在一个方向上创造了陡峭的峡谷,在另一个方向上创造了平缓的斜坡。一个使用单一学习率的简单梯度下降优化器在这里会举步维艰。因此,显而易见的解决方案不是为我们的步长设定单一规则,而是为每个方向,或者说为每个​​参数​​,独立地调整我们的步长。我们需要一种方法来“聆听”地形。

学会聆听:二阶矩的力量

算法如何能培养出对地形的“感觉”?它可以聆听它所遇到的梯度历史。如果对于某个特定参数,梯度一直很大且波动剧烈,这表明地形在该方向上陡峭而险峻。明智的应对是保持谨慎,采取较小的步长。相反,如果一个参数的梯度一直很小,这表明这是一个平坦、缓和的平原,我们可以更大胆地迈出更大的步子。

这便是一系列​​自适应优化器​​背后的核心洞见。它们为每个参数赋予了各自的、在训练过程中不断演化的个人学习率。为了量化梯度的“历史大小”,我们需要一个稳健的度量。原始梯度本身并不合适,因为它有正有负;-100 的梯度和 +100 的梯度一样大。自然的选择是使用梯度的平方。

像 ​​RMSProp​​(Root Mean Square Propagation,均方根传播)这样的自适应方法,为每个参数维护一个梯度平方的​​指数衰减移动平均​​。你可以把它想象成对每个方向上地形“颠簸度”的持续记录,其中最近的测量值权重更大。我们称在步骤 ttt 时的这个运行平均为 vtv_tvt​。每个参数的更新规则因此变得异常直观:

参数更新∝梯度vt+ϵ\text{参数更新} \propto \frac{\text{梯度}}{\sqrt{v_t + \epsilon}}参数更新∝vt​+ϵ​梯度​

在这里,ϵ\epsilonϵ 只是一个用来防止除以零的极小值。其效果正如我们所期望的:如果历史平方梯度(vtv_tvt​)很大,那么有效的学习率就很小。如果它们很小,那么有效的学习率就很大。当这种自适应策略被应用于之前的各向异性峡谷问题时,它大放异彩。它自动地减小了跨越陡峭崖壁的步长,同时增大了沿着平缓谷底的步长,以单一全局学习率永远无法达到的效率导航至最小值。

同样的机制也有助于应对其他险峻地貌,比如陡峭的悬崖。在一个大部分平坦、但突然出现断崖的高原上,一个简单的优化器可能会迈出一步大步,直接飞过边缘。而一个自适应优化器,在遇到悬崖边缘的巨大梯度时,会看到其二阶矩估计 vtv_tvt​ 飙升,这会立即对该步的学习率“踩下刹车”,从而实现一个更加谨慎和可控的下降。

Adam:完整的机械装置

​​自适应矩估计 (Adam)​​ 优化器是这些思想的美妙综合体,并已成为现代深度学习的主力。Adam 不仅保留了二阶矩(vtv_tvt​,梯度的平方)的运行平均;它还保留了​​一阶矩​​(mtm_tmt​,梯度本身)的运行平均。

  • ​​一阶矩(动量):​​ 这类似于物理上的动量。我们不只是跟随当前的梯度,而是使用过去梯度的平滑平均值。这有助于优化器在一致的方向上加速,并抑制震荡,就像一个重球比一个轻球滚动得更平稳一样。这个一阶矩 mtm_tmt​ 告诉我们应该往哪里走。

  • ​​二阶矩(自适应缩放):​​ 这就是我们已经讨论过的“颠簸度”度量。它根据地形的历史波动性告诉我们,在每个方向上应该走多远。

Adam 将这两个元素结合成一个单一、强大的更新规则。一个深刻的理解方式是将 Adam 视为一种​​预处理梯度下降​​。在经典优化中,“预处理器”是一个可以“扭曲”优化曲面的矩阵,将一个困难、拉长的峡谷转变成一个简单、圆形的碗,使得寻找最小值变得轻而易举。从某种意义上说,Adam 在每一步都即时构建了自己的对角预处理器。这个有效预处理器的条目,以及它所近似的底层 Hessian(曲率)矩阵,是由其一阶和二阶矩估计的比率构建的。这是一个非凡的机械装置,它能隐式地学习并抵消损失曲面的局部曲率。

Adam 的最后一个精妙之处是​​偏差校正​​。因为移动平均 mtm_tmt​ 和 vtv_tvt​ 初始化为零,它们在训练初期会偏向于零。Adam 包含一个简单的、通过解析推导出的校正因子,该因子可以消除这种初始化偏差,确保自适应率从第一步起就可靠。

适应的细微差别:一系列改进

Adam 功能强大,但它并非万能灵药。它的行为一直是深入研究的对象,揭示了其微妙的失效模式,并催生了新一代更稳健的算法。

短记忆的危险:AMSGrad

Adam 的二阶矩估计 vtv_tvt​ 是一个指数移动平均,这意味着它的记忆相对较短。优化器有可能在穿过一个梯度很大的区域后,累积了较大的 vtv_tvt​,然后进入一个梯度较小的平坦区域。当它看到这些小梯度时,移动平均 vtv_tvt​ 可能会开始减小。这是危险的:随着 vtv_tvt​ 变小,有效学习率反而会增大。优化器可能会“忘记”它过去见过的崎岖地形,突然迈出巨大且不稳定的步伐,可能使其之前的进展付诸东流。在一些已被证明的情况下,这甚至可能导致不收敛。

在名为 ​​AMSGrad​​ 的算法中提出的修复方案非常简单:给二阶矩一个永久的记忆。我们不只是使用当前的移动平均 vtv_tvt​,而是使用训练至今所见过的该平均值的最大值。通过确保这个分母项永远不会减小,AMSGrad 保证了有效学习率也是非递增的,这恢复了标准 Adam 有时可能缺乏的理论收敛性质。

正则化的重新构想:AdamW

当引入​​权重衰减​​(L2L_2L2​ 正则化)时,出现了另一个微妙之处。这是一种通过惩罚较大的参数值来防止过拟合的标准技术。在简单的梯度下降中,向损失函数添加 L2L_2L2​ 惩罚项,在数学上等同于在每一步都将权重缩小一个很小的因子。

然而,在 Adam 中,这种等价性被打破了。因为 L2L_2L2​ 惩罚项的梯度(也就是权重向量本身)被加到了数据损失的梯度上,它也受到了 Adam 自适应缩放的影响。这意味着具有较大历史梯度(因而有较大 vtv_tvt​)的权重所受到的收缩比具有较小历史梯度的权重更少。这通常不是我们期望的行为,并且可能使正则化效果变差。

解决方案是 ​​AdamW​​,它将权重衰减与梯度更新解耦。它仅基于数据损失执行自适应的 Adam 步骤,然后在一个单独的步骤中,应用“纯粹”的权重衰减——即对所有权重进行统一的收缩。这恢复了权重衰减的初衷,并已被证明在实践中能带来更好的泛化能力。这种解耦在现代网络中尤其重要,因为这些网络使用了像​​批量归一化​​这样的技术,其中权重缩放和归一化层之间的相互作用进一步复杂化了传统正则化的效果。

良好习惯依然重要

最后,有人可能会问,自适应的强大能力是否让​​特征标准化​​等传统的良好数据预处理方法变得过时了。毕竟,如果优化器能适应不同的尺度,为什么还要事先对它们进行归一化呢?虽然 Adam 对特征尺度不佳的鲁棒性确实远超简单梯度下降,但它并非完全不变。从一个条件更好的问题开始——即所有特征都在相似的尺度上——仍然有帮助。这为优化器提供了一个先发优势,使得矩估计能更快地收敛到适当的值,并最终加速训练。

从一个简单的滚下山坡的球,我们的旅程引领我们来到了一个精密的机械装置。它结合了动量来确定方向,并利用对地形历史颠簸度的深刻记忆来不断微调其在每个维度上的速度。它经过改进,能够处理其自身的内部偏差,记住长期的危险,并与其他学习系统部分清晰地交互。自适应优化器的故事是一个美丽的例子,它展示了在机器学习中,我们不是通过强加僵化的规则来取得进步,而是通过设计能够聆听、记忆和适应它们试图征服的复杂、不断变化的地形的算法。

应用与跨学科联系

在我们迄今的旅程中,我们已经剖析了自适应优化器的内部工作原理,窥探了动量和逐参数缩放的精妙机制。我们已经了解了它们如何工作。现在,我们要提出一个更令人兴奋的问题:我们能用它们做什么? 事实证明,这些算法不仅仅是抽象的数学奇观。它们是现代人工智能的主力,是推动医学、气候科学、机器人等领域发现的精调引擎。当我们走出理论的洁净室,步入纷繁而美丽的现实世界时,我们将看到我们所学的原理如何成为解决当今一些最引人入胜、最重要问题的强大工具。

大海捞针:寻找稀疏但关键的信号

想象一下,你是一名医生,试图根据电子健康记录来预测病人的风险。这是一张包含数千个特征的巨大表格。大多数特征很常见,但少数几个——对应于一种罕见的遗传标记或不常见的实验室结果——可能至关重要。或者想象一个人工智能体正在学习玩一个复杂的游戏,其中大多数行动都很普通,但一个单一、罕见的招式却是获胜的秘诀。在这两种情况下,我们都面临着一个稀疏性问题:关键信息是“大海捞针”,是一个发生频率极低、其信号很容易被淹没的事件。

像随机梯度下降(SGD)这样对所有参数使用单一学习率的简单优化器,就像一个粗糙的筛子;它往往会错过这些稀疏的信号。因为与稀疏特征相关的参数的梯度在大多数时候都是零,它们接收到的更新非常少,学习得异常缓慢。

这正是自适应优化器展现其第一丝魔力的地方。通过为每个参数维护一个平方梯度的历史记录,它们可以为每个参数提供一个个性化的学习率。对于一个与稀疏特征相关的参数,其历史梯度总和(Adam中的 vtv_tvt​ 项或 Adagrad 中的累加器)增长得非常缓慢。因此,优化器有效地提高了它的学习率,就像一个放大镜,专注于那些不频繁但可能至关重要的更新。这使得模型能够迅速学习到罕见基因或制胜招式的重要性,而这是“一刀切”方法几乎不可能完成的壮举。同样的原理也是现代强化学习的基石,在强化学习中,智能体通常必须从仅在经过一长串特定动作序列后才会出现的稀疏奖励中学习。

驯服巨兽:在高维世界中导航

现代机器学习的问题往往具有惊人的规模和复杂性。考虑一下在千兆像素级的病理切片中检测癌症转移,或者从机载LiDAR捕获的巨大三维点云中分割建筑物和植被。我们用来解决这些问题的模型可以拥有数亿个参数,创造出维度难以想象的损失曲面,其中充满了险恶的峡谷、陡峭的悬崖和广阔的平坦高原。

在这个曲面中导航是一项艰巨的挑战。过高的学习率可能导致优化器“越过”损失曲面中的狭窄山谷,导致剧烈振荡甚至发散。这在训练早期尤其如此,此时模型初始化不佳,曲面的曲率可能极高。相反,过低的学习率可能导致进展极其缓慢。

驯服这些高维巨兽的最成功策略涉及一系列技术的复杂协同。我们不只是使用一个自适应优化器,而是将其与一个智能的学习率调度策略配对。一种常见且高效的方法是以​​线性预热​​开始,从一个非常小的值逐渐增加学习率。这使得模型在开始时能够采取小而稳定的步骤,避免在优化器内部矩估计尚不可靠时发生灾难性的跳跃。预热之后,像​​余弦退火​​这样的调度策略接管,在剩余的训练时间内平滑地降低学习率。这种逐渐减速有助于优化器稳定地进入一个宽而“平坦”的最小值区域,这与能更好地泛化到新未见数据的模型密切相关 [@problem_g_id:4321303]。

此外,像 AdamW 这样的现代优化器采用​​解耦权重衰减​​,这是一种微妙但强大的修改,它将正则化步骤与自适应梯度缩放分离开来。这已被证明可以通过应用一种更一致、更可预测的正则化形式来产生更好的模型。当面临梯度爆炸——这种现象可能由某些网络架构引起——时,从业者还可以采用​​梯度裁剪​​,这是一种简单粗暴但有效的方法,用于限制任何单次更新步骤的幅度,以确保稳定性。正是这种自适应性、调度和精细正则化的结合,使我们能够成功地训练当今的庞大模型。

与自然的对话:物理信息优化

这些思想最深远的应用或许在于机器学习与自然科学的交叉领域。在这里,我们不仅仅是将模型拟合到数据上;我们正试图教会神经网络物理定律本身。在气候科学和海洋学等领域,研究人员正在构建​​物理信息神经网络(PINNs)​​,这些网络学习求解控制流体动力学、热传递和其他自然现象的偏微分方程(PDEs)。

这项工作揭示了物理世界与优化世界之间一个美丽而深刻的联系。许多物理系统中的一个关键挑战是​​刚性​​(stiffness):即在截然不同的时间尺度上发生的过程共存。例如,在大气中,快速移动的重力波可能在几分钟的尺度上演变,而大规模的天气模式则在数天的尺度上演变。

这种物理上的刚性直接转化为一个数学上病态的优化问题。损失函数中对应于快速动态的项会产生比来自慢速动态的项大得多的梯度。即使是自适应优化器,如果简单应用也会失败。优化器会沉迷于满足快速尺度的物理规律,整个训练过程被这些巨大、不平衡的梯度所主导,从而无法学习到我们关心的慢速、大规模行为。

解决方案不是寻找一个更好的黑盒优化器,而是与自然进行对话。通过利用我们对底层物理的知识——对方程进行仔细的无量纲化,或基于能量等物理不变量来缩放损失项——我们可以“预处理”这个问题。我们改变了损失曲面,抚平了极端的曲率,并平衡了来自快速和慢速尺度的梯度贡献。只有这样,自适应优化器才能有效地完成其工作。这是一个强有力的科学循环论证:我们对物理世界的理解帮助我们设计更好的学习系统,而这些学习系统反过来又帮助我们更好地理解物理世界。

系统的艺术:优化复杂的学习机器

随着我们的人工智能系统变得越来越复杂,优化挑战也超越了单个模型,变成了系统性问题。考虑一个医学领域的多任务学习系统,其中一个共享的“编码器”网络处理患者数据,然后将其输入到几个“头”中,每个头专门用于不同的任务,如分类、分割或风险预测。不同的任务可能在不同的数据上以不同的频率进行训练。一个适用于频繁更新的编码器的学习率调度,对于一个只偶尔更新的头来说是完全错误的;它会导致其学习率衰减得过快。解决方案不是将其视为一个优化问题,而是将其视为一个优化问题的系统,为每个异步更新的组件维护独立的优化器状态和调度策略。

这种系统性观点在​​联邦学习​​中更为关键。在这种范式下,模型在多个机构(如医院)之间协同训练,而无需共享底层的敏感数据。在这里,服务器必须聚合来自客户端的更新,而这些客户端的本地数据分布并不相同。这种“客户端异质性”会在聚合的梯度中引入系统性偏差或​​漂移​​,将全局模型从真正的最优点拉开。此外,聚合更新中的噪声通常是​​各向异性​​的——在某些方向上比其他方向更强。服务器端的自适应优化器是应对这一挑战的重要工具,因为它们的逐参数缩放可以抵消各向异性噪声。联邦优化的理论帮助我们理解,虽然我们可能无法完全消除漂移,但我们可以使用正确的优化器收敛到解的一个小邻域内,该邻域的大小由异质性程度决定。

最后的转折:工具是否塑造了发现?

我们已经看到自适应优化器是寻找解决方案不可或缺的工具。但值得我们停下来思考一个更具哲学性的问题:我们选择的工具是否会影响我们的发现?

考虑一下​​神经架构搜索(NAS)​​领域,其目标是为给定任务自动发现最佳模型架构。我们可能会通过对每个候选架构进行短暂训练并比较其性能来评估数十个架构。这里的转折在于,“最佳”架构可能取决于用于训练它的优化器。一个使用 Adam 训练时表现最佳的架构,在使用 SGD 训练时可能就不是最优的,反之亦然。架构的排名本身在不同优化器选择下可能是不稳定的。

这是一个令人谦卑而深刻的认识。它表明可能并不存在一个绝对的、柏拉图式的“最佳模型”等待被发现。我们找到的解决方案不仅是问题曲面的产物,也是我们遍历它的路径的产物。我们的优化器不仅仅是被动的载具;它们是发现过程中的积极参与者,其固有的偏见和动态塑造了我们最终获得的解决方案。

从在医疗数据中寻找最微弱的信号,到学习海洋的规律,从在全球范围内协调分布式学习,到质疑发现本身的性质,自适应优化器已经证明,它们远不止是对梯度下降的简单升级。它们是一项基础性的使能技术,是现代科学工具箱中的关键部分,使我们能够在一个日益复杂的世界中探索、理解和构建。