Processing math: 100%
0%

标量对矩阵求导

定义:

若有函数y=f(X),其中X为一个矩阵,y为标量,则标量y对矩阵X的导数定义为y对X逐元素求导排列成与X同型的矩阵

[φyφXij]

但是在实际计算标量对矩阵求导时,并不是直接使用标量对矩阵中的逐元素求导,而是将矩阵当作一个整体来求导

标量对矩阵求导公式推导

若有y=f(X),其中X为m×n的矩阵,则由全微分公式可以得到

df=mi=1nj=1φfφXijdXij

令:

fX=(fX11fX12fX1nfX21fX22fX2nfXm1fXm2fXmn)m×ndX=(dX11dX12dX1ndX21dX22dX2ndXm1dXm2dXmn)m×n

[(fX)T·dX]ii=mk=1fXkidXki

tr[(fX)T·dX]=mi=1nj=1fXijdXijdf=tr[(fX)T·dX]

其中tr表示矩阵的迹(trace),是方阵对角元素之和。所以只要求全微分的公式(1)左边的形式,就可以的得到fX$

矩阵微分的运算法则

1、加减法、乘法、转置、迹

d(X±Y)=dX±dYd(XY)=X(dY)+d(X)Yd(XT)=(dX)Tdtr(X)=tr(dX)

2、逆

dX1=X1dXX1

该公式可以使用公式XX1=I,两边同时对X求微分。

3、行列式

d|X|=tr(XdX)

其中X为X的伴随矩阵

4、逐函数乘法

d(XY)=dXY+XdY

其中表示同型矩阵逐元素相乘

5、逐元素函数

dσ(X)=σdX

其中σ(X)=[σ(Xij)]是逐元素标量函数的计算

关于矩阵的迹的公式

a=tr(a)atr(AT)=tr(A)tr(A±B)=tr(A)±tr(B)tr(BA)=tr(AB)

一个例子

y=ATXB,求yX

解:

df=ATd(XB)+d(AT)·XB=ATdX·B+ATXdB=ATdX·Bd(AT)=d(B)=0

应为df为标量,所以

df=tr(df)=tr(ATdX·B)=tr(BATdX)=tr[(ABT)Tdx]

所以yX=(ABT)

链式法则

在标量对矩阵求导中,没有类似标量对标量求导的链式法则。

此时没有明确的链式法而是要使用公式进行推导,例如有z=f(Y),其中Y为矩阵且Y=AXB,A、X、B、都为矩阵,求fX

推导过程:

dz=tr[(fY)TdY]=tr[(fY)Td(AXB)]=tr[(fY)TdA·(XB)]+tr[(fY)TA·d(XB)]=tr[(fY)TAdX·B]+tr[(fY)TAX·d(B)]=tr[(fY)TAdX·B]=tr[B·(fY)TAdX]=tr[(ATfYBT)TdX]dA=dB=0

所以有zX=(ATfYBT)