独立性假设
假定实值函数的向量变元 x=[xi]i=1m∈Rm 或者矩阵变元 X=[xij]i=1,j=1m,n∈Rm×n 本身无任何特殊结构,即向量或矩阵变元的元素之间是各自独立的。用数学公式表达如下:
∂xj∂xi=δij={10i=jothers∂xij∂xkl=δkiδlj={10k=i∩l=jothers
1. 符号定义及实值函数分类
2. 定义
2.1 矩阵的向量化
- 列向量化:矩阵 A∈Rm×n 的向量化 vec(A) 是一个线性变换,它将矩阵 A=[aij] 的元素按列堆栈,排列成一个 mn×1 的向量,即
vec(A)=[a11,⋯,am1,⋯,a1n,⋯,amn]T
- 行向量化:类似地,矩阵 A 的行向量化为
rvec(A)=[a11,⋯,a1n,⋯,am1,⋯,amn]
2.2 向量的矩阵化
一个 mn×1 向量 a=[a1,⋯,amn]T 转换为一个 m×n 矩阵 A 的运算称为矩阵化,用符号 unvecm,n(a) 表示,定义为
Am×n=unvecm,n(a)=⎣⎡a1a2⋮amam+1am+2⋮a2m⋯⋯⋱⋯am(n−1)+1am(n−1)+2⋮amn⎦⎤
2.3 偏导算子
- 1×m 行向量偏导算子记为:
Dx=def∂xT∂=[∂x1∂,⋯,∂xm∂]
- n×m 矩阵偏导算子存在两种可能的定义,分别记为:
DX=⎣⎡∂x11∂⋮∂x1n∂⋯⋱⋯∂xm1∂⋮∂xmn∂⎦⎤
和
DrvecX=[∂x11∂,⋯,∂xm1∂,⋯,∂x1n∂,⋯,∂xmn∂]
前者称为矩阵变元 X 的 Jacobian 矩阵算子,后者称为矩阵变元 X 列向量化(vec)后的行偏导向量算子。此二者关系为:
DrvecX=rvec(DX)=(vec(DXT))T
- m×1 列向量偏导算子(习惯称为梯度算子)记为:
∇x=def∂x∂=[∂x1∂,⋯,∂xm∂]T
- n×m 矩阵梯度算子存在两种可能的定义,分别记为:
∇X=⎣⎡∂x11∂⋮∂xm1∂⋯⋱⋯∂x1n∂⋮∂xmn∂⎦⎤
和
∇vecX=∂vecX∂=[∂x11∂,⋯,∂xm1∂,⋯,∂x1n∂,⋯,∂xmn∂]T
前者称为矩阵变元 X 的梯度矩阵算子,后者称为梯度向量算子。此二者关系为:
∇vecX=vec(∇X)
由以上定义可知,行向量算子和列向量算子、Jacobian 矩阵算子和梯度矩阵算子、行偏导向量算子和梯度向量算子之间的关系为:
∇x=DxT∇X=DXT∇vecX=DvecXT
可以看到,梯度向量等于行偏导向量的转置。在此意义上,行向量偏导向量是列向量形式的梯度向量的协变形式,故又称行偏导向量为协梯度向量。类似地,Jacobian 矩阵也称为协梯度矩阵。
2.4 实值标量函数偏导
- 实值标量函数 f(x) 对向量变元 x 的行向量偏导为:
Dxf(x)=def∂xT∂f(x)=[∂x1∂f(x),⋯,∂xm∂f(x)]
- 实值标量函数 f(x) 对向量变元 x 的列向量偏导为:
∇xf(x)=def∂x∂f(x)=[∂x1∂f(x),⋯,∂xm∂f(x)]T
- 实值标量函数 f(X) 对矩阵变元 X 的 Jacobian 矩阵为:
DXf(X)=∂XT∂f(X)=⎣⎡∂x11∂f(X)⋮∂x1n∂f(X)⋯⋱⋯xm1∂f(X)⋮∂xmn∂f(X)⎦⎤
行偏导向量为:
DrvecXf(X)=[∂x11∂,⋯,∂xm1∂,⋯,∂x1n∂,⋯,∂xmn∂]
- 实值标量函数 f(X) 对矩阵变元 X 的梯度矩阵为:
∇Xf(X)=∂X∂f(X)=⎣⎡∂x11∂f(X)⋮∂xm1∂f(X)⋯⋱⋯∂x1n∂f(X)⋮∂xmn∂f(X)⎦⎤
梯度向量为:
∇vecXf(X)=∂vecX∂f(X)=[∂x11∂f(X),⋯,∂xm1∂f(X),⋯,∂x1n∂f(X),⋯,∂xmn∂f(X)]T
2.5 实值矩阵函数偏导
- 对于实值矩阵函数 F(X)∈Rp×q,其中矩阵变元 X∈Rm×n,Jacobian 矩阵定义为:
DXF(X)=∂vecTX∂vecF(X)
梯度矩阵定义为:
∇XF(X)=∂vecX∂vecTF(X)
【注】实值矩阵函数的 Jacobian 矩阵和梯度矩阵与对应偏导的 DX,∇X 算子原始定义不相符,但为了保持符号的一致性,仍沿用与实值标量函数相同的算子符号。
3. 性质
3.1 基本法则
-
若 f(X)=c 为常数,其中 X 为 m×n 矩阵,则梯度 ∂X∂c=0m×n 。
-
线性法则:若 f(X) 和 g(X) 分别是矩阵 X 的实值函数,c1 和 c2 为实常数,则
∂X∂[c1f(X)+c2f(X)]=c1∂X∂f(X)+c2∂X∂g(X)
- 乘积法则:若 f(X) 、g(X) 和 h(X) 都是矩阵 X 的实值函数,则
∂X∂[f(X)g(X)]=g(X)∂X∂f(X)+f(X)∂X∂g(X)
- 商法则:若 g(X)=0,则
∂X∂[f(X)/g(X)]=g2(X)1[g(X)∂X∂f(X)−f(X)∂X∂g(X)]
- 链式法则:令 X 为 m×n 矩阵,且 y=f(X) 和 g(y) 分别是以矩阵 X 和标量 y 为变元的实值函数,则
∂X∂g(f(X))=dydg(y)∂X∂f(X)
推而广之,对实值函数 g(F(X)),其中 F=[fkl]∈Rp×q,X=[xij]∈Rm×n,则链式法则为
[∂X∂g(F(X))]ij=∂xij∂g(F(X))=∑k=1p∑l=1q∂fkl(X)∂g(F(X))∂xij∂fkl(X)
3.2 常用性质
- 对于实值标量函数 f(x)=xTAx,其中 A∈Rn×n,x∈Rn×1,其行偏导向量和矩阵向量为
\begin{array}{c}
D_\boldsymbol{x} f(\boldsymbol{x}) = \boldsymbol{x}^T(\boldsymbol{A} + \boldsymbol{A}^T) \\
\nabla_\boldsymbol{x} f(\boldsymbol{x}) = (\boldsymbol{A}^T + \boldsymbol{A})\boldsymbol{x}
\end{array}
- 对于实值标量函数 f(X)=aTXTXb,其中 X∈Rm×n,a,b∈Rn×1,其 Jacobian 矩阵和梯度矩阵为
DXf(X)=X(baT+abT)∇Xf(X)=(baT+abT)XT
- 对于实值矩阵函数 F(X)=X∈Rm×n,其 Jacobian 矩阵和梯度矩阵为
DXF(X)=∇XF(X)=Imn∈Rmn×mn
- 对于实值矩阵函数 F(X)=AXB,其中 A∈Rp×m,X∈Rm×n,B∈Rn×q,其 Jacobian 矩阵和梯度矩阵为
DXF(X)=BT⊗A∇XF(X)=B⊗AT
- 在机器学习中,对于线性实值矩阵函数 Y=X⋅W+b,其中 X∈Rn×m,W∈Rm×1,b∈Rn×1,损失函数为 L,则有梯度
[∇XL]kl=[∂X∂L]kl=∑i=1n∂yi∂L∂xkl∂yi=wl∂yk∂L⇓∇XL=∂X∂L=∂Y∂LWT
类似地,有
[∇WL]k=[∂W∂L]k=∑i=1n∂yi∂L∂wk∂yi=∑i=1n∂yi∂Lxik⇓∇WL=∂W∂L=XT∂Y∂L
4. 常用公式
4.1 向量函数及其偏导
向量函数 |
偏导 |
ax |
aI |
bTx |
b |
xTb |
b |
xTx |
2x |
xxT |
I⊗x+x⊗I |
bTAx |
ATb |
xTAb |
Ab |
xTAx |
(A+AT)x |
exp(−21xTAx) |
−21(A+AT)x⋅exp(−21xTAx) |
4.2 矩阵函数及其偏导