技术指南

Adam 和自适应优化器

Adam 是大多数现代神经网络背后的主力优化器,自动调整每个参数的单独学习率。

阅读时间:2分钟最后更新

概述

It matters because it makes training deep models faster and far less finicky than plain gradient descent.

深入探讨

Adam(自适应矩估计)由 Kingma 和 Ba 在 2014 年提出,结合了两种想法。首先,动量:它保持过去梯度(第一时刻)的指数衰减平均值,因此更新在一致的方向上构建速度。其次,每参数缩放:它跟踪梯度平方的平均值(二阶矩),并将每个步骤除以该值的平方根,因此具有大且噪声梯度的参数采用较小的步长,而很少更新的参数则采用较大的步长。这种适应性意味着您通常可以在整个网络中使用一种学习率。 AdamW 的一个变体将权重衰减与梯度更新解耦,并已成为训练大型 Transformer 和语言模型的默认设置。

技术洞察

Adam 为每个参数维护两个运行平均值:m(梯度)和 v(梯度平方),并用衰减率 beta1(通常为 0.9)和 beta2(通常为 0.999)进行更新。因为两者都从零开始,所以它们通过除以 (1 - beta^t) 进行偏差校正。更新为 theta = theta - lr * m_hat / (sqrt(v_hat) + epsilon),其中 epsilon(大约 1e-8)可防止被零除。这就是为什么 Adam 与普通 SGD 相比几乎不需要调整学习率。

战略影响

成本与预算

多年来,架构决策决定着性能和运营成本。

更清晰的判决

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

质量控制

更好的工程选择可以减少生产中的可靠性事故。

Adam 和自适应优化器的未来

Adam 和 AdamW 仍然占据主导地位,但研究正在提高万亿参数模型的效率,在该模型中,每个权重存储两个额外值的成本很高。诸如 Adafactor、8 位 Adam 之类的轻内存变体,以及诸如 Lion(仅使用基于符号的动量)和 Sophia 等较新的优化器,旨在以更少的内存或更快的收敛速度来匹配 Adam 的质量。预计专门针对分布式、低精度训练进行调整的自适应优化器将不断发展。

现实世界的实施

训练 GPT 和 Llama 等大型语言模型,它们使用 AdamW 作为标准优化器。

仅使用默认的 Adam 学习率在自定义数据集上微调预训练的图像分类器(例如 ResNet)。

训练图像生成器背后的扩散模型,例如稳定扩散。

在位和字节等库中运行 8 位 Adam,以将优化器状态适应有限的 GPU 内存。

风险与防护栏

优化一项基准测试可以隐藏更广泛的系统弱点。

基础设施和维护成本常常被低估。

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

2

在实际负载和数据条件下进行基准测试。

3

仪器监控错误、漂移和用户影响。

4

在扩展之前准备回滚和事件响应路径。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Adam and Adaptive Optimizers quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

ZeRO 和分片优化器

常见问题

What is Adam and Adaptive Optimizers?

Adam 是大多数现代神经网络背后的主力优化器,自动调整每个参数的单独学习率。这很重要,因为它使深度模型的训练速度更快,并且比普通梯度下降更不挑剔。

Adam 对每个参数跟踪哪两个量?

Adam 为每个参数保持梯度(一阶矩)和梯度平方(二阶矩)的指数衰减平均值。

为什么 Adam 对其矩估计应用偏差校正?

m 和 v 都初始化为零,因此早期估计值偏低;除以 (1 - beta^t) 可以纠正这个问题。

Adam 和 AdamW 之间的主要区别是什么?

AdamW 将权重衰减直接应用于权重,而不是将其混合到自适应梯度项中,这提高了 Transformer 的泛化能力。

小 epsilon 项在 Adam 更新规则中起什么作用?

将 Epsilon(大约 1e-8)添加到分母中,以便具有接近零平方梯度平均值的参数不会导致爆炸。

为什么亚当经常被描述为“适应性强”?

通过除以每个参数的梯度平方平均值的平方根,Adam 缩放每个参数的步长,而不是使用一个全局值。