Jacobian 矩阵与 Hessian 矩阵
层级:B|按需
1. 两种导数对象
- 向量输入、向量输出的一阶导数:Jacobian;
- 向量输入、标量输出的二阶导数:Hessian。
Jacobian 描述局部线性变换,Hessian 描述局部曲率。反向传播、Newton 法、误差传播和凸性判断都要用它们。
2. Jacobian 定义
设
f:Rn→Rm,f(x)=f1(x)⋮fm(x).
采用“输出对输入”布局:
Jf(x)=∂f1/∂x1⋮∂fm/∂x1⋯⋱⋯∂f1/∂xn⋮∂fm/∂xn∈Rm×n.
每行是一个输出分量的梯度转置,每列描述一个输入坐标如何影响所有输出。
不同资料可能用转置布局,必须先检查约定。
3. Jacobian 是局部线性近似
小扰动 Δx 下:
f(x+Δx)≈f(x)+Jf(x)Δx.
形状为 (m×n)(n×1)=m×1。若 f(x)=Ax+b,Jacobian 恒为 A。
例:
f(x,y)=[x2yx+y2],
Jf=[2xy1x22y].
4. Jacobian 链式法则
若 g:Rn→Rp,f:Rp→Rm:
Jf∘g(x)=Jf(g(x))Jg(x).
形状:
(m×p)(p×n)=m×n.
它与矩阵表示的线性变换复合完全一致。
5. Vector–Jacobian 与 Jacobian–Vector 乘积
深度模型的 Jacobian 巨大,通常不显式构造。
- JVP:Jv,传播输入方向扰动,适合前向模式自动微分;
- VJP:uTJ 或等价 JTu,把输出梯度反传到输入,适合反向模式。
标量损失 L(f(x)) 的梯度:
∇xL=Jf(x)T∇fL.
框架执行 VJP,而不是生成完整 Jacobian。
6. Hessian 定义
对标量函数 f:Rn→R:
Hf(x)=∇2f(x)=∂x12∂2f⋮∂xn∂x1∂2f⋯⋱⋯∂x1∂xn∂2f⋮∂xn2∂2f.
在二阶偏导连续时 Hessian 对称。
7. Hessian 与二阶局部模型
f(x+Δ)≈f(x)+∇f(x)TΔ+21ΔTHf(x)Δ.
Hessian 的二次型给方向曲率:单位方向 u 上的二阶方向导数为
uTHu.
Hessian 特征向量是主曲率方向,特征值是对应曲率。
8. 用 Hessian 判断驻点
在 ∇f(x∗)=0 时:
- H≻0:严格局部极小;
- H≺0:严格局部极大;
- H 不定:鞍点;
- H 半正定/半负定但非严格:二阶检验可能无法判定。
例 f(x,y)=x2−y2,Hessian 为 diag(2,−2),不定,原点是鞍点。
9. Hessian 与凸性
在凸开集上,二阶可微函数凸当且仅当
Hf(x)⪰0
对所有 x 成立。若处处正定,通常严格凸。局部某点 Hessian PSD 不足以证明全局凸性。
10. Newton 步
最小化二阶局部模型,对 Δ 求导置零:
∇f+HΔ=0,
得到
Δ=−H−1∇f.
实际应解线性系统 HΔ=−g,不显式求逆。非凸时 Hessian 不定,Newton 方向可能不是下降方向,需要阻尼或信赖域。
11. Hessian–Vector 乘积
大型模型无法存 p×p Hessian。可通过自动微分计算
Hv
而不显式形成 H,用于共轭梯度、曲率估计和最大特征值计算。成本通常是少数次梯度计算量级。
12. Gauss–Newton 与 Fisher 预览
最小二乘与概率模型常用 PSD 曲率近似替代完整 Hessian:Gauss–Newton 忽略某些二阶残差项,Fisher 信息矩阵利用 score 外积期望。它们更容易产生稳定下降方向,但只是特定结构下的近似或等价。
易错点
- Jacobian 布局有不同约定,形状是最可靠线索。
- Hessian 只针对标量函数的二阶导;向量函数每个输出可有一个 Hessian。
- Hessian 在单点 PSD 不证明函数全局凸。
- Newton 法不应显式计算 H−1。
- 自动微分通常计算 JVP/VJP/HVP,不显式构造大导数矩阵。
常见问答
Q1:梯度是 Jacobian 吗?
标量输出时 Jacobian 是 1×n 行,而本书梯度是 n×1 列,二者互为转置。
Q2:神经网络 Hessian 为什么很难用?
参数数目为百万时 Hessian 有万亿元素,并且非凸、不定。需要结构近似、HVP 或一阶方法。
Q3:Hessian 特征值很大说明什么?
对应方向曲率大,损失对移动敏感,稳定学习率需要更小;极小特征值表示平坦方向或不可辨识性。
练习
- 求 f(x,y)=(x+y,xy)T 的 Jacobian。
- 求 g(x,y)=x2+3xy+2y2 的 Hessian。
- 判断该 Hessian 是否正定。
- 写出复合 f(g(x)) 的 Jacobian 形状法则。
- 为什么只计算 Hv 比存储 H 更适合大模型?
答案与提示
- [1y1x]。
- [2334]。
- 行列式 8−9=−1<0,不定。
- Jf(g(x))Jg(x)。
- 存储从 O(p2) 降到 O(p) 量级,并可用于迭代算法。