计算图
从第一性原理出发的多变量微积分
一个数据结构组织了前两课的全部内容:计算图。模型中的每个算术操作(加法、乘法、矩阵乘法、激活函数)都会变成有向图中的一个节点。PyTorch、JAX 和 TensorFlow 正是通过这个图自动计算梯度。
训练会对图进行两次扫描。前向传播从左到右流动,计算并缓存每个节点的值。反向传播从右到左流动,使用链式法则把梯度从损失逐节点推回到每个输入。
让它能扩展的关键思想是:每个节点只需要知道自己的局部导数。要把梯度通过一个节点向后发送,就把传入梯度(来自上方)乘以该节点的局部 Jacobian(输出如何依赖输入)。没有任何节点需要知道全局图像;局部规则串起来就给出精确的总梯度。
在机器学习中的应用计算图就是自动微分。当你在 PyTorch 中写模型时,每个操作都会悄悄记录一个节点;调用 loss.backward() 会反向遍历图,通过链式法则乘以局部 Jacobian,并在每个参数上存下 ∂loss/∂w。你不用手写导数,而这种便利——精确且几乎免费地计算导数——正是现代深度学习变得可行的重要原因。
▶ 计算图