AI的数学血脉|1847年一篇三页的论文,正在引导万亿参数”下山”
你山间迷路。雾大。看不见远处。
你不知道最低的山谷在哪里。你只知道脚下的坡度。
你往前走一小步。如果脚下变低了——方向是对的。如果变高了——方向反了。你调整。再走一步。再调整。再走一步。
几千步。几万步。几百万步之后——你到了谷底。
这就是梯度下降。
一百七十九年前,一个法国数学家发明了这个方法。不是为了爬山。是为了算一颗行星的轨道。
他叫柯西。写了三页纸。然后——就忘了。
他大概没有觉得这是什么了不起的发明。
(ps:这是本文最令人震惊的事实。1847年的柯西是当时活着的最伟大数学家之一。分析学、复变函数、偏微分方程——他的创造力像井喷。他每周给法国科学院提交一篇论文。1847年10月18日这篇——3页,标题《解联立方程组的一般方法》——只是他那个月流水线上的一件产品。他承诺”后续会详述”。后续没有出现。这篇论文被他遗忘在了自己浩瀚的著作目录里。但179年后,这篇三页纸上的方法,正在驱动地球上全部AI的训练。)
一、1847:柯西、天文轨道、和那条下山的路
先看柯西面对的问题。
他想要解一个非线性方程组。不是线性的——那种有标准的消元法。是非线性的。六个未知数。代表行星轨道的六个参数。
高斯在1801年用消元法和最小二乘法解决过类似的问题。但柯西面对的系统更复杂——方程数量多于未知数,高度非线性,传统的消元法”在任何意义上都无法执行”。
柯西的洞察力在于换了一个角度。
他说:不要把问题看作是”解方程”。把它看作是”最小化误差”。
如果你有方程u(x,y,z,…)=0,它的解就是使函数u²达到最小(零)的点。所以你不需要解方程——你只需要找函数的最小值。
怎么找?
沿着函数值下降最快的方向走。 下降最快的方向——就是负梯度方向。
(ps:事实上柯西的论文里根本没有”梯度”这个词——梯度向量是后来的数学。柯西用的是偏导数X=f’_x, Y=f’_y, Z=f’_z,…,然后说:沿-X, -Y, -Z的方向函数值会减小。但实质完全一样。柯西发现了”最速下降”的数学表述,只是当时还没有”梯度”这个名词。)
他给出了一步迭代:
x_new = x_old - θ · f’_x
y_new = y_old - θ · f’_y
…
θ是步长。柯西给了两种定θ的方法。一种是通过解一元方程找最优步长。另一种是试探——走一小步,如果函数值真的变小了,就走大一点。
这就是人类历史上第一个梯度下降算法的完整描述。
183年后。它没变过。
还是沿着负梯度方向。还是找步长。还是反复迭代。
(ps:只不过,柯西当年的”函数”可能包含6个变量。GPT-5的”函数”包含约2万亿个变量。柯西当年走一步可能要花几分钟手算。H100走一步要花几毫秒。但数学——一模一样的数学。沿着负梯度方向。走一步。再走一步。)
柯西对收敛性只是随口一提:“如果已经得到的新值不是最小值,可以继续往下走,还会找到更小的函数值……”
以他自身的严格标准——以那个证明了分析学一半定理的柯西的标准——这种”随口一提”令人惊讶。数学史家Claude Lemaréchal评论道:“这来自他那个世纪最严格的数学家之一,相当有趣。但显然,柯西没有深入思考这个问题。”
那篇承诺的”后续论文”,从未出现。
二、1951:当梯度变成了随机的
柯西之后的一百年里。梯度下降基本上只是一个教科书上的方法。
不是因为它不重要。是因为它太慢了。对于高维问题,每次迭代都要算完整的梯度——所有偏导数。100个变量,就要算100个偏导数。手工计算,这要命。
计算机改变了一切。
但真正的革命发生在1951年。
哥伦比亚大学的赫伯特·罗宾斯和他的学生萨顿·蒙罗发表了一篇论文:《随机逼近方法》。
他们的创新不是数学上的——算法的形式几乎和柯西一模一样。他们的创新是概念上的:
你不是必须用完整数据来计算梯度。
如果你只知道梯度的”带噪声的估计”——一个大致正确、但包含随机误差的方向——你仍然可以收敛。
x_{n+1} = x_n - a_n · (带噪声的梯度估计)
这就是**随机梯度下降(SGD)**的诞生。
(ps:用大白话说:柯西的梯度下降要求你每一步都精确知道”哪边是下坡”。SGD说——你不需要精确知道。你只需要大致知道。每次只看一小批数据,算一个大概的下降方向。方向有噪声、有偏差——没问题。长期来看,噪声会互相抵消。你会跌跌撞撞地走到谷底。)
这改变了游戏的规模。
以前你的训练数据越多,梯度计算就越慢。现在——SGD让你每次只看一小批数据。1000亿个训练样本?每次只看128个。然后下一步,换128个。再下一步,再换。
数据量不再限制模型大小。
1950年代,弗兰克·罗森布拉特用SGD训练了感知机——人类历史上第一个用随机梯度方法训练的神经网络。
但感知机有根本缺陷。明斯基1969年那本书判了它死刑。AI冬天来了。
SGD要等到1986年,在反向传播的翅膀上复活。
三、1986-2014:从”能训练”到”训练得很好”
1986年。鲁梅尔哈特、辛顿、威廉姆斯发表了那篇Nature论文。反向传播 + 梯度下降,证明多层神经网络可训练。
但这只是”能训练”。不是”训练得很好”。
一个问题:步长(学习率)怎么选?
太大——你跳过了最小值,在谷底左右震荡。 太小——你走得比蜗牛还慢,永远到不了。
另一个问题:每个参数共用同一个步长,公平吗?
神经网络的参数分布极其不均匀。有些参数的梯度很大,有些参数的梯度几乎为零。用同一个学习率,大梯度的参数震荡,小梯度的参数不动。
于是几代优化器接力赛开始了:
Momentum(Polyak, 1964):给梯度加”惯性”。上次往哪走,这次继续往那个方向偏。像球滚下山——越滚越快。不会被局部的小坑卡住。
AdaGrad(Duchi等, 2011):每个参数有自己的学习率。梯度大的参数走小步,梯度小的走大步。
RMSProp(Tieleman & Hinton, 2012):改进AdaGrad——学习率不会一直衰减到零。用指数移动平均代替累加。
Adam(Kingma & Ba, 2014):把所有好东西装进一个框架。
Adam的核心公式可以从字面上拆解:
Adaptive(自适应):每个参数有自己的学习率(来自RMSProp)。
Moment(矩估计):用梯度的”一阶矩”(平均值,动量)和”二阶矩”(方差,自适应缩放)。
Adam维护了两个指数移动平均:
- m:梯度的均值(“球往哪个方向滚”)
- v:梯度平方的均值(“每一步有多陡”)
然后:参数更新 = 学习率 × m / (√v + ε)
(ps:这个除法的直观含义:如果某个参数的历史梯度一直很小(v小),说明它接收到的”信号”弱——Adam给它更大的步长。如果历史梯度一直动荡(v大),说明它在震荡——Adam给它更小的步长。每个参数,被自己的历史自动调谐。)
2014年12月。arXiv上出现了一篇短短9页的论文。标题就叫《Adam: A Method for Stochastic Optimization》。
十年后。这篇论文被引用超过20万次。它是ICLR 2015的论文。2026年,它可能是深度学习历史上被使用次数第二多的数学方法——仅次于反向传播本身。
但Adam有一个隐秘的问题。
一个几乎所有人都忽视了的问题。
四、2017:一个简单的修复,改变了所有AI训练
让我们先绕一个弯。什么是”权重衰减”?
当你训练一个神经网络时,一个危险是参数变得过大。太大的参数会让模型”记住”训练数据而不是”理解”它——过拟合。权重衰减是一种经典对策:每走一步,把所有参数微微缩小一点。
在标准SGD里,权重衰减和L2正则化是等价的——你可以把它直接加到损失函数的梯度里。
但在Adam里——它们不等价。
原因在于Adam的自适应机制。L2正则化的梯度被√v除了一下。这意味着:梯度大的参数受到的权重衰减反而更小。这和权重衰减的本意完全相反。
(ps:打个比方。你规定所有人每年必须丢掉自己10%的财富。但Adam有一个”财富管理算法”:钱多的人可以少丢点,钱少的反而要多丢点。这彻底改变了”丢10%“的原始含义。这就是Adam里的L2正则化在做什么——它被自适应机制扭曲了。)
2017年11月。伊利亚·洛希洛夫和弗兰克·哈特在arXiv上发表了一篇论文:《解耦权重衰减正则化》(Decoupled Weight Decay Regularization)。
他们提出了一个极其简单的修复:
不要把权重衰减加进梯度。直接在参数更新之后,从参数本身上减去一部分。
从:
θ = θ - η · (ĝ + λθ) 改为:
θ = θ - η · ĝ - ηλθ
区别只有一步。但这意味着:权重衰减不再受自适应学习率的影响。 每个参数受到的衰减强度是统一的——就像它本来应该的那样。
他们把这个修改版叫做AdamW。
(ps:这个修复有多简单——可能不超过三行PyTorch代码。但它的效果有多显著——AdamW直接把Adam从一个”有些任务上不如SGD”的优化器变成了”几乎所有任务上最强”的优化器。一篇2018年的fast.ai博客写道:“Adam优化器的发展历程堪称过山车。它在2014年被欢呼为鲁棒性极强……然后研究发现它不如带动量的SGD……然后在2017年底获得了新的生命力。“这个修复不是理论上的革命——它是一个工程上的精确手术。把一件之前被笨拙地耦合在一起的事情解耦了。)
2019年。AdamW在ICLR正式发表。
2020年之后。GPT-3、LLaMA、Claude、Gemini、Qwen、DeepSeek——世界上每一个大语言模型的训练,都在使用AdamW。
五、2026:万亿参数的下山路
现在。
当一个拥有1750亿参数(或更多)的模型开始训练时——前向传播计算输出,反向传播计算梯度,然后——
AdamW出场。
它对1750亿个参数中的每一个,维护两个数字:m(历史梯度的均值)和v(历史梯度平方的均值)。
然后它对1750亿个参数中的每一个,执行同一条指令:
θ_new = θ_old - η · m̂ / (√v̂ + ε) - ηλθ_old
这条指令在柯西1847年的论文里没有。在罗宾斯和蒙罗1951年的论文里没有。在1986年Nature论文里也没有。
但它是前面所有发现的终极合成:
- 柯西的梯度方向(1847):往下降最快的方向走
- 罗宾斯-蒙罗的随机逼近(1951):用带噪声的梯度就够了
- 波利亚克的动量(1964):像球一样滚下山,有惯性
- RMSProp的自适应(2012):每个参数有自己的步长
- Adam的矩估计(2014):把动量和自适应装进一个优雅的框架
- AdamW的解耦(2017):让权重衰减重新变得合理
六个思想的叠加。一百七十九年的追索。
而这一切——从1847年10月18日巴黎科学院那个下午开始——柯西没有觉得那是他最重要的发明。 他用三页纸打发了它,承诺后续会详述,然后——再也没有回来。
(ps:1847年的柯西,正在同时推进十几个研究方向。偏微分方程、弹性力学、光的偏振。他那年发表了超过25篇论文。在这25篇里——梯度下降大概是他最”不重要”的一篇。他为自己的分析学大厦感到骄傲。他为复变函数理论感到骄傲。他为”连续函数序列的极限一定是连续的吗?“这种问题感到兴奋。而”解方程组的一个小技巧”——不值得再写一篇。他不知道。他不知道一百七十九年后,这个小技巧成了人类建造过的最复杂系统——大语言模型——唯一的核心优化算法。)
六、上山的人,下山的路
从1847年到2026年。从柯西用偏导数解行星轨道,到AdamW驱动万亿参数的AI训练——梯度下降的思想从未改变。
改变的只有”可以这样做了”的规模。
1847年:6个变量的函数。手工计算。 1951年:可以容忍噪声的梯度。理论上可以处理任意维度。 1986年:可以在神经网络上跑了。几十个参数。 2014年:Adam。可以在深度学习上跑了。几百万个参数。 2026年:AdamW。万亿参数。整座山。
这可能是这篇文章最核心的隐喻:
下山的路,柯西在1847年就找到了。但人类花了一百七十九年,才造出可以在这条路上跑的车。
1847年10月18日。巴黎。柯西面对台下昏昏欲睡的院士们,花了十分钟宣读完这篇三页的小论文。没有人提问。柯西走下讲台,回去继续写他的复变函数。他承诺的”后续论文”从未出现。179年后,这篇三页纸上的方法,是地球上全部AI训练的唯一引导路径。只不过,柯西当年那座”山”的维度是六。而今天这座山的维度——是一千七百五十亿。
下一篇预告:《AI的数学血脉|贝叶斯定理:死去200年才被理解的遗稿》——第三辑(概率论)开篇。一个18世纪的英国牧师。一篇被朋友从遗稿中发现的论文。一个如今ChatGPT选择每一个词时都在遵守的等式。