AI的数学血脉|一条被人遗忘了三百年的规则,正在驱动地球上所有AI
微积分有很多著名的结果。
微积分基本定理——牛顿和莱布尼茨为它打了帝国级别的战争。
中值定理——柯西和拉格朗日为它建了整座分析学大厦。
泰勒展开——函数的”DNA测序”,把任何光滑函数拆成无穷多项式。
但这些都不是你每次调用 loss.backward() 时,PyTorch后端运行的数学。
你运行的是链式法则。
微分学里最不起眼的那条规则。不起眼到欧拉——写过十几本分析学教材的人——从未在任何一本书里专门陈述过它。
不起眼到大多数微积分学生背完dy/dx = dy/du · du/dx,就把它当成了常识,永远不会再想第二遍。
(ps:链式法则在微积分教材里的待遇,大致相当于乘法口诀表在数学教材里的待遇。人人都知道3×7=21,不会有人觉得这是一条”定理”。链式法则在数学史上恰好经历过同样的命运——它被使用了100多年,从来没有被”发现”,从来没有被”证明”,它只是”大家都知道的事实”。)
但今天,就是这个不起眼的法则——驱动着地球上每一块GPU上运行的每一轮训练。
它被反复调用万亿次。它压缩图像。它生成文本。它解码蛋白质。它驾驶汽车。
1676年莱布尼茨在一篇手稿里第一次写下它的时候——还算错了一个符号——他不会想到,这条规则在三百年后,将是一个十万亿美元产业最底层的数学引擎。
一、一条”不值得被陈述”的规则
故事的起点已经在上一篇里讲了。莱布尼茨发明了微积分的好符号。dy/dx。积分号∫。
其中有一个隐形的后果:链式法则在莱布尼茨的符号里太”自然”了。
如果你接受dy/dx表示”y对x的无穷小变化率”,那么:
dy/dx = dy/du · du/dx
这件事看起来就像在说”把du消掉”。它不像一个需要证明的定理。它像一个自动成立的语法。
(ps:这也是牛顿符号输掉的原因之一。用ẋ来表示,链式法则是什么?你得写成 ẋ = (df/dg) · ġ——但你没法在牛顿的点记号里写df/dg!你只能口头描述”一个变量的流数是它对另一个变量的流数乘上那个变量对时间的流数”。这太绕了。莱布尼茨的dy/dx——链式法则就是视觉上的约分。记号本身就包含了逻辑。)
所以,在接下来的120年里——从1676到1797——没有一个数学家觉得有必要”陈述”链式法则。
欧拉。最伟大的分析学家。写了整整一个书架的微积分教材。每一本都在用链式法则。但没有一本把它当作一条独立的定理写下来。
1696年。洛必达出版人类第一本微积分教科书《无穷小微积分》。他在书里到处使用链式法则来计算导数。但他只是”使用”——没有陈述,没有命名,没有证明。
(ps:你想象一下。微积分史上大多数规则的命运是”被发现→被命名→被争论→被证明→进入教科书”。链式法则的命运是”一直就在那里,太明显了以至于没人想到要给它取一个名字”。)
直到1797年。拉格朗日。
在《解析函数论》(Théorie des fonctions analytiques)的第31节,拉格朗日写下了人类历史上第一个”现代版”链式法则。他引入了一个新概念:“函数之函数”(fonction de fonction)。今天的”复合函数”。
又过了26年——1823年——柯西在他著名的《无穷小微积分讲义》中给出了链式法则的严格形式。他用极限语言代替了无穷小量。这是19世纪分析学”严格化运动”的一部分:戴德金、魏尔斯特拉斯、黎曼——他们要把所有微积分定理重新证明一遍,这一次用ε-δ语言。
链式法则通过了考试。从此被放进教科书,在”复合函数求导”的标题下,安安静静地待了两百年。
没有任何人预感到它会成为人类历史上最重要的算法。
二、1970:反向传播的幽灵
现在把时间快进到二十世纪。
1960年代。NASA在研究火箭轨迹控制。他们需要计算一个复杂的多变量函数的梯度——输入是数百个控制参数,输出是火箭的最终位置。传统的数值方法太慢。逐参数”试探”太笨。
答案是什么?把链式法则倒过来用。
在正向计算中,你从输入开始,一层层计算中间变量,最后得到输出。
在反向传播中,你从输出开始,一层层地计算偏导数,沿着计算图往回推。
每往回走一步,你用的就是——dy/dx = dy/du · du/dx。链式法则。递归地应用。
你可以同时算出所有参数的梯度。不是一次一个。而是一次,全部。
1970年,赫尔辛基大学。一个叫塞波·林纳因马的研究生,在他硕士论文里,把这个方法写成了算法。他还写了一段FORTRAN代码——人类历史上第一个反向传播的计算机实现。
他没有将它用于神经网络。他的语境是通用的自动微分。
在他的论文里,这个方法叫 “自动微分的反转模式”(reverse mode of automatic differentiation)。
四个字:反向传播。
(ps:请注意这个细节。我们今天说PyTorch、TensorFlow的”autograd”——autograd这个词本身就来自automatic differentiation。而automatic differentiation的灵魂——反转模式——在1970年就已经被写成FORTRAN代码了。1970年。人类还没有C语言。Unix刚刚诞生。阿帕网只有四个节点。1969年的登月记忆还新鲜。一个芬兰研究生在这种环境下写出了反向传播的可运行实现。)
三、1974:一个试图数学化弗洛伊德的心理系学生
四年后。哈佛大学。
保罗·沃伯斯正在写他的博士论文。
他的专业。不是计算机科学。不是数学。是社会心理学。
他想做一件事:把弗洛伊德的精神分析理论变成数学模型。弗洛伊德说,人的行为由”心理能量”驱动,这种能量在自我、本我、超我之间流动。
沃伯斯觉得——这听起来像一个网络。节点是心理结构。边是能量的流动。你需要一种方法来”调谐”这个网络的连接强度,让它产生符合观察的行为。
他开始翻控制论的文献。在NASA的火箭轨迹算法里——他找到了反向传播。
(ps:火箭→弗洛伊德。这是所有计算机科学史中最古怪的一条思想传播路径。NASA的火箭轨迹控制算法→哈佛社会心理学博士论文→神经网络。中间没有任何一个步骤在理性上是”合理”的。但它发生了。)
沃伯斯在1974年完成了他的博士论文。在5.5.1节,他描述了如何将反向传播用于训练多层神经网络。
然后——他投论文。被拒。再投。再拒。改投。又被拒。
一直拒到1981年。整整七年。
(ps:如果你觉得”论文被拒三年”很惨——沃伯斯投了七年。他的核心贡献是同一件事:发现了一个可以用来训练多层网络的数学工具。审稿人看不到它的价值。因为1980年代初,神经网络是学术界的禁忌话题。1969年明斯基和帕伯特用《感知机》一书证明单层感知机连”异或”都做不了,从此神经网络进入”AI冬天”。没有人愿意读一篇”训练多层神经网络”的论文。)
1982年,沃伯斯终于发表了一篇会议论文——不是他1974年的博士论文,而是一个精简版。这是人类历史上第一次在正式出版物中把反向传播和神经网络连接在一起。
但仍然没有人注意到。
四、1986:一篇改变了历史的Nature论文
又过了四年。
1985年。加州大学圣迭戈分校。三位研究者——大卫·鲁梅尔哈特、杰弗里·辛顿、罗纳德·威廉姆斯——写了一份技术报告:《通过误差传播学习内部表征》。
1986年。这篇论文发表在《自然》杂志上。标题微调了一下:《Learning representations by back-propagating errors》。
这篇论文做了三件事:
-
给出了反向传播在神经网络中的完整公式推导——从输出层的误差开始,用链式法则一层层反向传播,计算每个权重的梯度。
-
证明了它可以学到有用的”内部表征”。论文展示了隐藏层神经元自发学会了”编码”输入数据的特征——阿拉伯数字识别、词形转换、亲属关系推理。神经网络不是死记硬背,它真的在”理解”。
-
证明多层网络是可训练的。明斯基1969年宣判的”死刑”——多层感知机没法训练——在纸上被证明是假的。
(ps:这篇论文的一个重大历史瑕疵:它没有引用任何前人的工作。Linnainmaa 1970。Werbos 1974。Parker 1985。LeCun 1985——杨立昆几乎在同一时间独立发现了类似的方法,有一篇未发表的论文。但1986年的Nature论文——一篇都没有引用。辛顿后来在采访中解释:他自己是从控制论文献里学到BP的,那里的传统从来不说”这是谁发明的”——他们只是用它。Hinton以为这是控制论里的”common knowledge”,不需要引用。这是一个疏忽,不是恶意。但这个疏忽让Wer bos和Linnainmaa的名字被埋没了很久。)
但无论引用问题如何——这篇论文的历史效应是不可否认的。
1986年之前。多层神经网络的训练被广泛认为是不可能的。“AI冬天”正在肆虐。
1986年之后。研究者有了一个可行的方法。Yann LeCun在1989年用它训练了卷积神经网络识别支票上的手写数字。后来这成为了全美银行的基础设施。
反向传播不是被”发明”的。它是被发现了至少三次——Linnainmaa 1970, Werbos 1974, Parker/LeCun 1985——然后被1986年的Nature论文推向了世界。
五、从1986到2026:链式法则的血脉膨胀
反向传播进入主流之后,一个看似技术性、实则具有巨大哲学意义的变化发生了。
人们意识到,反向传播不只是适用于”神经网络”。它适用于任何可以通过计算图表达的可微函数。
这催生了一场工具革命:
- Theano(2007):第一个符号自动微分框架
- TensorFlow(2015):Google的工业级计算图系统
- PyTorch(2016):Facebook的”定义即运行”(define-by-run)框架
PyTorch做了一件优雅的事。你写正常的Python代码。每个操作——加法、乘法、矩阵乘法、激活函数——PyTorch的后端都在悄悄构建一张计算图。图的节点是运算。边是数据流。
当你调用 .backward() 时,PyTorch从图的末端开始,沿着边反向遍历,在每个节点上应用链式法则。 最终,每个输入参数的梯度被计算出来——精确到机器精度。
这不是近似。这是解析导数。莱布尼茨的dy/dx。335年之后。在硅片上执行。
(ps:PyTorch的计算图还有另一个精巧之处:它是动态的。每次前向传播都构建一张新图。这意味着你可以写”if x > 0 → 走分支A,否则 → 走分支B”——每次迭代走的路可以不同。图的拓扑结构可以是动态的。这是静态图框架做不到的。动态计算图 = 你写的任何Python代码都能被自动微分。这是一项极其深刻的设计选择。)
今天。ChatGPT的训练。Claude的训练。每一个大模型的每一次参数更新——
前向传播:输入→嵌入→注意力→MLP→输出→损失。
反向传播:损失→∂/∂输出→∂/∂MLP→∂/∂注意力→∂/∂嵌入→∂/∂输入。链式法则递归地展开在每一层上。一百多个Transformer块。几千亿个参数。每一轮迭代都是一次链式法则从头到尾的遍历。
每一次调用 loss.backward()——都是莱布尼茨1676年的幽灵走过你的计算图。
六、嵌套的哲学
有一个更深的洞察。
链式法则之所以能从”最不起眼的微积分规则”变成”地球最重要的算法”——是因为它完美地匹配了现代AI的核心架构:深度。
深度不是”多层”的表面含义。深度的数学本质是嵌套。一个函数套在另一个函数里。一层Transformer套在另一层Transformer里。
而链式法则——正好是”嵌套”的求导法则。 f(g(h(x)))的导数 = f’ × g’ × h’。
对于一层、两层嵌套——这就是微积分课本上的课后习题。没人会在意。
但当你堆叠到100层、200层、500层——嵌套变得足够深,链式法则就变成了一个你自己的大脑无法手工执行的运算。
你需要机器来做这件事。用自动微分。在GPU上。万亿次地展开同一套乘法模式。
(ps:这就是”涌现”的数学表达。一层嵌套——看不出什么特别。十层嵌套——需要一点小心。一百层嵌套——没有任何人能手工跟踪导数的流动。一千层嵌套——链式法则变成了一个只能由机器执行的算法。一个简单的数学规则,当它被展开的次数足够多,就从一个”常识”变成了一个”工业级基础设施”。 这不是隐喻。这是数学上的事实。)
七、一条规则的三种境界
第一重境界:1676年。莱布尼茨的手稿。
dy/dx = dy/du · du/dx。计算错了符号。但方向是对的。
第二重境界:1823年。柯西的教科书。
严格证明。极限语言。进入教材。安静了两百年。
第三重境界:2026年。每块GPU。
链式法则被自动微分引擎在万亿参数的规模上执行。每秒上千万亿次。人类文明最昂贵的计算基础设施——H100、B200——在做一个数学家发明了三百五十年的简单操作。
三条境界。三百五十年。一个规则从未改变——dy/dx = dy/du · du/dx——但它在不同尺度上展现出完全不同的力量。
一条规则是平凡的,直到人类把它的使用规模扩大了几十亿倍。
莱布尼茨不会知道他1676年手稿上的那行字——那个还带着一个符号错误的公式——会成为地球最昂贵芯片上每秒万亿次的操作。但这也许就是数学最神秘的地方:真理一旦被发现,不会留在它被发明的那个时代。它会等待,等待人类造出足够大的机器,让它能够展现出它真正的规模。
下一篇预告:《AI的数学血脉|梯度下降:两百年求索一条下山的路》——柯西1847年提出了”最速下降法”。今天,AdamW优化器用它引导万亿参数走向更低的损失。只不过,这座”山”的维度不是三,而是一千七百五十亿。