矩阵微分

矩阵微分

标签(空格分隔): 矩阵微分


矩阵微分
在学习机器学习算法时,发现对矩阵求导很不熟悉,去看了张贤达的矩阵分析,发现标量对矩阵求导的问题说的很清楚.关于如何求解 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.

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