笔记 / 详情

Jacobian, gradient, Hessian

2026.04.07
方法备忘
2408 字数

约定

本文采用分子布局(numerator layout)。

设

x=(x1,…,xn)T∈Rn,y(x)=(y1(x),…,ym(x))T∈Rm,f(x)∈R.\mathbf x=(x_1,\dots,x_n)^T\in\mathbb R^n, \qquad \mathbf y(\mathbf x)=(y_1(\mathbf x),\dots,y_m(\mathbf x))^T\in\mathbb R^m, \qquad f(\mathbf x)\in\mathbb R.

默认向量都是列向量(column vector)。

向量对向量

向量值函数 y:Rn→Rm\mathbf y:\mathbb R^n\to\mathbb R^m 的导数定义为

∂y∂xT:=[∂yi∂xj]1≤i≤m, 1≤j≤n.\frac{\partial \mathbf y}{\partial \mathbf x^T} := \left[ \frac{\partial y_i}{\partial x_j} \right]_{1\le i\le m,\ 1\le j\le n}.

这是雅可比矩阵(Jacobian matrix),其维度为

∂y∂xT∈Rm×n.\frac{\partial \mathbf y}{\partial \mathbf x^T}\in\mathbb R^{m\times n}.

因此:

  • 行数等于分子的维度,即 mm。
  • 列数等于分母的维度,即 nn。

微分写成

dy=∂y∂xT dx.d\mathbf y = \frac{\partial \mathbf y}{\partial \mathbf x^T}\,d\mathbf x.

标量对向量

若 f:Rn→Rf:\mathbb R^n\to\mathbb R,则

∂f∂xT:=[∂f∂x1∂f∂x2⋯∂f∂xn].\frac{\partial f}{\partial \mathbf x^T} := \begin{bmatrix} \dfrac{\partial f}{\partial x_1} & \dfrac{\partial f}{\partial x_2} & \cdots & \dfrac{\partial f}{\partial x_n} \end{bmatrix}.

故

∂f∂xT∈R1×n.\frac{\partial f}{\partial \mathbf x^T}\in\mathbb R^{1\times n}.

也就是说,在本文约定下,标量对向量的导数是行向量(row vector)。

对应微分为

df=∂f∂xT dx.df = \frac{\partial f}{\partial \mathbf x^T}\,d\mathbf x.

若定义梯度(gradient)

∇f:=(∂f∂xT)T,\nabla f:= \left( \frac{\partial f}{\partial \mathbf x^T} \right)^T,

则 ∇f∈Rn×1\nabla f\in\mathbb R^{n\times 1} 是列向量。

二阶导数

标量函数 ff 的二阶导数定义为

∂2f∂x ∂xT:=∂∂x(∂f∂xT).\frac{\partial^2 f}{\partial \mathbf x\,\partial \mathbf x^T} := \frac{\partial}{\partial \mathbf x} \left( \frac{\partial f}{\partial \mathbf x^T} \right).

这就是 Hessian matrix:

∂2f∂x ∂xT=[∂2f∂xi∂xj]1≤i,j≤n∈Rn×n.\frac{\partial^2 f}{\partial \mathbf x\,\partial \mathbf x^T} = \left[ \frac{\partial^2 f}{\partial x_i\partial x_j} \right]_{1\le i,j\le n} \in\mathbb R^{n\times n}.

这里分母的顺序不能随意改写:

  • 先对 xT\mathbf x^T 求导,得到 1×n1\times n 的行向量 ∂f∂xT.\frac{\partial f}{\partial \mathbf x^T}.
  • 再对 x\mathbf x 求导,得到 n×nn\times n 的矩阵 ∂2f∂x ∂xT.\frac{\partial^2 f}{\partial \mathbf x\,\partial \mathbf x^T}.

若 f∈C2f\in C^2,则 Hessian 对称,即

∂2f∂xi∂xj=∂2f∂xj∂xi.\frac{\partial^2 f}{\partial x_i\partial x_j} = \frac{\partial^2 f}{\partial x_j\partial x_i}.

一页总结

在本文约定下,

∂y∂xT∈Rm×n,∂f∂xT∈R1×n,∂2f∂x ∂xT∈Rn×n.\frac{\partial \mathbf y}{\partial \mathbf x^T}\in\mathbb R^{m\times n}, \qquad \frac{\partial f}{\partial \mathbf x^T}\in\mathbb R^{1\times n}, \qquad \frac{\partial^2 f}{\partial \mathbf x\,\partial \mathbf x^T}\in\mathbb R^{n\times n}.

所以:

  • 向量对向量得到 Jacobian。
  • 标量对向量得到行向量。
  • 标量对向量的二阶导数得到 Hessian。

若教材把 ∂f/∂x\partial f/\partial \mathbf x 直接写成列向量,那么它采用的是另一套布局;那时 Jacobian 与 Hessian 的排列也要一起改变。真正重要的是全文记号前后一致。