机器学习数学基础 120 章

矩阵微分与常用矩阵导数

层级:B|按需

1. 本章目标

矩阵微积分把“对许多参数逐个求偏导”压缩成形状清晰的向量/矩阵公式。你需要能推导线性回归、L2 正则化和简单神经网络层的梯度,并知道不同资料的布局约定可能不同。

本章默认:标量对列向量的梯度仍为同形状列向量;标量对矩阵的梯度与矩阵同形状。

2. 先做形状检查

f:RdR,f:\mathbb R^d\to\mathbb R,

xfRd.\nabla_xf\in\mathbb R^d.

f:Rm×nR,f:\mathbb R^{m\times n}\to\mathbb R,

定义梯度 XfRm×n\nabla_Xf\in\mathbb R^{m\times n},满足一阶变化

dfXf,dXF=tr((Xf)TdX).df\approx\langle\nabla_Xf,dX\rangle_F =\operatorname{tr}((\nabla_Xf)^T dX).

形状错的“导数公式”一定错;形状对只是必要条件,不是充分条件。

3. 微分法的核心思想

把输入小变化记为 dxdxdXdX,计算输出的一阶变化,并整理成标准形式。

常用规则:

d(A+B)=dA+dB,d(A+B)=dA+dB, d(AB)=(dA)B+A(dB),d(AB)=(dA)B+A(dB), d(AT)=(dA)T.d(A^T)=(dA)^T.

AA 为常量,dA=0dA=0

对标量函数,若能整理为

df=gTdx,df=g^Tdx,

xf=g\nabla_xf=g;若整理为

df=tr(GTdX),df=\operatorname{tr}(G^TdX),

Xf=G\nabla_Xf=G

4. 向量线性函数

f(x)=aTx.f(x)=a^Tx.

微分:

df=aTdx,df=a^Tdx,

所以

x(aTx)=a.\nabla_x(a^Tx)=a.

f(x)=xTaf(x)=x^Ta,结果相同,因为它是同一个标量。

5. 二次型

f(x)=xTAx.f(x)=x^TAx.

使用乘积法则:

df=(dx)TAx+xTA(dx).df=(dx)^TAx+x^TA(dx).

第一项是标量,可转置为 xTATdxx^TA^Tdx,所以

df=xT(AT+A)dx=((A+AT)x)Tdx.df=x^T(A^T+A)dx =((A+A^T)x)^Tdx.

因此

x(xTAx)=(A+AT)x.\nabla_x(x^TAx)=(A+A^T)x.

AA 对称:

x(xTAx)=2Ax.\nabla_x(x^TAx)=2Ax.

特别地

xx22=2x.\nabla_x\|x\|_2^2=2x.

6. 仿射映射的 Jacobian

y=Ax+by=Ax+b

的微分为

dy=A,dx,dy=A,dx,

所以 Jacobian 是 AA。若后面有标量损失 L(y)L(y),链式法则给

xL=ATyL.\nabla_xL=A^T\nabla_yL.

这就是全连接层反向传播到输入的核心公式。

7. 最小二乘梯度

定义

L(w)=12Xwy22.L(w)=\frac12\|Xw-y\|_2^2.

令残差 r=Xwyr=Xw-y,则

dL=rTdr=rTX,dw.dL=r^Tdr=r^TX,dw.

整理为

dL=(XTr)Tdw,dL=(X^Tr)^Tdw,

所以

wL=XT(Xwy).\nabla_wL=X^T(Xw-y).

若没有 1/21/2,梯度多一个因子 2。令梯度为零即得到正规方程。

8. 对权重矩阵的梯度

Z=XW,L=L(Z),Z=XW, \qquad L=L(Z),

上游梯度为 G=ZLG=\nabla_ZL。因

dZ=X,dW,dZ=X,dW, dL=tr(GTdZ)=tr(GTX,dW)=tr((XTG)TdW),dL=\operatorname{tr}(G^TdZ) =\operatorname{tr}(G^TX,dW) =\operatorname{tr}((X^TG)^TdW),

WL=XTG.\nabla_WL=X^TG.

若也对 XX 求导:

XL=GWT.\nabla_XL=GW^T.

这两式是批量全连接层反向传播。

9. 迹导数

常用结果:

Xtr(ATX)=A,\nabla_X\operatorname{tr}(A^TX)=A, Xtr(AXB)=ATBT,\nabla_X\operatorname{tr}(AXB)=A^TB^T,

其中第二式假设整体迹为标量且形状兼容。更安全的方法是每次用微分和迹循环性推导,而非机械套表。

10. 逆与 log-determinant 微分

XX1=IXX^{-1}=I 微分:

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

对可逆 XX

dlogdetX=tr(X1dX),d\log|\det X|=\operatorname{tr}(X^{-1}dX),

因此在相应定义域内

XlogdetX=XT.\nabla_X\log|\det X|=X^{-T}.

它们用于高斯似然、协方差优化和生成模型。实际计算仍通过线性求解与分解,避免显式逆。

11. L1 不可导与次梯度

w1=jwj\|w\|_1=\sum_j|w_j|

wj0w_j\ne0 时导数为 sign(wj)\operatorname{sign}(w_j),在 0 处没有普通导数。可使用次梯度集合 [1,1][-1,1] 或近端算子。不能简单宣称 0 处导数为 0 而不说明算法约定。

12. 梯度检查

对某方向 DD,中心差分近似方向导数:

f(X+ϵD)f(XϵD)2ϵXf,DF.\frac{f(X+\epsilon D)-f(X-\epsilon D)}{2\epsilon} \approx\langle\nabla_Xf,D\rangle_F.

选择多个随机方向可检验解析/自动微分梯度。ϵ\epsilon 太大有截断误差,太小有浮点消去误差,双精度常从 10510^{-5} 左右尝试。

易错点

  1. 不同教材可能采用 numerator/denominator layout,Jacobian 会转置;先看约定。
  2. 矩阵乘法不能在求导过程中随意换序。
  3. 对称假设未给出时,xTAxx^TAx 梯度不是简单 2Ax2Ax
  4. 目标必须为标量才能直接谈同形状梯度。
  5. 自动微分给出计算图的导数,不能修复形状正确但目标写错的问题。

常见问答

Q1:需要背矩阵求导表吗?

记住少量核心式和微分—迹方法更可靠。遇到复杂式先拆计算图、写形状,再推导或让自动微分验证。

Q2:为什么损失常乘 1/21/2

平方项求导会产生 2,乘 1/21/2 后抵消,使梯度简洁;不改变最优点。

Q3:自动微分是否意味着不用学矩阵微积分?

仍需理解梯度形状、链式法则、数值稳定和目标设计,才能调试模型、阅读论文和实现新算子。

练习

  1. x(bTx+c)\nabla_x(b^Tx+c)
  2. x12xa22\nabla_x\frac12\|x-a\|_2^2
  3. AA 对称,求 x(12xTAxbTx)\nabla_x(\frac12x^TAx-b^Tx)
  4. L(W)=12XWYF2L(W)=\frac12\|XW-Y\|_F^2,写出梯度。
  5. 为什么梯度检查更适合用中心差分而非单边差分?

答案与提示

  1. bb
  2. xax-a
  3. AxbAx-b
  4. XT(XWY)X^T(XW-Y)
  5. 中心差分截断误差通常为 O(ϵ2)O(\epsilon^2),单边差分为 O(ϵ)O(\epsilon)