实值标量函数一阶微分和Jacobian矩阵辨识

神经网络的反向传播可以通过对损失函数进行微分得到各层权重矩阵的梯度

其中对损失函数求梯度是实值标量函数一阶微分,其中关键的部分是得到Jacobian矩阵,从而转置获取梯度矩阵

一阶实矩阵微分

矩阵微分用符号dX表示,定义为dX=[dXij]i=1,j=1m,n

实矩阵微分具有两个基本性质

  1. 转置。矩阵转置的微分等于矩阵微分的转置,既有d(XT)=(dX)T
  2. 线性。d(αX+βY)=αdX+βdY

常用计算公式

  1. 常数矩阵的微分矩阵为零矩阵,即dA=O
  2. 常数α与矩阵X的乘积的微分矩阵d(αX)=αdX
  3. 矩阵转置的微分矩阵等于原矩阵的微分矩阵的转置,即d(XT)=(dX)T
  4. 两个矩阵函数的和(差)的微分矩阵为d(U±V)=dU±dV
  5. 常数矩阵与矩阵乘积的微分矩阵为d(AXB)=A(dX)B
  6. 矩阵函数U=F(X),V=G(X),W=H(X)乘积的微分矩阵为 d(UV)=(dU)V+U(dV)d(UVW)=(dU)VW+U(dV)W+UV(dW)
  7. 矩阵X的迹的矩阵微分d(tr(X))等于矩阵微分dX的迹tr(dX),即 d(tr(X))=tr(dX) 7.1 从而可推导出矩阵函数F(X)的迹的矩阵微分为d(tr(F(X)))=tr(d(F(X)))
  8. 行列式的微分为 d|X|=|X|tr(X1dX) 8.1 从而可推导出矩阵函数F(X)的行列式的微分为d(|F(X)|)=|F(X)|tr(F1(X)d(F(X)))
  9. 矩阵函数的Kronecker积的微分矩阵为 d(UV)=(dU)V+UdV
  10. 矩阵函数的Hadamard积的微分矩阵为 d(UV)=(dU)V+UdV
  11. 向量化函数vec(X)的微分矩阵等于X的微分矩阵的向量化函数,即 d(vec(X))=vec(dX)
  12. 矩阵对数的微分矩阵为 dlogX=X1dX 12.1 从而可推导出矩阵函数F(X)的对数的微分矩阵为d(logF(X))=F1(X)d(F(X))
  13. 逆矩阵的微分矩阵为 d(X1)=X1(dX)X1

标量函数的Jacobian矩阵辨识

多变量函数f(x1,...,xm)在点(x1,...,xm)可微分的充分条件是偏导数fx1,...,fxm均存在,且连续。全微分公式如下:

df(x1,...,xm)=fx1dx1+...+fxmdxm

若矩阵的标量函数f(x)m×n矩阵点X可微分,则Jacobian矩阵可直接通过以下公式辨识:

df(x)=tr(Adx)Dxf(x)=Adf(X)=tr(AdX)DXf(X)=A

要点如下:

  1. 标量函数f(X)总可以写成迹函数的形式,因为f(X)=tr(f(X))
  2. 无论dX出现在迹函数内的任何位置,总可以通过迹函数的性质tr[A(dX)B]=tr(BAdX),将dX写到迹函数的最右端,从而得到迹函数微分矩阵的规范形式
  3. 对于(dX)T,总可以通过迹函数的性质tr[A(dX)TB]=tr(ATBTdX),写成迹函数微分矩阵的规范形式

计算标量函数f(x)=xTAxA是正方常数矩阵,求梯度矩阵

df(x)=d(tr(xTAx))=tr[(dx)TAx+xTAdx]=tr([(dx)TAx]T+xTAdx)=tr(xTATdx+xTAdx)=tr(xT(A+AT)dx)

所以Jacobian矩阵为xT(A+AT),梯度矩阵为(A+AT)x

计算tr(XTX)的梯度矩阵

dtr(XTX)=tr(d[XTX])=tr((dX)TX+XTdX)=tr((dX)TX)+tr(XTdX)=tr(XTdX)+tr(XTdX)=tr(2XTdX)

所以Jacobian矩阵为2XT,梯度矩阵为2X

常用的迹函数的微分矩阵及其Jacobian矩阵参考《矩阵分析与应用》第3.2章表3.2.1

相关阅读

  • 《矩阵分析与应用》第三章 3.2 一阶实矩阵微分与Jacobian矩阵辨识