Adam: A Method for Stochastic Optimization

2014 单 GPU 深度学习 被引用 85k 次
下载 PDF

Adam: A Method for Stochastic Optimization - 中文版

英文原始依据卡片:adam_2014.md

状态:已翻译。

元数据

  • Slug: adam_2014
  • 年份: 2014
  • 会议: ICLR
  • 作者: Diederik P. Kingma, Jimmy Ba
  • 阅读状态: read complete
  • 计算范式: 单 GPU 深度学习
  • 主要来源: PDF抽取文本

计算设置

论文未列出具体的实验机器、GPU 型号或集群。然而,它在将 Adam 与 Sum-of-Functions Optimizer(SFO)比较时明确讨论了 GPU 内存约束:SFO 的内存需求与小批量分区数量线性相关,在 GPU 等内存受限系统上通常不可行。按项目规则,设备上下文从 2013-2014 年 GPU 加速小批量深度学习时代推断,实验涵盖 logistic regression、全连接神经网络、CNN 和 VAE 训练。

Adam 的计算设置有意保持轻量。算法 1 仅使用一阶随机梯度和逐元素向量运算:一阶矩 m、二阶原始矩 v、偏差校正以及逐参数更新。论文中良好的默认设置为学习率 0.001、beta1 0.9、beta2 0.999 和 epsilon 1e-8。实验中 logistic regression、多层全连接网络和 CNN 使用小批量大小 128。该方法为每个参数增加两个 optimizer-state 向量,但避免了曲率矩阵、存储的小批量分区或昂贵的二阶更新。

瓶颈

瓶颈是对高维随机目标进行稳定、低开销的优化。导言强调随机性可能来自随机小批量或来自 dropout regularization 等函数噪声。讨论限制在一阶方法,因为高维参数空间使得高阶优化不适用。在 GPU 时代深度学习中,一个有价值的优化器必须容忍有噪梯度、稀疏特征、非平稳目标和逐层尺度差异,同时不消耗足够内存以致挤占模型和激活的存储空间。

Adam 也针对调参成本。带动量的固定学习率 SGD 可以表现良好,但稀疏特征和各层间不同梯度尺度使单一全局学习率变得脆弱。AdaGrad 能处理稀疏梯度但可能过于保守;RMSProp 处理非平稳性但缺乏 Adam 的偏差校正。Adam 的瓶颈不是原始矩阵乘法,而是围绕密集训练循环的逐参数控制问题。

方法适配

Adam 通过使优化器状态简单、局部且可向量化来适配加速器时代的小批量训练。它维护梯度和平方梯度的指数滑动平均,然后用偏差校正估计值计算自适应逐参数步长。所有运算在参数张量上进行逐元素操作,因此它们能够干净地映射到与 backpropagation 相同的密集数组执行环境。这适合 GPU,因为额外内存在参数数量上是线性的,而额外算术相对于神经网络 forward/backward 计算而言很廉价。

偏差校正是一种计算稳定性适配。论文解释,初始化为零的滑动平均偏向零,尤其在初期以及 beta 值接近 1 时。若不校正,稀疏梯度设置可能产生非常大的早期步长并导致发散。Adam 还将 AdaGrad 的稀疏梯度行为与 RMSProp 的非平稳目标行为相结合。默认超参数降低了网格搜索负担,这一点很重要,因为优化器扫描会将模型开发消耗的总训练计算量成倍放大。

证据

摘要声明该方法计算高效、内存需求小、适用于数据或参数规模大的问题,并对有噪或稀疏梯度有效。与 SFO 的内存对比是最明确的硬件证据:SFO 内存与小批量分区线性相关在 GPU 上通常不可行,而 Adam 仅存储矩向量。实验部分随后测试了 logistic regression、多层全连接神经网络和深度 CNN,使用大模型和数据集展示实际优化行为。

对于小批量大小 128 的 MNIST logistic regression,Adam 与 Nesterov momentum 收敛速度相似,且快于 AdaGrad。对于 10,000 维 IMDB bag-of-words 稀疏特征和 50% dropout 噪声,Adam 与 AdaGrad 收敛一样快,且快于带 momentum 的普通 SGD,与稀疏梯度动机一致。对于每层 1000 个 ReLU 单元的双隐层 MNIST 网络,Adam 比 SFO 在迭代数和 wall-clock time 上进展更快;论文说明 SFO 由于曲率更新导致每次迭代慢 5-10 倍,且内存与小批量数量线性相关。对于 CIFAR-10 CNN,Adam 和 AdaGrad 初期快速降低成本,而 Adam 和 SGD 最终收敛快于 AdaGrad;文中指出 Adam 可以为不同层自适应学习率尺度,无需手动逐层调参。

历史影响

Adam 成为许多深度学习工作负载的默认优化器,因为它让有噪梯度、稀疏特征、dropout 和逐层尺度差异下的随机训练不那么脆弱。在这部计算历史中,Adam 本身不是一个设备分支;它是一种优化器,使 GPU 时代实验更易于运转。后来的 Transformer 训练继承了相同的模式:大型密集 forward/backward 传递,外加廉价的逐元素优化器更新,其代价是在极大规模下优化器状态成为主要内存对象。

局限

该论文是优化器论文,不是硬件/系统报告,因此缺少确切的设备型号和总运行时间。Adam 的两个矩向量相对于二阶方法较小,但仍是额外的逐参数状态;在后来的 LLM 规模上,这成为一个本文未涉及的 sharding 问题。该方法也未解决分布式大批量缩放、通信或激活内存。后续工作发现,优化器选择与泛化、batch size、weight decay 和架构之间存在交互,因此 Adam 的操作便利性并非最终最优准确率的普遍保证。

链接