链式法则、矩阵求导与反向传播入门
金培晟 Jarfield
上一篇讲的是“单个矩阵表达式怎么求导”,这一篇继续往前走一步:
当表达式是多层复合时,链式法则在向量和矩阵情况下到底怎么写,以及它为什么会自然长成反向传播。
这篇只抓最常用、最值得反复记住的部分:
- 标量链式法则如何升级为向量 / 矩阵链式法则
- 为什么反向传播本质上是在做
Jacobian^T × 上游梯度 - 线性层、激活层、两层网络和批量训练时的梯度公式
0. 先说结论
如果损失函数最终是标量
写得更标准一点:
若
则
其中
这句话就是反向传播的骨头。后面各种公式看起来不同,本质都只是它的特例。
1. 从标量链式法则出发
1.1 单变量情况
若
则普通链式法则是
这是大家最熟的形式。
1.2 向量情况为什么不一样
若
则:
要把
因此
这一点和标量情形唯一真正的区别是:
导数不再是一个数,而是一个线性映射。
2. 用微分法看链式法则
微分法是最稳的,因为它不依赖你背 Jacobian 的布局习惯。
2.1 向量版
设
则
而
代回去:
因此
2.2 矩阵版
若中间变量是矩阵
如果你能把
从而识别出
所以矩阵链式法则的实际操作不是背一个超大总公式,而是:
- 先写微分
- 把中间变量微分展开
- 用 trace 把
收拢出来 - 读出梯度
3. 最重要的局部模块
3.1 线性层:
设
若已知上游梯度
则反向传播的三个结果必须记住。
对输入求导
由
得到
所以
对偏置求导
因为
所以
对权重求导
因为
故
把它改写成 trace:
因此
一页记忆版
对线性层
这三个式子就是神经网络反向传播里最常见的三个局部规则。
3.2 激活层:
若
因此 Jacobian 是对角矩阵:
于是
这里
常见特例:
- ReLU:
- sigmoid:
- tanh:
3.3 二次损失层
设
则
这也是非常值得直接记住的起点,因为很多反向传播都从输出层的这个梯度开始。
4. 两层网络的完整反传
考虑最基础的两层网络:
我们从后往前算。
4.1 输出层
于是
4.2 激活层
4.3 第一层线性层
4.4 这套结构为什么重要
这个两层网络已经暴露出反向传播的全部模式:
- 先在输出层求损失对输出的导数
- 每过一层,就把上游梯度乘上“局部导数”
- 线性层回传时出现转置
- 参数梯度通常由“当前层误差 × 上一层输入”构成外积
5. 批量输入时的矩阵形式
实际训练通常不是单样本,而是一个 batch。
设样本按列堆叠:
权重
偏置
令全 1 向量为
若上游梯度为
则
这三个式子在工程里几乎天天出现。
为什么偏置梯度是按 batch 求和
因为同一个偏置
所以反向时,所有样本对这个偏置的贡献都要累加起来。
6. 为什么总是转置
很多人第一次学反传都会问:为什么老是
答案其实很简单:
6.1 维度要求
前向:
反向时,若上游梯度在
唯一自然的线性映射就是
6.2 线性算子的伴随
更本质地说,反向传播不是在重复前向,而是在计算该线性映射对内积的伴随算子。
在欧氏空间里,这个伴随就是转置。
所以:
- 前向:
- 反向:
这也是为什么反向传播看起来像“把图倒着走一遍”,但又不是机械地把前向复制一遍。
7. 用 trace 看矩阵链式法则
这一节给一个最典型的矩阵版例子。
设
其中
若已知上游梯度
那么怎样求
先写微分:
因此
循环交换:
再写成标准形式:
所以
这个公式非常值得单独记住,因为它把很多矩阵链式法则都统一起来了。
8. 一个很实用的工作流
以后看到一个复合矩阵表达式,不要直接找现成公式,按这套顺序做最稳:
- 先确认自变量和目标变量的形状
- 从最终标量损失开始往回看
- 给每个中间量记一个“上游梯度”
- 对当前层只做局部求导
- 用微分或 trace 把结果整理回与变量同形的梯度
这其实就是手工版反向传播。
9. 最常用反传公式清单
9.1 向量版
若
则
若
则
9.2 矩阵版
若
则
若
则
10. 我的理解
我觉得链式法则一旦到了矩阵场景,真正难的从来不是“公式推不出来”,而是:
- 你有没有把变量形状看清楚
- 你有没有意识到局部导数本质是线性映射
- 你能不能把每一层的上游梯度和局部 Jacobian 对上
一旦接受“反向传播就是局部线性算子的转置不断连乘”,很多原来看起来很神秘的公式都会变得非常自然。
所以我现在更倾向于把反向传播理解成一种“结构化记账”:
前向记录了变量如何生成,反向则沿着同一张图,把误差按线性伴随关系精确地分配回去。
11. 这篇的下一步
这篇已经够支撑:
- 理解线性层反传
- 看懂最基础的 MLP 反向传播
- 手推大部分常见矩阵链式法则
如果下一篇继续写,最自然的是:
softmax 与 cross entropy 求导入门:为什么输出层梯度会直接化成p-ybatch norm / layer norm的反向传播怎么推- Jacobian、Hessian 和二阶优化之间是什么关系
链式法则、矩阵求导与反向传播入门
https://jarfield.github.io/2026/04/14/Notes/链式法则、矩阵求导与反向传播入门/
