机器学习数学基础 120 章

矩阵微分与常用矩阵导数

层级:B|按需

1. 本章目标

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

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

2. 先做形状检查

若

f:Rd→R,f:\mathbb R^d\to\mathbb R,

则

∇xf∈Rd.\nabla_xf\in\mathbb R^d.

若

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

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

df≈⟨∇Xf,dX⟩F=tr⁡((∇Xf)TdX).df\approx\langle\nabla_Xf,dX\rangle_F =\operatorname{tr}((\nabla_Xf)^T dX).

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

3. 微分法的核心思想

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

常用规则:

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.

特别地

∇x∥x∥22=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=AT∇yL.\nabla_xL=A^T\nabla_yL.

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

7. 最小二乘梯度

定义

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

令残差 r=Xw−yr=Xw-y,则

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

整理为

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

所以

∇wL=XT(Xw−y).\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 微分

由 XX−1=IXX^{-1}=I 微分:

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

对可逆 XX:

dlog⁡∣det⁡X∣=tr⁡(X−1dX),d\log|\det X|=\operatorname{tr}(X^{-1}dX),

因此在相应定义域内

∇Xlog⁡∣det⁡X∣=X−T.\nabla_X\log|\det X|=X^{-T}.

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

11. L1 不可导与次梯度

∥w∥1=∑j∣wj∣\|w\|_1=\sum_j|w_j|

在 wj≠0w_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,D⟩F.\frac{f(X+\epsilon D)-f(X-\epsilon D)}{2\epsilon} \approx\langle\nabla_Xf,D\rangle_F.

选择多个随机方向可检验解析/自动微分梯度。ϵ\epsilon 太大有截断误差,太小有浮点消去误差,双精度常从 10−510^{-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. 求 ∇x12∥x−a∥22\nabla_x\frac12\|x-a\|_2^2。
  3. 若 AA 对称,求 ∇x(12xTAx−bTx)\nabla_x(\frac12x^TAx-b^Tx)。
  4. 对 L(W)=12∥XW−Y∥F2L(W)=\frac12\|XW-Y\|_F^2,写出梯度。
  5. 为什么梯度检查更适合用中心差分而非单边差分?

答案与提示

  1. bb。
  2. x−ax-a。
  3. Ax−bAx-b。
  4. XT(XW−Y)X^T(XW-Y)。
  5. 中心差分截断误差通常为 O(ϵ2)O(\epsilon^2),单边差分为 O(ϵ)O(\epsilon)。