Math-06.矩阵微积分-03.Jacobian与链式法则

本页定义 Jacobian(雅可比矩阵)并给出向量/矩阵形式的链式法则——反向传播的数学核心。

段末注释Jacobian $J \in \mathbb{R}^{m \times d}$ 的第 $(i,j)$ 元为 $\partial y_i / \partial x_j$,描述向量函数 $\mathbf{y}=f(\mathbf{x})$ 的一阶局部线性近似。

系列入口00.系列规划 | 前置:02 标量对向量求导


1. Jacobian 定义(D2–D3)

图 1 J 的每一行是 y_i 的梯度转置

$\mathbf{y} = f(\mathbf{x})$,$\mathbf{x} \in \mathbb{R}^d$,$\mathbf{y} \in \mathbb{R}^m$:

$$
J = \frac{\partial \mathbf{y}}{\partial \mathbf{x}} =
\begin{bmatrix}
\partial y_1 / \partial x_1 & \cdots & \partial y_1 / \partial x_d \
\vdots & \ddots & \vdots \
\partial y_m / \partial x_1 & \cdots & \partial y_m / \partial x_d
\end{bmatrix} \in \mathbb{R}^{m \times d}
$$

线性近似:$\Delta \mathbf{y} \approx J , \Delta \mathbf{x}$。


2. 标量链式法则(D3)

$L$ 依赖 $\mathbf{y}$,$\mathbf{y}$ 依赖 $\mathbf{x}$(分子布局):

$$
\frac{\partial L}{\partial \mathbf{x}} = J^\top \frac{\partial L}{\partial \mathbf{y}}
$$

形状
$\partial L / \partial \mathbf{y}$ $m \times 1$
$J$ $m \times d$
$\partial L / \partial \mathbf{x}$ $d \times 1$

记忆:$J^\top$ 把 $\mathbf{y}$ 空间的梯度拉回 $\mathbf{x}$ 空间。


3. 复合示例(D6)

图 2 y=Ax, L=||y-b||^2

$\mathbf{y} = A\mathbf{x}$,$L = \frac{1}{2}|\mathbf{y}-\mathbf{b}|^2$:

$$
\frac{\partial L}{\partial \mathbf{y}} = \mathbf{y} - \mathbf{b}, \quad J = A
$$

$$
\frac{\partial L}{\partial \mathbf{x}} = A^\top (\mathbf{y} - \mathbf{b}) = A^\top(A\mathbf{x} - \mathbf{b})
$$

ReLU:$\mathbf{y} = \max(0, \mathbf{x})$ 逐元素,$J = \mathrm{diag}(\mathbb{1}_{x_i>0})$。


4. 多变量链(D3)

$L \leftarrow \mathbf{z} \leftarrow \mathbf{y} \leftarrow \mathbf{x}$:

$$
\frac{\partial L}{\partial \mathbf{x}} =
\left(\frac{\partial \mathbf{y}}{\partial \mathbf{x}}\right)^\top
\left(\frac{\partial \mathbf{z}}{\partial \mathbf{y}}\right)^\top
\frac{\partial L}{\partial \mathbf{z}}
$$

即逐段乘 $J^\top$,与计算图从 $L$ 向 $\mathbf{x}$ 反向一致(04 反向传播)。


5. ML 场景(D7)

图 3 Jacobian 在 DL 中

Jacobian 结构
Linear $\mathbf{y}=W\mathbf{x}$ $W$
Element-wise $\sigma(\mathbf{x})$ 对角阵
Softmax 稠密 $K \times K$(常用恒等式避显式 $J$)
BatchNorm 与 batch 统计相关

6. 局限(D8)

图 4 维度对齐

陷阱 检查
$J^\top$ 漏写 手推后 gradcheck
batch 维 PyTorch 对 batch 独立,Jacobian 为 per-sample 或 vmap
分母布局 公式为 $J$ 非 $J^\top$

7. PyTorch 验证(D12)

1
2
3
4
5
6
7
8
9
import torch

x = torch.randn(4, requires_grad=True)
A = torch.randn(3, 4)
y = A @ x
L = (y ** 2).sum()
L.backward()
print(x.grad) # 2 A^T y
print((2 * A.T @ y).detach())

8. 小结

反向传播 = 链式法则 + 存储中间量 + 从 $L$ 反向乘 $J^\top$。下一篇:04 反向传播

系列导航02 向量求导 | 06 层梯度

-------------本文结束感谢您的阅读-------------