矩陣微分

矩陣微分

標籤(空格分隔): 矩陣微分


矩陣微分
在學習機器學習算法時,發現對矩陣求導很不熟悉,去看了張賢達的矩陣分析,發現標量對矩陣求導的問題說的很清楚.關於如何求解 hessian矩陣,日後再來補上.
重要的事情說三遍
損失函數是標量函數!!!
損失函數是標量函數!!!
損失函數是標量函數!!!

主要介紹實值函數相對於實向量變量或者矩陣變量的偏導.這裏首先對變元和函數符號做統一的規定以便後面介紹.
xx=[x1,...,xm]TRm 爲實向量變元
XX=[xx1,...,xxm]TRm×n 爲矩陣變元
f(xx)R,xxRm,f:RmR
f(XX)R,XXRm×n,f:Rm×nR
ff(xx)Rpp,xxRm,f:RmRp
ff(XX)Rpp,XXRm×n,f:Rm×nRp
FF(xx)Rp×qp×q,xxRm,f:RmRp×q
FF(XX)Rp×qp×q,XXRm×n,f:Rm×nRp×q

Jacobian 矩陣

採用1×m 行向量作爲偏導算子,記爲

Dxx=def[x1,...,xm]

實值標量函數f(xx)xx1×m,

Dxxf(xx)=f(xx)xxT=[f(xx)x1,...,f(xx)xm]

當實值標量函數f(XX)p×q 維矩陣的時候,他有兩種定義:Jacobian矩陣和行向量偏導.他的Jacobian矩陣定義爲如下

DXXf(XX)=f(XX)XXT
而他的行向量偏導定義爲
DvecXXf(XX)=f(XX)vec(XX)T=[f(xx)x1,...f(xx)xm1,...,f(xx)x1n,...,f(xx)xmn]
這裏需要注意的是,實值標量函數f(XX) 的Jacobian矩陣的轉置DXXTf(XX) 的列向量化後即爲他的行向量偏導DvecXXf(XX) ,這是後面介紹Jacobian矩陣相關知識的基礎
FF(XX)p×q,Jacobian
DXXFF(XX)=defvec(FF(XX))(vecXX)T

梯度矩陣

採用列向量形式的偏導算子稱爲列向量偏導算子,也稱爲梯度算子
採用m×1 向量作爲偏導算子,記爲

xx=def[x1,...,xm]T

實值標量函數f(xx)xxm×1,

xxf(xx)=[f(xx)x1,...,f(xx)xm]T

實值標量函數f(XX)XX,XX

vecXXf(XX)=f(XX)vec(XX)=[f(xx)x1,...f(xx)xm1,...,f(xx)x1n,...,f(xx)xmn]T

定義f(XX)XX
XXf(XX)=f(XX)XX
比較f(XX) 的梯度矩陣和Jacobian矩陣,可以發現梯度矩陣即爲Jacobian矩陣的轉置
當實值標量函數數f(XX)p×q,
XXFF(XX)=defvec(FF(XX))(vecXX)T

標量函數f(xx) 與Jacobian矩陣

以向量爲變元的標量函數f(xx) 的全微分形式可以寫爲

df(xx)=f(xx)x1dx1+...+f(xx)xmdxm=f(xx)xxTdxx

AA=f(xx)xxT ,則有如下等價關係
df(xx)=tr(Adxx)Dxxf(xx)=f(xx)xxT=A

也就是標量函數f(xx) 的Jacobian矩陣和微分矩陣存在着等價關係

標量函數f(XX) 與Jacobian矩陣

標量函數f(XX) 和上面類似,其全微分可以寫成如下形式

df(XX)=f(XX)xx1Tdxx1+...+f(XX)xxnTdxxn=f(XX)vecT((X)d(vecXX)=DvecXXf(XX)d(vecXX)

這裏再利用行向量偏導和Jacobian矩陣的關係DvecXXf(XX)=(vec(DXXTf(XX)))TA=DXXTf(XX) 可以得到
df(XX)=(vec(AT))Td(vecXX)

由向量化算子vec與跡函數的關係式tr(BTC)=(vec(B))Tvec(C),B=AT,C=dXX ,則上式可以重寫爲
df(XX)=tr(AAdXX)

綜合以上,可以得到如下結論:
Jacobian矩陣可以通過以下式子等價確定

df(xx)=tr(Adxx)Dxxf(xx)=Adf(XX)=tr(AdXX)DXXf(XX)=A

矩陣微分df(XX) 可以通過簡單的變化轉化爲矩陣微分的標準形式df(XX)=tr(AdXX) .再由Jacobian和梯度矩陣的關係,進一步可以得到梯度矩陣.因而對求解梯度矩陣可以由矩陣微分的標準形式df(XX)=tr(AdXX) 得到.
如下:
對於tr(XXTXX) 我們可以得到

dtr(XXTXX)=tr(d(XXTXX))=tr(d(XX)TXX+XXTdXX)=tr(d(XX)TXX)+tr(XXTdXX)=tr(XXTd(XX))+tr(XXTdXX)=tr(2XXTd(XX))

由以上結論,可以得到XXTXX 關於XX 的梯度矩陣爲
tr(XXTXX)XX=(2XXT)T=2XX

求解梯度矩陣是進行一階優化算法的基礎部分.

參考文獻&學習資料
矩陣分析與應用 -張賢達
矩陣求導術-知乎
The Matrix Cookbook.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章