约定与形状

矩阵求导第一戒律:先问形状。不要一上来就挥舞公式。公式像出租车,方向对了才有用;方向错了,跑得越快越离谱。

对象 形状 常见导数 答案形状
标量 \(f\) \(1\times 1\) \(\partial f/\partial \boldsymbol{x}\) 与 \(\boldsymbol{x}\) 同形,通常是列向量
标量 \(f\) \(1\times 1\) \(\partial f/\partial \boldsymbol{X}\) 与 \(\boldsymbol{X}\) 同形
向量 \(\boldsymbol{y}\) \(m\times 1\) \(\partial \boldsymbol{y}/\partial \boldsymbol{x}\) Jacobian,通常 \(m\times n\)
矩阵 \(\boldsymbol{Y}\) \(m\times n\) \(\partial \boldsymbol{Y}/\partial \boldsymbol{X}\) 线性算子;向量化后是矩阵

分子布局与分母布局

向量求导有两大门派:分子布局和分母布局。它们像两种地图投影,不能说谁绝对正确,但你不能今天用一种,明天用另一种,然后怪指南针不忠诚。

对向量 \(\boldsymbol{y}\in\mathbb{\boldsymbol{R}}^m\)、\(\boldsymbol{x}\in\mathbb{\boldsymbol{R}}^n\),本文采用常见机器学习写法:

\[ J = \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}} \in \mathbb{\boldsymbol{R}}^{m\times n}, \qquad J_{ij}=\frac{\partial y_i}{\partial x_j}. \]

这意味着若 \(f\) 是标量,\(\nabla_{\boldsymbol{x}} f\) 是与 \(\boldsymbol{x}\) 同形的列向量。这个约定适合优化和反向传播,因为梯度像一张账单:变量有几项,账单就有几项。

本文采用的梯度定义

若 \(f\) 是标量,\(\boldsymbol{X}\in\mathbb{\boldsymbol{R}}^{m\times n}\),我们定义 \(\nabla_{\boldsymbol{X}} f\) 与 \(\boldsymbol{X}\) 同形,并满足:

\[ df = \mathrm{tr}\left((\nabla_{\boldsymbol{X}} f)^T dX\right). \]

这句话极其重要。它就像机场行李牌:最后只要你能把 \(df\) 整理成 \(\mathrm{tr}(\boldsymbol{G}^T dX)\),那么 \(\boldsymbol{G}\) 就是 \(\nabla_{\boldsymbol{X}} f\)。中间出现过多少转置、乘法、迹和逆矩阵,都只是安检队伍里的乘客。