约定
本文采用分子布局(numerator layout)。
设
x=(x1,…,xn)T∈Rn,y(x)=(y1(x),…,ym(x))T∈Rm,f(x)∈R.
默认向量都是列向量(column vector)。
向量对向量
向量值函数 y:Rn→Rm 的导数定义为
∂xT∂y:=[∂xj∂yi]1≤i≤m, 1≤j≤n.
这是雅可比矩阵(Jacobian matrix),其维度为
∂xT∂y∈Rm×n.
因此:
- 行数等于分子的维度,即 m。
- 列数等于分母的维度,即 n。
微分写成
dy=∂xT∂ydx.
标量对向量
若 f:Rn→R,则
∂xT∂f:=[∂x1∂f∂x2∂f⋯∂xn∂f].
故
∂xT∂f∈R1×n.
也就是说,在本文约定下,标量对向量的导数是行向量(row vector)。
对应微分为
df=∂xT∂fdx.
若定义梯度(gradient)
∇f:=(∂xT∂f)T,
则 ∇f∈Rn×1 是列向量。
二阶导数
标量函数 f 的二阶导数定义为
∂x∂xT∂2f:=∂x∂(∂xT∂f).
这就是 Hessian matrix:
∂x∂xT∂2f=[∂xi∂xj∂2f]1≤i,j≤n∈Rn×n.
这里分母的顺序不能随意改写:
- 先对 xT 求导,得到 1×n 的行向量
∂xT∂f.
- 再对 x 求导,得到 n×n 的矩阵
∂x∂xT∂2f.
若 f∈C2,则 Hessian 对称,即
∂xi∂xj∂2f=∂xj∂xi∂2f.
一页总结
在本文约定下,
∂xT∂y∈Rm×n,∂xT∂f∈R1×n,∂x∂xT∂2f∈Rn×n.
所以:
- 向量对向量得到 Jacobian。
- 标量对向量得到行向量。
- 标量对向量的二阶导数得到 Hessian。
若教材把 ∂f/∂x 直接写成列向量,那么它采用的是另一套布局;那时 Jacobian 与 Hessian 的排列也要一起改变。真正重要的是全文记号前后一致。