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