機器學習中矩陣求導規則

求導佈局:

分子佈局(numerator layout):

m維列向量對標量求導結果爲m維列向量,標量對m*n維矩陣求導結果爲n*m維,m維列向量對n維列向量求導結果爲m*n維(雅克比矩陣)

分母佈局(denominator layout):

m維列向量對標量求導結果爲m維行向量,標量對m*n維矩陣求導結果爲m*n維,m維列向量對n維列向量求導結果爲n*m維(梯度矩陣)

一般規則:

向量或矩陣對標量求導一般爲分子佈局,標量對向量或矩陣求導一般爲分母佈局,向量對向量求導看具體情況。

定義法求導

標量對向量的求導

sample 1


y=a^Tx
其中x爲n維列向量,則y對x的導數爲:

\frac {\partial y} {\partial x}=\frac {\partial a^Tx} {\partial x}=\frac {\partial x^Ta} {\partial x}=a

sample 2

y=x^TAx
則導數爲:

\frac {\partial x^TAx} {\partial x}=(A+A^T)x
其中,

\frac {\partial x^TAx} {\partial x_k}=\frac {\sum_{i=1}^n \sum_{j=1}^n x_iA_{ij}x_j} {\partial x_k}=\sum_{i=1}^nx_iA_{ik}+\sum_{j=1}^nx_jA_{kj}

標量對矩陣的求導

y=a^TXb
其中,a爲m維行向量,X爲m*n矩陣,b爲n維行向量。
則:

\frac {\partial a^TXb} {\partial X_{ij}}=\frac {\partial \sum_{p=1}^m \sum_{q=1}^n a_pA_{pq}b_q} {\partial X_{ij}}=a_ib_j

\frac {\partial a^TXb} {\partial X}=ab^T

向量對向量的求導

設A爲m*n矩陣,x爲n維向量,y爲m維向量,y對x的求導結果爲m*n矩陣
y=Ax\\ \frac {\partial A_ix} {\partial x_j}=\frac {\partial A_{ij}x_j} {\partial x_j}=A_{ij}\\ \frac {\partial Ax} {\partial x}=A

微分法求導

標量對矩陣的微分

df=\sum_{i=1}^m\sum_{j=1}^n\frac {\partial f} {\partial X_{ij}}dX_{ij}=tr((\frac {\partial f} {\partial X})^TdX) \\ tr(A^TB)=\sum_{i,j}A_{ij}B_{ij}
標量對向量的微分也如上式。因爲偏導使用分母佈局,故需轉置後乘以dX。

矩陣微分性質

加減法:d(X\pm Y)=dX\pm dY\\ 乘法:d(XY)=XdY+YdX\\ 轉置:d(X^T)=(dX)^T\\ 微分的跡:d(tr(X))=tr(dX)\\ 哈達馬乘積的微分:d(X\odot Y)=X\odot dY+dX\odot Y (哈達馬乘積:相同維度矩陣對應位置元素相乘)\\ 逐元素求導:d\sigma(X)=\sigma'(X)\odot dX\\ 逆矩陣微分:dX^{-1}=-X^{-1}dXX^{-1}\\ 行列式微分:d|X|=|X|tr(X^{-1}dX)

跡的性質

標量的跡等於自己:tr(x)=x\\ 轉置不變:tr(A)=tr(A^T)\\ 交換律(A,B^T同維度):tr(AB)=tr(BA)\\ 加減法:tr(X\pm Y)=tr(X)\pm tr(Y)\\ 矩陣乘法和跡交換(A,B,C同維度):tr((A\odot B)^TC)=tr(A^T(B\odot C))
使用微分法求導上例:
y=a^TXb\\ dy=(da^T)Xb+a^T(dX)b+a^TXdb=a^T(dX)b\\ dy=tr(dy)=tr(a^TdXb)=tr(ba^TdX)\\ 參考標量對矩陣微分式子,得:\\ (\frac {\partial y} {\partial X})^T=(ba^T)\implies \frac {\partial y} {\partial X}=ab^T
例2,y=a^Te^(Xb)\\ dy=tr(dy)=tr(a^Td\exp(Xb)=tr(a^T(\exp(Xb)\odot d(Xb)))\\ =tr((a\odot \exp(Xb))^TdXb)=tr(b(a\odot \exp(Xb))^TdX)\\ \implies \frac {\partial y} {\partial X}=(a\odot \exp(Xb))b^T

跡函數對向量矩陣的求導

由定義方法可知:
\frac {\partial tr(AB)} {\partial A}=B^T\\ \frac {\partial tr(AB)} {\partial B}=A^T\\ 如求\frac {\partial tr(W^TAW)} {\partial W}:\\ d(tr(W^TAW)=tr(dW^TAW+W^TAdW)=tr((dW)^TAW)+tr(W^TAdW)\\ =tr(W^TA^TdW)+tr(W^TAdW)(轉置後跡不變)=tr(W^T(A+A^T)dW)\\ \implies \frac {\partial tr(W^TAW)} {\partial W}=(A+A^T)W\\ 同理可求:\\ \frac {\partial tr(B^TX^TCXB)} {\partial X}=(C+C^T)XBB^T

鏈式求導法則

向量對向量

設依賴關係爲x\to y\to z,z對x的導數可以表達爲:\\ \frac {\partial z} {\partial x}=\frac {\partial z} {\partial y}\frac {\partial y} {\partial x}\\

標量對多個向量鏈式求導

直接用鏈式法則會碰到維度不相容的情況,可以求其轉置
假設想,x,y分別爲m,n維向量:
\frac {\partial z} {\partial x}=\frac {\partial z} {\partial y}\frac {\partial y} {\partial x} \\ 上式左邊爲m*1維,右邊第一項爲n*1維,第二項爲n*m維,無法相乘\\ (\frac {\partial z} {\partial x})^T=(\frac {\partial z} {\partial y})^T\frac {\partial y} {\partial x}\\ \implies \frac {\partial z} {\partial x}=(\frac {\partial y} {\partial x})^T\frac {\partial z} {\partial y}\\ 對於多箇中間向量y_1\to y_2\to...\to z,有:\\ \frac {\partial z} {\partial y_1}=(\frac {\partial y_n} {\partial y_{n-1}}\frac {\partial y_{n-1}} {\partial y_{n-2}}\dots \frac {\partial y_2} {\partial y_1})^T\frac {\partial z} {\partial y_n}\\ 假設損失函數爲:\\ l=(X\theta-y)^T(X\theta-y),z=X\theta-y\\ \frac {\partial l}{\partial \theta}=(\frac {\partial z}{\partial \theta})^T\frac {\partial l}{\partial z}=X^T2z=2X^T(X\theta-y)

標量對多個矩陣鏈式求導

假設依賴關係X\to Y\to z\\ \frac {\partial z}{\partial X_{ij}}=\sum_{k,l}\frac {\partial z}{\partial Y_{kl}}\frac {\partial Y_{kl}}{\partial X_{ij}}\\ 假設Y=AX+B\\ \frac {\partial Y_{kl}}{\partial X_{ij}}=\frac {\partial\sum_{s}A_{ks}X_{sl}}{\partial X_{ij}}=A_{ki}\delta_{lj}\\ 所以,\\ \frac {\partial z}{\partial X_{ij}}=\sum_{k}\frac {\partial z}{\partial Y_{kj}}A_{ki}\\ \implies\frac {\partial z}{\partial X}=A^T\frac {\partial z}{\partial Y}\\ 如果Y=XA+B,同理\\ \frac {\partial z}{\partial X}=\frac {\partial z}{\partial Y}A^T

矩陣對矩陣求導

一般先對矩陣向量化(列向量),使用向量對向量的求導,即
\frac {\partial F}{\partial X}=\frac {\partial vec(F)}{\partial vec(X)} \\ 求導公式爲:vec(dF)=\frac {\partial vec(F)^T}{\partial vec(X)}vec(dX)

矩陣向量化的運算法則

vec(A+B)=vec(A)+vec(B)\\ vec(AXB)=(B^T\otimes A)vec(X) vec(A^T)=K_{mn}vec(A),K_{mn}是mn*mn的交換矩陣,用於列向量和行向量之間的轉換。\\ vec(A\odot X)=diag(A)vec(X),其中diag(A)是mn*mn的對角矩陣

克羅內克積的運算法則

如果A是mn矩陣,B是pq矩陣,則克羅內克積爲np*nq矩陣\\ A\otimes B=\begin{bmatrix} a_{11}B &\cdots & a_{1n}B\\ \vdots & \ddots &\vdots\\ a_{n1}B & \cdots & a_{nn}B \end{bmatrix}\\ (A\otimes B)^T=A^T\otimes B^T \\ vec(ab^T)=b\otimes a\\ (A\otimes B)(C\otimes D)=AC\otimes BD\\ K_{mn}=K_{nm}^T,K_{mn}K_{nm}=I
例如,
求\frac {\partial AXB}{\partial X}\\ dF=AdXB\\ vec(dF)=vec(AdXB)=(B^T\otimes A)vec(dX)\\ 因此,\frac {\partial AXB}{\partial X}=(B^T\otimes A)^T=B\otimes A^T\\ 同理,可得\\ \frac {\partial AX}{\partial X}=I_n\otimes A^T\\ \frac {\partial XB}{\partial X}=B\otimes I_m\\ \frac {\partial A\exp(BXC)D}{\partial X}=(C\otimes B^T)diag(\exp(BXC))(D\otimes A^T)

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