介绍矩阵求导法则,以及常用的求导公式、迹函数、行列式求导结论。
矩阵求导法则
矩阵求导应该分为标量求导、向量求导、矩阵求导三个方面来介绍,公式繁多,但仔细看看其实是有规律可循的。
标量求导
无论是矩阵、向量对标量求导,或者是标量对矩阵、向量求导,其结论都是一样的:等价于对矩阵(向量)的每个分量求导,并且保持维数不变。
例如,我们可以计算标量对向量求导:
设y为一个元素,xT=[x1...xq]是q维行向量,则:
∂xT∂y=[∂x1∂y...∂xq∂y]
向量求导
对于向量求导,我们可以先将向量看做一个标量,然后使用标量求导法则,最后将向量形式化为标量进行。
例如,我们可以计算行向量对列向量求导:
设yT=[y1...yn]是n维行向量,x=[x1,...,xp]是p维列向量,则:
∂x∂yT=[∂x∂y1⋅⋯∂x∂yn]=⎣⎢⎡∂x1∂y1⋯∂xp∂y1⋯⋯⋯∂x1∂yn⋯∂xp∂yn⎦⎥⎤
矩阵求导
与向量求导类似,先将矩阵化当做一个标量,再使用标量对矩阵的运算进行。
例如,我们可以计算矩阵对列向量求导:
设
Y=⎝⎛y11…ym1………y1n…ymn⎠⎞
是m×n矩阵,x=[x1,...,xp]是p维列向量,则:
∂x∂Y=[∂x1∂Y,...,∂xp∂Y]
矩阵微积分
常见求导性质
实值函数相对于实向量的梯度
设f(x)=x=[x1,...,xn]T
∂xT∂f(x)=∂xT∂x=In×n
∂x∂(f(x))T=∂x∂xT=In×n
∂x∂f(x)=∂x∂x=vec(In×n)
∂xT∂(f(x))T=∂xT∂xT=vec(In×n)T
其中,vec表示向量化矩阵,按列将矩阵表示为向量,具体可见Wikipedia。
常见性质
f(x)=Ax,则
∂xT∂f(x)=∂xT∂(Ax)=A
f(x)=xTAx,则
∂x∂f(x)=∂x∂(xTAx)=Ax+ATx
f(x)=aTx,则
∂x∂aTx=∂x∂xTa=a
f(x)=xTAy,则
∂x∂xTAy=Ay
∂A∂xTAy=xyT
df(X)=tr((∂X∂f(X))TdX)
矩阵微分也满足线性法则、乘积法则。
矩阵的逆的微分
d(X−1)=−X−1(dX)X−1
迹函数
迹函数相对于矩阵的梯度
∂Z∂(tr(ZZT))=∂Z∂(tr(ZTZ))=2Z
矩阵微分算子和迹算子的可交换性
d(tr(X))=tr(d(X))=i=1∑ndxii
常见性质
∂A∂tr(A)=In×n
∂A∂tr(AB)=BT
d(tr(AXB))=tr(A(dX)B)=tr(BA(dX))
∂X∂tr(AXB)=(BA)T=ATBT
d(tr(AX−1B))=tr(A(dX−1)B)=−tr(AX−1(dX)X−1B)=−tr(X−1BAX−1dX)
∂X∂tr(AX−1B)=−(X−1BAX−1)T=−X−TATBTX−T
∂X∂tr(XTX)=2X
行列式
行列式相对于矩阵的梯度
∂Z∂∣Z∣=∣Z∣(Z−1)T
微分形式
d∣X∣=tr(∣X∣X−1dX)
常见性质
d∣AXB∣=tr(∣AXB∣(AXB)−1d(AXB))=tr(∣AXB∣(AXB)−1A(dX)B)=tr(∣AXB∣B(AXB)−1A(dX))
∂X∂∣AXB∣=∣AXB∣AT(BTXTAT)−1BT
∂X∂∣X∣=∣X∣X−T
∂X∂∣XXT∣=2∣XXT∣(XXT)−1X
reference
- 矩阵的导数与迹