符号与符号布局的规定

符号规定:

  • LL :标量
  • xx​nn​ 维向量
  • yymm 维向量
  • XXmnm*n 维矩阵

分母布局:

  • 标量LL 对向量xx 求导得到的是nn 维向量,其中(Lx)i=Lxi(\frac{\partial L}{\partial x})_i=\frac{\partial L}{\partial x_i}
  • 标量LL 对矩阵XX 求导是大小为mnm*n 的矩阵,其中(LX)ij=Lxij(\frac{\partial L}{\partial X})_{ij}=\frac{\partial L}{\partial x_{ij}}
  • 向量yy​ 对向量xx 求导是大小为mnm*n 的矩阵,其中(yx)ij=yjxi(\frac{\partial y}{\partial x})_{ij}=\frac{\partial y_j}{\partial x_i}​

分子布局:

  • 标量LL 对向量xx 求导得到的是nn 维向量,其中(Lx)i=Lxi(\frac{\partial L}{\partial x})_i=\frac{\partial L}{\partial x_i}
  • 标量LL 对矩阵XX 求导是大小为nmn*m 的矩阵,其中(LX)ij=Lxji(\frac{\partial L}{\partial X})_{ij}=\frac{\partial L}{\partial x_{ji}}
  • 向量yy 对向量xx 求导是大小为nmn*m 的矩阵,其中(yx)ij=yixj(\frac{\partial y}{\partial x})_{ij}=\frac{\partial y_i}{\partial x_j}

注:数学界有两派人使用着自己的符号约定,从而将矩阵微积分划分成了两个派别。这两个约定都是被大家所接受的。这两个布局之间相差一个转置,大多数的转置异常问题根本上来说是由于没有统一求导布局所导致的 。

几个重要的向量对向量求导结论

利用定义验证:

  • xx=I\frac{\partial x}{\partial x}=I
  • 设向量z=f(x)z=f(x) ,则Azx=fxAT\frac{\partial Az}{\partial x}=\frac{\partial f}{\partial x}A^T ,特别地:Axx=AT\frac{\partial Ax}{\partial x}=A^T
  • 设向量z=g(x)z=g(x) ,则zTAx=gxA\frac{\partial z^TA}{\partial x}=\frac{\partial g}{\partial x}A ,特别地:xTAx=A\frac{\partial x^TA}{\partial x}=A
  • ff 为按元素运算的函数,则f(x)x=diag(f(x))\frac{\partial f(x)}{\partial x}=diag(f'(x))

标量求导的迹方法

多元函数微积分中,有df=i=1nfxidxi=fxTdxd f=\sum_{i=1}^{n} \frac{\partial f}{\partial x_{i}} d x_{i}=\frac{\partial f}{\partial x}^{T} d x ,在矩阵导数中:

dL=i=1mj=1nLXijdXij=tr((LX)TdX)d L=\sum_{i=1}^{m} \sum_{j=1}^{n} \frac{\partial L}{\partial \mathbf{X}_{ij}} d \mathbf{X}_{ij}=\operatorname{tr}\left(\left(\frac{\partial L}{\partial \mathbf{X}}\right)^{T} d \mathbf{X}\right)

迹的常用性质:

  • tr(XT)=tr(X)tr(X^T)=tr(X)
  • tr(X+Y)=tr(X)+tr(Y)tr(X+Y)=tr(X)+tr(Y)
  • tr(XY)=tr(YX)tr(XY)=tr(YX)
  • tr(ATB)=i,jAijBij\operatorname{tr}\left(A^{T} B\right)=\sum_{i, j} A_{i j} B_{i j}
  • tr(AT(BC))=tr((AB)TC)=i,jAijBijCijtr\left(A^{T}(B \odot C)\right)=tr\left((A \odot B)^{T} C\right)=\sum_{i, j} A_{i j} B_{i j} C_{i j}

其中\odot 为Hadamard乘积

常用全微分公式及法则

常用公式

  • d(X+Y)=dX+dYd(X+Y)=dX+dY
  • d(tr(X))=tr(dX)d(tr(X))=tr(dX)
  • d(XY)=(dX)Y+XdYd(XY)=(dX)Y+XdY
  • d(XY)=(dX)Y+XdYd(X \odot Y)=(dX) \odot Y +X \odot dY
  • dσ(X)=σ(X)dXd \sigma(X)=\sigma'(X)\odot dX ($\sigma $ 为逐元素运算)
  • dX1=X1(dX)X1dX^{-1}=-X^{-1}(dX)X^{-1}
  • dX=Xtr(X1dX)d|X|=|X|tr(X^{-1}dX)
  • dlnX=tr(X1dX)dln|X|=tr(X^{-1}dX)
  • dXT=(dX)TdX^T=(dX)^T

乘法法则

  • xRp,y=f(x)Rq,z=g(x)Rq\mathbf{x} \in R^{p}, \mathbf{y}=f(\mathbf{x}) \in R^{q}, \mathbf{z}=g(\mathbf{x}) \in R^{q},则$ \frac{\partial \mathbf{y}^{T} \mathbf{z}}{\partial \mathbf{x}}=\frac{\partial \mathbf{y}}{\partial \mathbf{x}} \mathbf{z}+\frac{\partial \mathbf{z}}{\partial \mathbf{x}} \mathbf{y} \in R^{p}$
  • xRp,y=f(x)R,z=g(x)Rq\mathbf{x} \in R^{p}, y=f(\mathbf{x}) \in R, \mathbf{z}=g(\mathbf{x}) \in R^{q},则 yzx=yxzT+zxyRp×q\frac{\partial y \mathbf{z}}{\partial \mathbf{x}}=\frac{\partial y}{\partial \mathbf{x}} \mathbf{z}^{T}+\frac{\partial \mathbf{z}}{\partial \mathbf{x}} y \in R^{p \times q}

链式法则

向量对向量求导(包含向量对标量求导、标量对向量求导):

  • 设多个向量之间存在依赖关系:abxyz\mathbf{a} \Rightarrow \mathbf{b} \Rightarrow \ldots \Rightarrow \mathbf{x} \Rightarrow \mathbf{y} \Rightarrow \mathbf{z}
  • 计算方法:za=bacbyxzy\frac{\partial \mathbf{z}}{\partial \mathbf{a}}=\frac{\partial \mathbf{b}}{\partial \mathbf{a}} \frac{\partial \mathbf{c}}{\partial \mathbf{b}} \ldots \frac{\partial \mathbf{y}}{\partial \mathbf{x}} \frac{\partial \mathbf{z}}{\partial \mathbf{y}}

标量对矩阵求导:

  • 若矩阵XRpqX\in R^{p*q} ,矩阵y=g(X)Rsty=g(X)\in R^{s*t} ,标量z=f(Y)Rz=f(Y) \in R,则zXij=tr((zY)TYXij)\frac{\partial z}{\partial \mathbf{X}_{ij}}=\operatorname{tr}\left(\left(\frac{\partial z}{\partial \mathbf{Y}}\right)^{T} \frac{\partial \mathbf{Y}}{\partial \mathbf{X}_{ij}}\right)
  • 由上式,若链式关系中存在有矩阵对矩阵求导,则难以直接写出标量对矩阵的导数,下面则给出常用的线性关系下的"链式"求导 :
  • 若存在关系:XY=AX+BL=f(Y)\mathbf{X} \Rightarrow \mathbf{Y}=\mathbf{A} \mathbf{X}+\mathbf{B} \Rightarrow L=f(\mathbf{Y}) ,则LX=ATLY\frac{\partial L}{\partial \mathbf{X}}=A^{T} \frac{\partial L}{\partial \mathbf{Y}}
  • 若存在关系: XY=XA+BL=f(Y)\mathbf{X} \Rightarrow \mathbf{Y}=\mathbf{X} \mathbf{A}+\mathbf{B} \Rightarrow L=f(\mathbf{Y}),则LX=LYAT\frac{\partial L}{\partial \mathbf{X}}= \frac{\partial L}{\partial \mathbf{Y}}A^T
  • 链式法则不再成立,往往通过迹方法来求标量对矩阵的导数

常见技巧

  • 一维下标求和考虑写成向量内积的形式
  • 二位下标求和考虑写成trtr的形式
  • 向量模长的平方考虑内积运算ixi2=xTx\sum_{i} x_{i}^{2}=\mathbf{x}^{T} \mathbf{x}
  • 矩阵的Frobenius范数考虑写成trtr 的形式XF2=tr(XXT)\|\mathbf{X}\|_{F}^{2}=t r\left(\mathbf{X} \mathbf{X}^{T}\right)

推荐阅读:

知乎,矩阵求导术(上)

知乎,矩阵求导术(下)