概述
这很重要,因为它使深度模型的训练速度更快,并且比普通梯度下降更不挑剔。
深入探讨
Adam(自适应矩估计)由 Kingma 和 Ba 在 2014 年提出,结合了两种想法。首先,动量:它保持过去梯度(第一时刻)的指数衰减平均值,因此更新在一致的方向上构建速度。其次,每参数缩放:它跟踪梯度平方的平均值(二阶矩),并将每个步骤除以该值的平方根,因此具有大且噪声梯度的参数采用较小的步长,而很少更新的参数则采用较大的步长。这种适应性意味着您通常可以在整个网络中使用一种学习率。 AdamW 的一个变体将权重衰减与梯度更新解耦,并已成为训练大型 Transformer 和语言模型的默认设置。
现实世界的实施
训练 GPT 和 Llama 等大型语言模型,它们使用 AdamW 作为标准优化器。
仅使用默认的 Adam 学习率在自定义数据集上微调预训练的图像分类器(例如 ResNet)。
训练图像生成器背后的扩散模型,例如稳定扩散。
在位和字节等库中运行 8 位 Adam,以将优化器状态适应有限的 GPU 内存。
Adam 和自适应优化器的未来
Adam 和 AdamW 仍然占据主导地位,但研究正在提高万亿参数模型的效率,在该模型中,每个权重存储两个额外值的成本很高。诸如 Adafactor、8 位 Adam 之类的轻内存变体,以及诸如 Lion(仅使用基于符号的动量)和 Sophia 等较新的优化器,旨在以更少的内存或更快的收敛速度来匹配 Adam 的质量。预计专门针对分布式、低精度训练进行调整的自适应优化器将不断发展。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
Adam 和自适应优化器是什么?
Adam 是大多数现代神经网络背后的主力优化器,自动调整每个参数的单独学习率。这很重要,因为它使深度模型的训练速度更快,并且比普通梯度下降更不挑剔。
Adam 对每个参数跟踪哪两个量?
Adam 为每个参数保持梯度(一阶矩)和梯度平方(二阶矩)的指数衰减平均值。
为什么 Adam 对其矩估计应用偏差校正?
m 和 v 都初始化为零,因此早期估计值偏低;除以 (1 - beta^t) 可以纠正这个问题。
Adam 和 AdamW 之间的主要区别是什么?
AdamW 将权重衰减直接应用于权重,而不是将其混合到自适应梯度项中,这提高了 Transformer 的泛化能力。
小 epsilon 项在 Adam 更新规则中起什么作用?
将 Epsilon(大约 1e-8)添加到分母中,以便具有接近零平方梯度平均值的参数不会导致爆炸。
为什么亚当经常被描述为“适应性强”?
通过除以每个参数的梯度平方平均值的平方根,Adam 缩放每个参数的步长,而不是使用一个全局值。