Adam Converges Without Any Modification On Update Rules

本文证明了在固定优化问题后通过调整与问题及批量大小相关的超参数(特别是增大β2\beta_2并满足β1<β2\beta_1 < \sqrt{\beta_2}),Adam 优化器能够收敛,从而揭示了其在(β1,β2)(\beta_1, \beta_2)参数空间中的相变机制,并为实际训练提供了理论指导。

Yushun Zhang, Bingran Li, Congliang Chen, Zhi-Quan Luo, Ruoyu Sun

发布于 2026-03-03
📖 1 分钟阅读🧠 深度阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文解决了一个困扰人工智能领域多年的“悬案”:为什么 Adam 算法(目前最流行的 AI 训练工具)在理论上被证明会“跑飞”(发散),但在实际应用中却总是表现良好,甚至能训练出像 Llama、GPT 这样的大模型?

简单来说,作者发现:理论家们和实际工程师们玩的是两套不同的规则。

下面我用几个生动的比喻来解释这篇论文的核心发现。

1. 之前的困惑:为什么理论说“会翻车”,实际却“很稳”?

想象一下,Adam 算法是一个开车的人,而我们要训练 AI 模型就像是在开车去目的地

  • 理论界的担忧(Reddi 等人的发现):
    以前的理论家(Reddi 等人)做了一个实验:他们先选定了“油门和刹车”的参数(β1,β2\beta_1, \beta_2),然后专门去找一条最刁钻、最坑爹的路(构造一个特定的数学问题),结果发现车确实开翻了(发散)。

    • 比喻: 就像有人先定好“车速必须是 100 码”,然后专门找了一个全是急转弯的赛道,证明“在这个速度下,这辆车一定会翻”。
  • 实际界的困惑:
    但是,现实中的工程师们(训练大模型的人)做法完全不同。他们是先定好路(数据集和问题),然后再去调整车速和方向盘(调整参数 β1,β2\beta_1, \beta_2)。

    • 比喻: 工程师们说:“我先定好要去北京(固定问题),然后我会根据路况调整车速。只要我调得对,车就能稳稳开到。”

这篇论文的核心发现就是: 理论家们之前的“翻车”结论,是因为他们先定参数再找路,这是一种“作弊”的测试方法。而在先定路再调参的真实场景下,Adam 只要参数调对了,是绝对安全的,根本不会翻车。

2. 核心发现:参数的“生死线”

作者通过数学证明,在参数空间(β1\beta_1β2\beta_2 的二维平面)上画出了一条**“生死线”**(Phase Transition)。

  • β2\beta_2 是“惯性”的关键:
    想象 β2\beta_2 控制着车的惯性记忆

    • 如果 β2\beta_2 太小(惯性不足): 就像车在冰面上,稍微有点风吹草动(数据噪声),车就会失控乱窜,最后冲出悬崖(发散到无穷大)。
    • 如果 β2\beta_2 足够大(惯性充足): 车就像在高速公路上,虽然路面有颠簸,但巨大的惯性让车身非常稳,能平滑地驶向目的地(收敛)。
  • β1\beta_1 是“方向修正”:
    只要 β2\beta_2 足够大(车很稳),β1\beta_1(方向修正)可以在一个很大的范围内随意调整,车都能开稳。

结论: 只要把 β2\beta_2 调得足够大,Adam 就能保证收敛。这解释了为什么大家默认设置 β2=0.999\beta_2=0.999 时,模型训练得那么好。

3. 一个反直觉的“秘密”:批次大小(Batch Size)的影响

这是论文最精彩、最实用的部分。作者发现,这条“生死线”不是固定的,它取决于你一次看多少数据(Batch Size)

  • 比喻:
    • 小批量(Batch Size 小): 就像你每次只透过一个小窗户看路况,视野很窄,噪声很大,车很容易晃。这时候,你需要**更大的惯性(更大的 β2\beta_2)**来稳住车身,防止翻车。
    • 大批量(Batch Size 大): 就像你站在高塔上俯瞰全景,路况看得很清楚,噪声很小。这时候,惯性可以小一点(β2\beta_2 可以小一点),车也能开稳。

论文给出的建议:
如果你发现训练效果不好,或者模型“跑飞”了,不要急着换算法。试着β2\beta_2 调大(比如从 0.99 调到 0.999 甚至更高),特别是当你使用小批量训练时。这就像在颠簸的路上,把车的悬挂调硬一点,或者把惯性调大一点,车反而更稳。

4. 总结:为什么这篇论文很重要?

  1. 洗清了冤屈: 它证明了原始的 Adam 算法(没有修改任何公式)在理论上是安全的,只要参数选对。之前那些“必须修改 Adam"的变体(如 AMSGrad),在很多时候可能并不是必须的。
  2. 给出了“操作手册”: 以前大家调参靠“玄学”或经验。现在有了理论指导:“小批量训练时,务必把 β2\beta_2 调大”
  3. 解释了大模型的成功: 为什么现在的 LLM(大语言模型)训练这么成功?因为大家无意中(或者有意地)使用了较大的 β2\beta_2 和合适的参数组合,正好跨过了那条“生死线”,进入了安全区。

一句话总结:
Adam 算法并没有“坏掉”,它只是需要正确的“驾驶方式”。只要根据路况(数据量)把“惯性”(β2\beta_2)调得足够大,它就能稳稳地把你带到目的地,不需要任何额外的改装。

在收件箱中获取类似论文

根据您的兴趣定制的每日或每周摘要。Gist或技术摘要,使用您的语言。

试用 Digest →