技术博客

微分法求矩阵导数:trace 技巧入门与四个标准战例

第 3 / 147 篇 · 2026-06-18 · ai · 矩阵求导trace技巧最小二乘

上一篇确立了链式法则的矩阵形态,但真到推导一个具体损失对权重矩阵的梯度时,逐分量求 $\partial f/\partial X_{ij}$ 再拼回去依然是体力活。矩阵微分法(differential calculus)是绕开下标地狱的正路:全程只跟矩阵整体打交道,最后一步才"读"出梯度。这篇把它从"上一篇用过的工具"升级成"一套可复用的流程",并用四个难度递进的例子练到肌肉记忆。

为什么 trace 是枢纽

微分法的核心观察:矩阵空间 $\mathbb{R}^{m\times n}$ 上可以定义内积

$$ \langle A,B\rangle_F=\mathrm{tr}(A^\top B)=\sum_{i,j}A_{ij}B_{ij}, $$

这就是把矩阵拉直成向量之后的普通点积(Frobenius 内积)。梯度的定义本来就由内积给出:$f$ 在 $X$ 处沿方向 $V$ 的方向导数满足 $df=\langle G,V\rangle$,其中 $G$ 就是梯度。所以只要能把微分整理成

$$ df=\mathrm{tr}(G^\top\,dX) $$

的形式,$G$ 就唯一地是 $\partial f/\partial X$——这是 Riesz 表示定理在矩阵空间的直接套用。推导的全部工作量因此集中在一件事上:把 $df$ 算出来,然后做代数变形把 $dX$ 挪到最右边。

挪 $dX$ 用的恒等式只有四条,但值得一条条想清楚为什么成立:

$$ \mathrm{tr}(A^\top)=\mathrm{tr}(A),\qquad \mathrm{tr}(A+B)=\mathrm{tr}(A)+\mathrm{tr}(B), $$ $$ \mathrm{tr}(ABC)=\mathrm{tr}(CAB)=\mathrm{tr}(BCA),\qquad \mathrm{tr}(A^\top B)=\mathrm{tr}(B^\top A)=\mathrm{tr}(AB^\top). $$

第三条循环不变性是最容易用错的:只能循环轮换,不能随意交换。$\mathrm{tr}(ABC)\neq\mathrm{tr}(ACB)$ 一般成立不了,因为 $ABC$ 与 $ACB$ 本身就不是同一个矩阵。直觉上 trace 是"对角线求和",把乘积链首尾相接旋转一圈,每个元素在乘积中的相对顺序不变,对角和当然不变;而交换两项改变了相对顺序,对角和就变了。记住"循环可以、交换不行",九成的 trace 变形错误都能避开。

微分规则也只需要两条:乘积法则 $d(XY)=dX\cdot Y+X\cdot dY$(矩阵乘法不可交换,顺序必须保留),以及 $d\,\mathrm{tr}(X)=\mathrm{tr}(dX)$。外加常数矩阵的微分为零。这就是全部弹药。

三步配方与流程

固定流程永远是这三步,先画出来再实战:

微分法三步配方:全程不碰下标,最后一步直接读出梯度矩阵 ① 算 df 乘积法则 + 常数微分为零 ② 挪 dX 到最右 循环轮换 / 整体转置,禁交换 ③ 读 G df = tr(GᵀdX) ⇒ ∂f/∂X = G 自查清单:G 的形状必须与 X 相同;若不对称,检查是否转置错位

战例一:线性型 $f=\mathrm{tr}(AX)$

最简情形,目的是校准"读"的动作。$A$ 是常数矩阵,$X\in\mathbb{R}^{m\times n}$,则 $A\in\mathbb{R}^{n\times m}$(否则乘积不合法)。微分:$df=\mathrm{tr}(A\,dX)$。要配成 $\mathrm{tr}(G^\top dX)$,显然 $G^\top=A$,即

$$ \frac{\partial f}{\partial X}=A^\top. $$

形状自检:$A^\top$ 是 $m\times n$,与 $X$ 相同,通过。这条看起来平凡,但它是"tr 内积即逐元素内积"的直接推论,后面所有推导的终点都是把表达式化归到这一步。

战例二:双线性型 $f=a^\top Xb$

$a\in\mathbb{R}^m$、$b\in\mathbb{R}^n$ 是常向量。先把标量写成 trace——标量等于它自己的 trace,这是微分法里最常用的一手腾挪:

$$ f=a^\top Xb=\mathrm{tr}(a^\top Xb)=\mathrm{tr}(ba^\top X), $$

最后一步用了循环轮换(把 $ba^\top$ 看作整体)。于是 $df=\mathrm{tr}(ba^\top dX)$,读出

$$ \frac{\partial f}{\partial X}=(ba^\top)^\top=ab^\top. $$

外积 $ab^\top$ 的形状 $m\times n$ 与 $X$ 一致。这个"梯度=外积"的形态和线性层梯度 $\bar W=\bar y x^\top$ 是同一回事:双线性型对矩阵的导数永远是两个端点向量的外积。

战例三:二次型 $f=\mathrm{tr}(X^\top AX)$

$A$ 为常数矩阵,$X\in\mathbb{R}^{n\times k}$。乘积法则拆两项:

$$ df=\mathrm{tr}(dX^\top AX)+\mathrm{tr}(X^\top A\,dX). $$

第二项已经是 $\mathrm{tr}(\cdot\, dX)$ 形态,直接读出系数 $(X^\top A)^\top=A^\top X$。第一项里 $dX$ 藏在转置里,处理手法是整体取转置:标量的 trace 等于其转置的 trace,

$$ \mathrm{tr}(dX^\top AX)=\mathrm{tr}\big((dX^\top AX)^\top\big)=\mathrm{tr}(X^\top A^\top dX), $$

读出系数 $A X$(注意 $(X^\top A^\top)^\top=AX$)。合并:

$$ \frac{\partial f}{\partial X}=AX+A^\top X. $$

当 $A$ 对称时退化为 $2AX$,和标量二次型 $\frac{d}{dx}(ax^2)=2ax$ 完美对应。这个退化关系很有用但也很危险——前提"$A$ 对称"忘了检查,结果就差一倍。大纲后面有专篇讨论对称矩阵求导的坑,这里先记住结论的来源。

战例四:最小二乘 $f=\|XW-Y\|_F^2$

这是最接近实战的一个:线性回归(以及任何线性层的 MSE 损失)都是它。设 $X\in\mathbb{R}^{n\times d}$、$W\in\mathbb{R}^{d\times k}$、$Y\in\mathbb{R}^{n\times k}$,令残差 $E=XW-Y$,则 $f=\mathrm{tr}(E^\top E)$。微分:

$$ df=2\,\mathrm{tr}(E^\top dE)=2\,\mathrm{tr}(E^\top X\,dW), $$

(第一步利用 $\mathrm{tr}(dE^\top E)=\mathrm{tr}(E^\top dE)$,因为两者互为转置、trace 相同;第二步代入 $dE=X\,dW$。)读出

$$ \frac{\partial f}{\partial W}=2X^\top E=2X^\top(XW-Y). $$

到这里顺手的做法是令梯度为零,得到正规方程

$$ X^\top X\,W=X^\top Y\quad\Longrightarrow\quad W^\star=(X^\top X)^{-1}X^\top Y. $$

这个闭式解有几何读法:$XW^\star$ 是 $Y$ 在 $X$ 列空间上的投影,梯度为零恰好就是"残差与列空间正交"($X^\top E=0$)。矩阵求导不是符号游戏,梯度为零的条件往往就是某个正交性命题——以后看到 $\nabla L=0$ 不妨都问一句:谁和谁正交了?

战例五:含逆矩阵的 f=tr(AX⁻¹)

最后一个战例预告第一章结尾的内容。$X$ 可逆、$A$ 常量,$f=\mathrm{tr}(AX^{-1})$。微分需要逆的微分规则:由 $XX^{-1}=I$ 两边微分得 $dX^{-1}=-X^{-1}dX\,X^{-1}$(行列式与逆矩阵那篇会完整推导),代入:

$$ df=\mathrm{tr}\big(A\cdot(-X^{-1}dX\,X^{-1})\big)=-\mathrm{tr}\big(X^{-1}AX^{-1}dX\big), $$

第二步循环轮换把 $dX$ 挪到最右。读出

$$ \frac{\partial f}{\partial X}=-X^{-\top}A^\top X^{-\top}. $$

三步全是本篇清单里的操作:乘积法则、循环轮换、读转置。含逆矩阵的表达式看着唬人,拆开就是三板斧——这个梯度在高斯 MLE(对协方差求导)和精密测量里的 Cramér–Rao 界推导中都是主力。

容易踩的三个坑

一是循环轮换和交换混用,前面说过,不再重复。二是忘记标量转置:$a^\top Xb$ 这类标量随手转置是合法且常用的(转置后等于 $b^\top X^\top a$),但转置会改变表达式里矩阵的顺序,做完必须对照形状确认。三是把 $dX$ 当向量处理:$dX$ 是矩阵增量,乘积法则里 $d(XY)=dX\cdot Y+X\cdot dY$ 的每一项都是矩阵乘,不能写成 $Y\,dX$。这三个坑的共同点是可以用"形状自检"兜底——每一步变形后检查等号两边形状一致,错误立刻显形。

练熟这四个战例之后,LayerNorm、注意力里出现的所有矩阵梯度都不再有新东西:无非是"代入中间变量 → 乘积法则 → 循环轮换 → 读外积"的循环。下一篇换个视角,从自动微分的实现层面看反向传播为什么必须是 reverse mode。