常见菜谱

下面这些公式不建议死背。建议像学菜谱一样学:知道火候、知道为什么放盐,之后换食材也不慌。

线性函数:\(f=\mathrm{tr}(\boldsymbol{A}^T \boldsymbol{X})\)

\[ df=\mathrm{tr}(\boldsymbol{A}^T d\boldsymbol{X}), \qquad \nabla_{\boldsymbol{X}} f=\boldsymbol{A}. \]

这是白米饭级别的公式。朴素,但所有复杂菜最后都要回到它这种认领方式。

二次型:\(f=\boldsymbol{x}^T \boldsymbol{A} \boldsymbol{x}\)

\[ df=d\boldsymbol{x}^T \boldsymbol{A} \boldsymbol{x}+\boldsymbol{x}^T \boldsymbol{A} dx =((\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{x})^T dx, \] \[ \nabla_{\boldsymbol{x}} f=(\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{x}. \]

若 \(\boldsymbol{A}=\boldsymbol{A}^T\),则 \(\nabla_{\boldsymbol{x}} f=2Ax\)。对称条件像门票,没票不要硬闯。

最小二乘:\(f=\|\boldsymbol{A}\boldsymbol{x}-\boldsymbol{b}\|_2^2\)

令 \(\boldsymbol{r}=\boldsymbol{A}\boldsymbol{x}-\boldsymbol{b}\),则:

\[ df=2r^Tdr=2(\boldsymbol{A}\boldsymbol{x}-\boldsymbol{b})^T \boldsymbol{A}\,dx, \qquad \nabla_{\boldsymbol{x}} f=2\boldsymbol{A}^T(\boldsymbol{A}\boldsymbol{x}-\boldsymbol{b}). \]

\(\boldsymbol{A}^T\) 是回程门。误差在观测空间产生,但责任要分摊回参数空间,就必须经过这道门。

矩阵最小二乘:\(f=\|\boldsymbol{A}\boldsymbol{X}-\boldsymbol{B}\|_F^2\)

令 \(\boldsymbol{R}=\boldsymbol{A}\boldsymbol{X}-\boldsymbol{B}\),则:

\[ df=2\mathrm{tr}(\boldsymbol{R}^T \boldsymbol{A}\,dX) =2\mathrm{tr}((\boldsymbol{A}^TR)^T dX), \] \[ \nabla_{\boldsymbol{X}} f=2\boldsymbol{A}^T(\boldsymbol{A}\boldsymbol{X}-\boldsymbol{B}). \]

它是向量最小二乘的矩阵版。像项目复盘:先看结果哪里偏了,再把偏差沿流程倒推回每个部门。

log det:\(f=\log\det \boldsymbol{X}\)

若 \(\boldsymbol{X}\) 可逆,且在正定矩阵里最常见:

\[ d\log\det \boldsymbol{X}=\mathrm{tr}(\boldsymbol{X}^{-1}dX), \] \[ \nabla_{\boldsymbol{X}} f=\boldsymbol{X}^{-T}. \]

\(\log\det \boldsymbol{X}\) 像在量一个线性变换把空间“撑大”了多少。它对 \(\boldsymbol{X}\) 的敏感度由 \(\boldsymbol{X}^{-T}\) 控制:已经被撑得很大的方向,再撑一点不那么稀奇;薄得像纸的方向,动一下就很要命。

逆矩阵与迹:\(f=\mathrm{tr}(\boldsymbol{A} \boldsymbol{X}^{-1})\)

\[ df=\mathrm{tr}(\boldsymbol{A}\,d\boldsymbol{X}^{-1}) =-\mathrm{tr}(\boldsymbol{A} \boldsymbol{X}^{-1}dX \boldsymbol{X}^{-1}), \] \[ df=-\mathrm{tr}(\boldsymbol{X}^{-1} \boldsymbol{A} \boldsymbol{X}^{-1} dX), \qquad \nabla_{\boldsymbol{X}} f=-(\boldsymbol{X}^{-1}\boldsymbol{A}\boldsymbol{X}^{-1})^T. \]

逆矩阵的导数总带负号,因为你把门开大一点,门的“阻力”就小一点。它像预算表:某处增加自由度,约束强度就会反方向变化。

softmax 与交叉熵

设 \(\boldsymbol{p}=\mathrm{softmax}(\boldsymbol{z})\),\(L=-\sum_i y_i\log p_i\),且 \(\boldsymbol{y}\) 是 one-hot 或概率标签,则:

\[ \nabla_z L=\boldsymbol{p}-\boldsymbol{y}. \]

这个结果短得离谱,却是深度学习里最漂亮的小魔术之一。softmax 把分数变成概率,交叉熵把“该相信谁”写成惩罚,最后梯度只是“模型相信的”和“应该相信的”之间的差。像老师改卷,不写长篇批注,只在答案旁边标出偏差。