矩陣求導法
1、前言
設y=f(x)且x=[x1 x2 ...xn]T,由多元函數微積分可知
dy=i=1∑ndxidydxi=(dxdy)Tdx
將向量x推廣到矩陣的形式,可以得到
dy=i=1∑nj=1∑m∂Xij∂ydXij=tr((∂X∂y)TdX)
值得注意的是,本文所有向量都默認爲列向量的形式,用小寫字母表示標量和向量,用大寫字母表示矩陣。
2、佈局方式
![在這裏插入圖片描述]()
一般來說,我們會使用一種叫混合佈局的思路,即如果是向量或者矩陣對標量求導,則使用分子佈局爲準,如果是標量對向量或者矩陣求導,則以分母佈局爲準。
3、基本公式
3.1 微分基本性質
- 微分加減法:d(X±Y)=dX±dY
- 微分乘法:d(XY)=XdY+YdX
- 微分轉置:d(XT)=(dX)T
- 逆矩陣微分:d(X−1)=−X−1d(X)X−1
- 哈達馬積(Hadamard Product)微分:d(X⊙Y)=X⊙dY+dX⊙Y
- 逐項元素求導:dσ(X)=σ′(X)⊙dX
3.2 跡的基本性質(針對標量對向量或者矩陣求導情況)
- tr(x)=x(x爲標量)
- tr(AT)=tr(A)
- tr(AB)=tr(BA)
- tr(A±B)=tr(A)±tr(B)
- d[tr(X)]=tr(dX)
- tr[(A⊙B)TC]=tr[AT(B⊙C)]
3.3 性質證明
(1)d(X−1)=−X−1d(X)X−1
證:
d(X−1)=d(X−1XX−1)=d(X−1)XX−1+X−1d(X)X−1+X−1Xd(X−1)=2d(X−1)+X−1d(X)X−1
3.4 例題
(1)已知標量y=aTXb,求∂x∂y。
解:
dy=d[tr(aTXb)]=tr[d(aTXb)]=tr[d(aT)Xb+aTd(X)b+aTXd(b)]=tr[aTd(X)b]=tr(baTdX)
∵dy=tr((∂X∂y)T)dX,∴∂X∂y=abT
(2)已知標量y=XTAX,求∂X∂y。
解:
dy=d[tr(XTAX)]=tr[d(XTAX)]=tr[d(XT)AX+XTAdX]=tr[d(XT)AX]+tr(XTAdX)=tr[d(X)TAX]+tr(XTAdX)=tr(XTATdX)+tr(XTAdX)=tr[XT(AT+A)dX]
∵dy=tr((∂X∂y)T)dX,∴∂X∂y=(A+AT)X
(3)已知標量y=aTeXb,求∂X∂y。
解:
dy=tr(dy)=tr(aTdeXb)=tr[aT(eXb⊙d(Xb))]=tr[(a⊙eXb)Td(Xb)]=tr[b(a⊙eXb)TdX]
∵dy=tr((∂X∂y)T)dX,∴∂X∂y=(a⊙eXb)bT
4、鏈式法則
4.1 向量對向量的鏈式法則
假設存在鏈式關係:x(m×1)→y(n×1)→z(p×1),則有如下鏈式求導法則:
∂x∂z=∂y∂z∂x∂y
從矩陣維度角度來看,∂x∂z是p×m的矩陣,∂y∂z是p×n的矩陣,∂x∂y是n×m的矩陣,滿足矩陣相乘的法則。
4.2 標量對向量的鏈式法則
假設存在鏈式關係:x(m×1)→y(n×1)→z(1×1),從矩陣維度角度來看,∂x∂z是m×1的矩陣,∂y∂z是n×1的矩陣,∂x∂y是n×m的矩陣,顯然無法寫成如下形式:
∂x∂z=∂y∂z∂x∂y
爲了使維度相容,式子應該寫成:
∂x∂z=(∂x∂y)T∂y∂z
事實上,出現上述轉置的原因是:我們使用了混合佈局,對於標量對向量求導使用的是分母佈局,而向量對向量求導使用的是分子佈局。
對於更深的鏈式關係:x→y1→y2→...→yn→z,有鏈式求導法則:
∂x∂z=(∂yn−1∂yn∂yn−2∂yn−1...∂x∂y1)T∂yn∂z
例子:已知loss=(Xθ−y)T(Xθ−y),求∂θ∂loss。
解:
令z=Xθ−y,則存在鏈式關係:θ→z→loss,則由鏈式求導法則有:
∂θ∂loss=(∂θ∂z)T∂z∂loss=XT(2z)=2XT(Xθ−y)
4.3 標量對矩陣的鏈式法則
由於矩陣對矩陣的求導是比較複雜的定義,現在只對一些簡單的線性關係求導繼續分析。假設存在鏈式關係:X→Y→z,即z=f(Y),Y=AX+B,現在要求解∂X∂z,分析過程如下:
∂xij∂z=k,l∑∂Ykl∂z∂Xij∂Ykl=k,l∑∂Ykl∂z∂Xij∂∑s(AksXsl)=k,l∑∂Ykl∂z∂Xij∂AkiXil=k∑∂Ykj∂zAki
可以看出∂xij∂z的值爲矩陣AT的第i行和∂Y∂z的第j列的內積,所以可得:
∂X∂z=AT∂Y∂z
參考文獻
[1]SL_World.機器學習常用矩陣求導方法
[2] 劉建平.機器學習中的矩陣向量求導[一]
[3] 劉建平.機器學習中的矩陣向量求導[二]
[4] 劉建平.機器學習中的矩陣向量求導[三]
[5] 劉建平.機器學習中的矩陣向量求導[四]