① 手动推导太慢
如果每个模型都要人手算梯度,面对几十亿参数的 LLM 根本不可能。自动微分让计算机自动完成这件事。
前面你已经看过 Token、Embedding、Attention 和 Transformer Block。但有一个问题始终没有正面回答:这些参数一开始是随机的,模型到底是怎么“学会”的?这一页就补上这个关键环节——自动微分。它让模型知道自己错在哪里、每个参数该往哪个方向调、调多少。没有它,深度学习就不可能真正跑起来。
训练模型的过程,本质上是一个“不断纠错”的过程。模型先猜一个答案,然后和正确答案比较,得到一个误差。接下来最关键的一步是:算出每个参数对误差的影响有多大,然后按影响方向去调整参数。这个“影响大小”就是梯度,而自动微分就是高效计算梯度的技术。
如果每个模型都要人手算梯度,面对几十亿参数的 LLM 根本不可能。自动微分让计算机自动完成这件事。
用“扰动一个参数看误差变化”的数值方法,每个参数都要重新算一次前向传播,参数量大时成本爆炸。
自动微分(尤其是反向模式)只需要一次前向 + 一次反向,就能得到所有参数的梯度,效率极高。
下面是一个最小的可训练模型。它只有一个参数 w,输入是 x,目标是 y,预测值和目标的差距用平方误差衡量。整个过程只有三个运算:乘法、减法、平方。虽然简单,但它包含了 LLM 训练中所有核心步骤的缩影。
| 节点 | 含义 | 前向值 | 梯度 ∂L/∂ |
|---|---|---|---|
| 点击「执行前向传播」开始 | |||
自动微分的数学核心只有一句话:复合函数的导数,等于各层导数的乘积。这就是链式法则。下面把这个例子完整拆开,每一步都写清楚。
损失是 L = z²。对 z 求导得到 ∂L/∂z = 2z。这是反向传播的起点,相当于告诉模型:“当前误差对中间变量 z 有多敏感”。
∂L/∂z = 2z = ?因为 z = u − y,所以 ∂z/∂u = 1。根据链式法则,∂L/∂u = ∂L/∂z · 1,梯度原样传过来。
∂L/∂u = ∂L/∂z · 1 = ?因为 u = w · x,所以 ∂u/∂w = x。于是 ∂L/∂w = ∂L/∂u · x。这一步非常关键:梯度会被输入值缩放。输入越大,参数 w 的梯度也越大。
∂L/∂w = ∂L/∂u · x = ?梯度告诉了我们“增大 w 会让损失变大还是变小”。要降低损失,就朝梯度相反的方向走一小步:w ← w − η · ∂L/∂w。学习率 η 控制步长。
w ← w − η · ∂L/∂w = ?自动微分算出的梯度到底可不可信?有一个简单的验证方法:给参数加一个很小的扰动 ε,看损失变化了多少。这就是数值梯度。如果它和自动微分的结果非常接近,说明计算正确。
数值梯度用差分近似导数:
这个方法虽然简单,但每个参数都要额外算两次前向传播,参数量大时非常慢。所以训练时用自动微分,验证时用数值梯度。
下面是当前参数下,两种方法算出的梯度对比:
| 方法 | ∂L/∂w |
|---|---|
| 自动微分(解析) | — |
| 数值梯度(ε=0.001) | — |
| 差异 | — |
单次更新不够,真实训练是“前向 → 反向 → 更新”不断循环。每循环一次,参数就朝着降低损失的方向挪一点。下面这个曲线记录了自动训练 20 步后,损失如何下降。
这一页涉及的每一个概念,下面用六张卡片完整讲清楚。你可以按顺序读,也可以挑自己最关心的部分看。
自动微分(Automatic Differentiation, AD)是一种在计算机程序中精确计算函数导数的技术。它把程序拆解为基本运算(加、减、乘、除、exp、log 等),利用链式法则逐步组合这些基本运算的导数,从而得到整个函数的梯度。
自动微分分为前向模式和反向模式。深度学习使用反向模式(即反向传播),因为它的计算成本与参数数量无关,只需要一次前向 + 一次反向就能得到所有参数的梯度。
常见实现:PyTorch 的 autograd、TensorFlow 的 GradientTape、JAX 的 grad。
想象你在爬山,但眼前全是雾,看不见山顶。你唯一能做的,是感受脚下哪边是上坡、哪边是下坡。自动微分就是那个告诉你“每个方向坡度是多少”的工具。
模型里有几百万、几十亿个“旋钮”(参数),每个旋钮都影响最终结果。自动微分能一次性告诉你:每个旋钮往哪边拧、拧多少,能让误差降得最快。
没有它,你就只能一个个旋钮去试,效率极低。有了它,模型才能“自己学会”。
它解决了“如何高效、准确地计算复杂函数对所有参数的梯度”这个问题。
自动微分兼顾了准确性和效率,是深度学习能规模化的关键基础设施。
自动微分是整个深度学习训练体系的数学引擎。没有它,就没有反向传播;没有反向传播,就没有梯度下降;没有梯度下降,模型就无法从数据中学习。
从最简单的线性回归,到 GPT、Diffusion、AlphaFold,所有现代神经网络的训练都依赖自动微分。它让研究人员可以自由设计复杂的网络结构,而不必担心梯度推导的负担。
可以说:自动微分是“深度学习能自动化”的底层前提。
前向传播把运算连成图,反向传播沿图回传梯度。图的结构决定了梯度怎么流动。
每个局部导数相乘,梯度就能从输出一路传到输入。自动微分只是让计算机自动执行这个规则。
知道梯度之后,沿反方向走一小步,参数就更新了。学习率决定步子有多大。