矩阵求导术
参考来源:知乎(长驱鬼侠):矩阵求导术
注:小写字母表示标量,粗体小写字母表示(列)向量,大写字母表示矩阵。
标量对矩阵的求导
矩阵导数和微分建立联系:
该公式第一个等号为全微分公式;
第二个等号为矩阵导数和微分的联系:全微分$df$是导数$\frac{\partial f}{\partial X} (m\times n )$ 与微分矩阵$dX(m\times n)$的内积。
若标量函数$f$是矩阵$X$经加减乘法、逆、行列式、逐元素函数等运算构成,则使用相应的运算法则对$f$求微分,再使用迹技巧给$df$套上迹并将其他项交换至$dx$左侧,对照导数和微分的联系,就能得到导数。
其中,加减乘法、逆、行列式、逐元素函数等运算对应的求导法则如下:
加减法:$d(X\pm Y)=dX\pm dY$;矩阵乘法:$d(XY)=(dX)Y+XdY$;转置:$d(X^T)=(dX)^T$;迹:$dtr(X)=tr(dX)$。
逆:$dX^{-1}=-X^{-1}dXX^{-1}$
行列式:$d\begin{vmatrix} X \end{vmatrix}=tr(X^{*}dX)$,$X^* $表示伴随矩阵,在X可逆时又可以写作$d\begin{vmatrix} X \end{vmatrix}=\begin{vmatrix} X \end{vmatrix}tr(X^{-1}dX)$。
逐元素乘法:$d(X\odot Y)=dX\odot Y+X\odot dY$,$\odot$表示尺寸相同的矩阵逐元素相乘。
逐元素函数:$d\sigma(X)=\sigma’(X)\odot dX $,$\sigma(X)=[\sigma(X_{ij})]$是逐元素标量函数运算,$\sigma’(X)=[\sigma’(X_{ij})]$是逐元素求导数。
迹技巧如下:
标量套上迹:$a=tr(a)$
转置:$tr(A^T)=tr(A)$
线性:$tr(A \pm B)=tr(A)\pm tr(B)$
矩阵乘法交换:$tr(AB)=tr(BA)$,其中$A$和$B^T$尺寸相同。
矩阵乘法/逐元素乘法交换:$tr(A^T(B\odot C))=tr((A\odot B)^TC)$,其中$A,B,C$尺寸相同。
链式法则:已求得$\frac{\partial f}{\partial Y}$,而$Y$是$X$的函数,求$\frac{\partial f}{\partial X}$。
先写出$df = tr( \frac{\partial f}{\partial Y}^T dY )$,再将$dY$用$dX$表示出来带入,使用迹技巧将其他项交换至$dX$左侧,即可得到$\frac{\partial f}{\partial X}$。