矩阵微积分

Image of the author

CrazySpottedDove github

记号约定:标量用普通斜体(如 xx),向量用粗体(如 x\mathbf{x}),矩阵用大写字母(如 A,J,H,XA, J, H, X)。


1. 微分运算律

  1. 乘积微分
d(UV)=dUV+UdV\mathrm{d}(UV)=\mathrm{d}U\,V+U\,\mathrm{d}V
  1. 转置微分
d(U)=(dU)\mathrm{d}(U^\top)=(\mathrm{d}U)^\top
  1. 标量转置不变(非常常用)
s=ss=s^\top
  1. 迹的循环不变(维度匹配时)
tr(UVW)=tr(WUV)=tr(VWU)\mathrm{tr}(UVW)=\mathrm{tr}(WUV)=\mathrm{tr}(VWU)
  1. 用微分读梯度(列向量约定)
df=(xf)dx\mathrm{d}f=(\nabla_{\mathbf{x}} f)^\top \mathrm{d}\mathbf{x}

2. 二次型我到底是怎么推出来的

目标:

f(x)=xAxf(\mathbf{x})=\mathbf{x}^\top A\mathbf{x}

第一步,直接对乘积微分:

df=d(xAx)=dxAx+xAdx\mathrm{d}f=\mathrm{d}(\mathbf{x}^\top A\mathbf{x}) =\mathrm{d}\mathbf{x}^\top A\mathbf{x}+\mathbf{x}^\top A\,\mathrm{d}\mathbf{x}

用“标量转置不变”处理它:

dxAx=(dxAx)=xAdx\mathrm{d}\mathbf{x}^\top A\mathbf{x} =\left(\mathrm{d}\mathbf{x}^\top A\mathbf{x}\right)^\top =\mathbf{x}^\top A^\top \mathrm{d}\mathbf{x}

代回去:

df=xAdx+xAdx=x(A+A)dx\mathrm{d}f=\mathbf{x}^\top A^\top \mathrm{d}\mathbf{x}+\mathbf{x}^\top A\mathrm{d}\mathbf{x} =\mathbf{x}^\top (A^\top+A)\mathrm{d}\mathbf{x}

再改成“梯度点乘”格式:

df=((A+A)x)dx\mathrm{d}f=\left((A+A^\top)\mathbf{x}\right)^\top \mathrm{d}\mathbf{x}

所以:

xf=(A+A)x\nabla_{\mathbf{x}} f=(A+A^\top)\mathbf{x}

AA 对称(A=AA=A^\top):

xf=2Ax\nabla_{\mathbf{x}} f=2A\mathbf{x}

3. 最小二乘

f(x)=12Axb22=12(Axb)(Axb)f(\mathbf{x})=\frac12\|A\mathbf{x}-\mathbf{b}\|_2^2 =\frac12(A\mathbf{x}-\mathbf{b})^\top(A\mathbf{x}-\mathbf{b})

设残差 r=Axb\mathbf{r}=A\mathbf{x}-\mathbf{b},则

f=12rrf=\frac12\mathbf{r}^\top\mathbf{r}

先对 r\mathbf{r} 微分:

dr=Adx\mathrm{d}\mathbf{r}=A\,\mathrm{d}\mathbf{x}

再微分 ff

df=12(drr+rdr)=rdr=rAdx\mathrm{d}f=\frac12\left(\mathrm{d}\mathbf{r}^\top\mathbf{r}+\mathbf{r}^\top\mathrm{d}\mathbf{r}\right) =\mathbf{r}^\top\mathrm{d}\mathbf{r} =\mathbf{r}^\top A\,\mathrm{d}\mathbf{x}

整理成读梯度格式:

df=(Ar)dx\mathrm{d}f=(A^\top\mathbf{r})^\top\mathrm{d}\mathbf{x}

所以:

xf=A(Axb)\nabla_{\mathbf{x}} f=A^\top(A\mathbf{x}-\mathbf{b})

4. 我常用的两个矩阵微分公式(附来路)

4.1 逆矩阵微分

从恒等式 XX1=IXX^{-1}=I 出发:

d(XX1)=0\mathrm{d}(XX^{-1})=0 dXX1+Xd(X1)=0\mathrm{d}X\,X^{-1}+X\,\mathrm{d}(X^{-1})=0

左乘 X1X^{-1}

d(X1)=X1(dX)X1\mathrm{d}(X^{-1})=-X^{-1}(\mathrm{d}X)X^{-1}

4.2 logdetX\log\det X 的微分

dlogdetX=tr(X1dX)\mathrm{d}\log\det X=\mathrm{tr}(X^{-1}\mathrm{d}X)

于是可读出:

XlogdetX=(X1)\frac{\partial}{\partial X}\log\det X=(X^{-1})^\top