机器学习数学基础 120 章

Jacobian 矩阵与 Hessian 矩阵

层级:B|按需

1. 两种导数对象

  • 向量输入、向量输出的一阶导数:Jacobian;
  • 向量输入、标量输出的二阶导数:Hessian。

Jacobian 描述局部线性变换,Hessian 描述局部曲率。反向传播、Newton 法、误差传播和凸性判断都要用它们。

2. Jacobian 定义

f:RnRm,f(x)=[f1(x)fm(x)].f:\mathbb R^n\to\mathbb R^m, \qquad f(x)=\begin{bmatrix}f_1(x)\\\vdots\\f_m(x)\end{bmatrix}.

采用“输出对输入”布局:

Jf(x)=[f1/x1f1/xnfm/x1fm/xn]Rm×n.J_f(x)= \begin{bmatrix} \partial f_1/\partial x_1&\cdots&\partial f_1/\partial x_n\\ \vdots&\ddots&\vdots\\ \partial f_m/\partial x_1&\cdots&\partial f_m/\partial x_n \end{bmatrix} \in\mathbb R^{m\times n}.

每行是一个输出分量的梯度转置,每列描述一个输入坐标如何影响所有输出。

不同资料可能用转置布局,必须先检查约定。

3. Jacobian 是局部线性近似

小扰动 Δx\Delta x 下:

f(x+Δx)f(x)+Jf(x)Δx.f(x+\Delta x) \approx f(x)+J_f(x)\Delta x.

形状为 (m×n)(n×1)=m×1(m\times n)(n\times1)=m\times1。若 f(x)=Ax+bf(x)=Ax+b,Jacobian 恒为 AA

例:

f(x,y)=[x2yx+y2],f(x,y)=\begin{bmatrix}x^2y\\x+y^2\end{bmatrix}, Jf=[2xyx212y].J_f= \begin{bmatrix} 2xy&x^2\\ 1&2y \end{bmatrix}.

4. Jacobian 链式法则

g:RnRpg:\mathbb R^n\to\mathbb R^pf:RpRmf:\mathbb R^p\to\mathbb R^m

Jfg(x)=Jf(g(x))Jg(x).J_{f\circ g}(x)=J_f(g(x))J_g(x).

形状:

(m×p)(p×n)=m×n.(m\times p)(p\times n)=m\times n.

它与矩阵表示的线性变换复合完全一致。

5. Vector–Jacobian 与 Jacobian–Vector 乘积

深度模型的 Jacobian 巨大,通常不显式构造。

  • JVP:JvJv,传播输入方向扰动,适合前向模式自动微分;
  • VJP:uTJu^TJ 或等价 JTuJ^Tu,把输出梯度反传到输入,适合反向模式。

标量损失 L(f(x))L(f(x)) 的梯度:

xL=Jf(x)TfL.\nabla_xL=J_f(x)^T\nabla_fL.

框架执行 VJP,而不是生成完整 Jacobian。

6. Hessian 定义

对标量函数 f:RnRf:\mathbb R^n\to\mathbb R

Hf(x)=2f(x)=[2fx122fx1xn2fxnx12fxn2].H_f(x)=\nabla^2f(x) =\begin{bmatrix} \frac{\partial^2f}{\partial x_1^2}&\cdots&\frac{\partial^2f}{\partial x_1\partial x_n}\\ \vdots&\ddots&\vdots\\ \frac{\partial^2f}{\partial x_n\partial x_1}&\cdots&\frac{\partial^2f}{\partial x_n^2} \end{bmatrix}.

在二阶偏导连续时 Hessian 对称。

7. Hessian 与二阶局部模型

f(x+Δ)f(x)+f(x)TΔ+12ΔTHf(x)Δ.f(x+\Delta) \approx f(x)+\nabla f(x)^T\Delta +\frac12\Delta^TH_f(x)\Delta.

Hessian 的二次型给方向曲率:单位方向 uu 上的二阶方向导数为

uTHu.u^THu.

Hessian 特征向量是主曲率方向,特征值是对应曲率。

8. 用 Hessian 判断驻点

f(x)=0\nabla f(x^*)=0 时:

  • H0H\succ0:严格局部极小;
  • H0H\prec0:严格局部极大;
  • HH 不定:鞍点;
  • HH 半正定/半负定但非严格:二阶检验可能无法判定。

f(x,y)=x2y2f(x,y)=x^2-y^2,Hessian 为 diag(2,2)\operatorname{diag}(2,-2),不定,原点是鞍点。

9. Hessian 与凸性

在凸开集上,二阶可微函数凸当且仅当

Hf(x)0H_f(x)\succeq0

对所有 xx 成立。若处处正定,通常严格凸。局部某点 Hessian PSD 不足以证明全局凸性。

10. Newton 步

最小化二阶局部模型,对 Δ\Delta 求导置零:

f+HΔ=0,\nabla f+H\Delta=0,

得到

Δ=H1f.\Delta=-H^{-1}\nabla f.

实际应解线性系统 HΔ=gH\Delta=-g,不显式求逆。非凸时 Hessian 不定,Newton 方向可能不是下降方向,需要阻尼或信赖域。

11. Hessian–Vector 乘积

大型模型无法存 p×pp\times p Hessian。可通过自动微分计算

HvHv

而不显式形成 HH,用于共轭梯度、曲率估计和最大特征值计算。成本通常是少数次梯度计算量级。

12. Gauss–Newton 与 Fisher 预览

最小二乘与概率模型常用 PSD 曲率近似替代完整 Hessian:Gauss–Newton 忽略某些二阶残差项,Fisher 信息矩阵利用 score 外积期望。它们更容易产生稳定下降方向,但只是特定结构下的近似或等价。

易错点

  1. Jacobian 布局有不同约定,形状是最可靠线索。
  2. Hessian 只针对标量函数的二阶导;向量函数每个输出可有一个 Hessian。
  3. Hessian 在单点 PSD 不证明函数全局凸。
  4. Newton 法不应显式计算 H1H^{-1}
  5. 自动微分通常计算 JVP/VJP/HVP,不显式构造大导数矩阵。

常见问答

Q1:梯度是 Jacobian 吗?

标量输出时 Jacobian 是 1×n1\times n 行,而本书梯度是 n×1n\times1 列,二者互为转置。

Q2:神经网络 Hessian 为什么很难用?

参数数目为百万时 Hessian 有万亿元素,并且非凸、不定。需要结构近似、HVP 或一阶方法。

Q3:Hessian 特征值很大说明什么?

对应方向曲率大,损失对移动敏感,稳定学习率需要更小;极小特征值表示平坦方向或不可辨识性。

练习

  1. f(x,y)=(x+y,xy)Tf(x,y)=(x+y,xy)^T 的 Jacobian。
  2. g(x,y)=x2+3xy+2y2g(x,y)=x^2+3xy+2y^2 的 Hessian。
  3. 判断该 Hessian 是否正定。
  4. 写出复合 f(g(x))f(g(x)) 的 Jacobian 形状法则。
  5. 为什么只计算 HvHv 比存储 HH 更适合大模型?

答案与提示

  1. [11yx]\begin{bmatrix}1&1\\y&x\end{bmatrix}
  2. [2334]\begin{bmatrix}2&3\\3&4\end{bmatrix}
  3. 行列式 89=1<08-9=-1<0,不定。
  4. Jf(g(x))Jg(x)J_f(g(x))J_g(x)
  5. 存储从 O(p2)O(p^2) 降到 O(p)O(p) 量级,并可用于迭代算法。