常见菜谱
下面这些公式不建议死背。建议像学菜谱一样学:知道火候、知道为什么放盐,之后换食材也不慌。
线性函数:\(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 把分数变成概率,交叉熵把“该相信谁”写成惩罚,最后梯度只是“模型相信的”和“应该相信的”之间的差。像老师改卷,不写长篇批注,只在答案旁边标出偏差。