Softmax 与缩放点积的数学:Attention 背后的概率与数值

前言 这篇文章是本站《Transformer 详解:从注意力机制到代码实战》的数学补充。它的定位非常具体:只讲"服务 Attention 的数学",不重复基础线性代数。 我们假设你已经读过本站的《矩阵微积分如何服务反向传播》,理解 Jacobian 与向量-Jacobian 乘积(VJP)这两个概念。在此基础上,本文回答三个问题: softmax 的梯度长什么样,为什么是这个形式? 为什么 softmax 与交叉熵组合在一起,梯度会变得极简且数值稳定? 缩放点积注意力中的 $\sqrt{d_k}$ 究竟从哪里来,为什么非除不可? Softmax 定义与直觉 给定一个实数向量 $z \in \mathbb{R}^n$(常称为 logits,即未归一化的分数),softmax 把它映射成一个概率分布: $$ \text{softmax}(z)_i = \frac{e^{z_i}}{\sum_j e^{z_j}} $$三个值得记住的性质: 输出非负且和为 1:天然是概率分布。 放大差异:指数运算放大了 logits 之间的差距。$z = [1, 2]$ 时,softmax 输出约 $[0.27, 0.73]$,而不是线性的 $[0.33, 0.67]$——赢家更突出。 平移不变:$\text{softmax}(z + c) = \text{softmax}(z)$(对任意常数 $c$)。分子分母同乘 $e^c$,抵消了。这个性质是后面 log-sum-exp 技巧的基础。 还有一个常被提及的变体:温度参数 $T$,写作 $\text{softmax}(z / T)$。$T < 1$ 时分布更"尖锐"(注意力更集中),$T > 1$ 时更"平滑"。在 Attention 里,softmax 的温度直接控制"注意力有多集中"。 Softmax 的梯度 softmax 的输入输出都是向量,所以它的"导数"是一个 Jacobian 矩阵。记 $s_i = \text{softmax}(z)_i$,并令分母 $Z = \sum_k e^{z_k}$。 ...

📅 August 3, 2026 · ⏱️ 12 min · 📝 约 1888 字 · 👁️ 次阅读

线性代数进阶:矩阵微积分如何服务反向传播

前言 这一篇不是基础线性代数笔记。矩阵乘法、转置、逆矩阵、特征值这些基础概念默认你已经见过。我们只关心一个更具体的问题:为什么深度学习里的反向传播经常要用矩阵微积分来描述? 在标量函数里,导数告诉我们“输入变化一点,输出会怎么变”。但神经网络里大量对象都不是标量:输入是向量,权重是矩阵,中间特征是高维张量,损失函数最后才压成一个标量。因此,普通的一元导数不够用,我们需要用 Jacobian、梯度向量和链式法则来描述这些对象之间的局部关系。 从标量导数到 Jacobian 设一个函数把向量 $x \in \mathbb{R}^n$ 映射到向量 $y \in \mathbb{R}^m$: $$ y = f(x) $$它的 Jacobian 矩阵定义为: $$ \begin{aligned} J_f(x) &= \frac{\partial y}{\partial x} \\\\ &= \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \cdots & \frac{\partial y_1}{\partial x_n} \\\\ \vdots & \ddots & \vdots \\\\ \frac{\partial y_m}{\partial x_1} & \cdots & \frac{\partial y_m}{\partial x_n} \end{bmatrix} \end{aligned} $$Jacobian 的含义不是“又多了一个复杂矩阵”,而是:它描述了函数 $f$ 在某一点附近的局部线性近似。 $$ f(x + \Delta x) \approx f(x) + J_f(x)\Delta x $$这就是 AI 中 Jacobian 最重要的直觉:非线性网络在局部可以近似看成线性变换。 ...

📅 August 1, 2026 · ⏱️ 9 min · 📝 约 1361 字 · 👁️ 次阅读
Comments