Softmax 的几何本质#
Transformer 的注意力机制表面上是在做加权平均:
yt=i∑ativi.
但真正控制信息流向的核心,并不是 value 向量本身,而是注意力权重 ati 如何生成。
在一个 attention head 中,模型先计算 query 与 key 的匹配分数:
zti=dkqt⊤ki+mti,
其中 qt 是当前位置的 query,ki 是上下文位置 i 的 key,mti 是 mask,zti 是 attention logit。
随后,Transformer 使用 softmax 将 logits 转化成概率分布:
ati=∑jexp(ztj/τ)exp(zti/τ).
最终,模型通过 yt=∑iativi 完成信息聚合。
因此,attention 的核心机制链条可以写成:
Q,K⟶Z=dkQK⊤+M⟶A=softmax(Z/τ)⟶Y=AV.
上一篇已经讨论了 attention 熵如何刻画信息路由宽度。这一篇不再重复“低熵路由”和“隧道视野”,而是专门看 softmax 本身:
softmax 到底把 logit 空间的什么几何结构,变成了概率单纯形上的竞争结构?
答案可以浓缩成一句话:
softmax 不是普通归一化,而是从“相对 logit 优势”到“概率质量比例”的指数坐标变换。
1. Softmax 把实向量映射到概率单纯形#
给定 logits:
z=[z1,z2,…,zn]∈Rn,
softmax 定义为:
pi=∑j=1nexp(zj)exp(zi).
输出 p=[p1,…,pn] 满足:
pi>0,i∑pi=1.
也就是说,softmax 不是把 Rn 映射回另一个普通向量空间,而是映射到概率单纯形内部:
Δintn−1={p∈Rn:pi>0, i∑pi=1}.
这个视角很重要。logits 生活在一个无约束空间里,而 probabilities 生活在一个有约束的几何对象上。softmax 的工作,就是把无约束的竞争分数,变成单纯形上的一个点。
在 n=3 时,概率单纯形是一个三角形。三个顶点分别表示:
[1,0,0],[0,1,0],[0,0,1].
三角形中心表示均匀分布:
[31,31,31].
softmax 的几何作用可以理解为:logit 向量决定这个点在单纯形里靠近哪个顶点、离中心多远、沿哪条竞争方向移动。
2. 它只关心相对差值,而不是绝对大小#
很多人第一次看 softmax,会以为它在比较 logits 的绝对大小。实际上,softmax 真正使用的是相对差值。
对所有 logits 同时加上常数 c:
zi′=zi+c.
新的 softmax 为:
pi′=∑jexp(zj+c)exp(zi+c)=exp(c)∑jexp(zj)exp(c)exp(zi)=pi.
因此:
softmax(z+c1)=softmax(z).
这说明 softmax 对整体平移不敏感。它丢掉了 1=[1,…,1] 这个方向,只保留垂直于 1 的差值结构。
更几何地说,softmax 真正作用的不是整个 Rn,而是商空间:
Rn/span{1}.
也可以把 logits 先中心化:
z~i=zi−n1j∑zj.
由于平移不变性:
softmax(z)=softmax(z~).
所以 [1,2,3] 和 [101,102,103] 会产生完全一样的概率分布,因为它们具有相同的内部间隔结构。
放回 attention 里,真正重要的不是某个 zti 本身有多大,而是:
zti−ztj.
也就是位置 i 相比位置 j 有多少相对优势。
3. Log-odds:softmax 精确保留相对优势#
softmax 最干净的形式,不是直接看 pi,而是看概率比值。
对任意两个位置 i,j:
pjpi=exp(zj)exp(zi)=exp(zi−zj).
取对数得到:
logpjpi=zi−zj.
这条式子是 softmax 的核心。它说明:
logit 差值就是概率比值的对数。
带温度时:
pi=∑jexp(zj/τ)exp(zi/τ),
于是:
logpjpi=τzi−zj.
温度 τ 不是一个神秘的平滑按钮,而是在缩放所有 log-odds。
放到 attention 里:
logatjati=τzti−ztj.
如果忽略 mask 差异,则:
zti−ztj=dkqt⊤(ki−kj).
所以:
logatjati=dkτqt⊤(ki−kj).
这给出了一个很具体的解释:attention 的竞争不是“query 喜不喜欢某个 key”,而是“query 沿着 ki−kj 这个差分方向,更偏向谁”。
换句话说,softmax 把 key 之间的相对几何差异,变成了读取概率之间的 log-odds。
4. 二分类截面:sigmoid 是 softmax 的一条线#
二分类时,logits 为 z1,z2。令:
Δ=z1−z2.
则:
p1=exp(z1)+exp(z2)exp(z1)=1+exp(−Δ)1.
这正是 sigmoid:
p1=σ(Δ),p2=1−p1.
所以 sigmoid 可以看成 softmax 在二维概率单纯形上的截面。二维单纯形只是一条线段:
[1,0]⟷[0,1].
当 Δ=0 时:
p1=p2=21.
当 Δ→+∞ 时:
p1→1,p2→0.
当 Δ→−∞ 时:
p1→0,p2→1.
这说明 softmax 在多分类里的行为,本质上就是许多 pairwise log-odds 约束同时成立。每一对类别都由一个 logit 差值控制,但这些概率又必须共同落在同一个单纯形里。
5. Log-sum-exp:softmax 是平滑最大值的梯度#
softmax 还有一个更深的来源:它是 log-sum-exp 函数的梯度。
定义带温度的 log-sum-exp:
LSEτ(z)=τlogi∑exp(zi/τ).
对 zi 求偏导:
∂zi∂LSEτ(z)=∑jexp(zj/τ)exp(zi/τ)=pi.
因此:
∇zLSEτ(z)=softmax(z/τ).
这说明 softmax 不是随便选出来的归一化函数,而是一个凸势函数的梯度映射。
而 log-sum-exp 本身是最大值函数的平滑版本:
imaxzi≤LSEτ(z)≤imaxzi+τlogn.
当 τ→0 时:
LSEτ(z)→imaxzi.
对应地:
softmax(z/τ)→onehot(argimaxzi),
如果最大值唯一。
所以 softmax 可以理解为:
hardmax 的可微版本,或者平滑最大值的梯度。
这也解释了为什么它天然带有“赢家变强”的趋势:log-sum-exp 在逼近最大值,而 softmax 是这个平滑最大值对每个 logit 的敏感度。
6. 最大熵视角:softmax 是一个优化问题的解#
softmax 还可以从最大熵优化中推出。
给定 logits z,考虑在概率单纯形上选择一个分布 p,使得高分位置获得更大权重,但又不完全塌缩到单点:
p∈Δn−1max{i∑pizi+τH(p)},
其中:
H(p)=−i∑pilogpi.
第一项 ∑ipizi 鼓励把概率质量放到高 logit 上,第二项 τH(p) 鼓励分布保持熵。
写成拉格朗日函数:
L(p,λ)=i∑pizi−τi∑pilogpi+λ(i∑pi−1).
对 pi 求导并令其为 0:
zi−τ(logpi+1)+λ=0.
整理得到:
logpi=τzi+τλ−τ.
因此:
pi∝exp(zi/τ).
归一化后:
pi=∑jexp(zj/τ)exp(zi/τ).
这正是 softmax。
这个推导给出一个很重要的解释:
softmax 是“偏向高分”与“保持熵”之间的最优折中。
温度 τ 就是这个折中的权重。τ 越大,熵项越重要,分布越接近均匀;τ 越小,分数项越重要,分布越接近 argmax。
这比“softmax 会让分布变尖锐”更准确。softmax 不是单纯制造稀疏,而是在解一个熵正则化的选择问题。
7. 温度是 logit 空间的径向缩放#
由于 softmax 对整体平移不敏感,可以先把 logits 中心化为 z~。带温度的 softmax 等价于:
softmax(z/τ)=softmax(z~/τ).
也就是说,温度只作用在中心化后的差值空间里。
从几何上看,τ 改变的是 z~ 离原点的距离:
τz~=τ1∥z~∥.
当 τ→∞ 时:
τz~→0,
softmax 输出趋近单纯形中心:
pi→n1.
当 τ→0 时,z~/τ 沿着同一个方向被拉得很远,softmax 输出趋近某个顶点。
因此,温度不是改变“谁比谁大”的排序,而是改变竞争方向上的强度。它控制的是从单纯形中心走向顶点的距离。
这也解释了为什么温度调节常常能显著改变生成行为:它不是给概率做线性缩放,而是在 logit 差值空间里放大或压缩所有竞争关系。
8. Jacobian:softmax 的梯度是一个协方差矩阵#
softmax 的 Jacobian 为:
∂zj∂pi=τ1pi(I[i=j]−pj).
写成矩阵形式:
J=τ1(Diag(p)−pp⊤).
这个矩阵有一个非常漂亮的解释:它是 categorical distribution 的协方差矩阵。
如果随机变量 ei 以概率 pi 取第 i 个 one-hot 向量,那么:
Cov(e)=Diag(p)−pp⊤.
因此:
J=τ1Cov(e).
对任意方向 u∈Rn:
u⊤Ju=τ1i∑piui2−(i∑piui)2=τ1Vari∼p(ui).
这说明 softmax 的局部敏感度,等于某个方向在当前概率分布下的方差。
有两个结论很重要。
第一,整体平移方向没有梯度:
J1=0.
因为给所有 logits 加同一个常数不会改变 softmax。
第二,当分布接近某个顶点时,协方差会变小。若:
pr≈1,pi≈0(i=r),
则:
J≈0.
这就是 softmax 饱和。不是因为 softmax “坏掉了”,而是因为单纯形顶点附近已经没有多少概率质量可以重新分配。
9. 数值稳定性不是技巧,而是几何性质#
实际计算 softmax 时,通常不会直接写:
pi=∑jexp(zj)exp(zi).
因为当 zi 很大时,exp(zi) 可能溢出。
稳定写法是先减去最大值:
pi=∑kexp(zk−maxjzj)exp(zi−maxjzj).
这不是工程上的近似,而是完全等价:
softmax(z)=softmax(z−jmaxzj⋅1).
原因正是前面的平移不变性。减去最大值只是选了一个更稳定的坐标原点,让所有指数项都不超过 1:
zi−jmaxzj≤0.
所以,稳定 softmax 的本质是:在同一个等价类 z+c1 里,选择一个不会数值溢出的代表元。
10. 放回 Attention:query 在比较 key 的差分方向#
现在把 softmax 的几何性质放回 attention。
对固定目标位置 t,attention logits 为:
zti=dkqt⊤ki+mti.
两个候选位置 i,j 的 logit 差值是:
zti−ztj=dkqt⊤(ki−kj)+(mti−mtj).
如果 i,j 都没有被 mask,则:
zti−ztj=dkqt⊤(ki−kj).
对应的 attention 权重比为:
atjati=exp(dkτqt⊤(ki−kj)).
这个公式比“query 和 key 相似度越高,注意力越大”更精确。它说明:
query 不是孤立地评价每个 key,而是在所有 key 的差分方向上做竞争判断。
位置 i 是否获得更多注意力,不只取决于 qt⊤ki,还取决于它相对其他 key 的优势。
因此,softmax 给 attention 带来的不是普通归一化,而是三层机制:
- 把每一行 logits 投影到相对差值空间;
- 把 logit 差值转成概率 log-odds;
- 在概率单纯形上选择一个熵正则化的竞争分布。
softmax 可以从五个互相一致的角度理解。
第一,它是从无约束 logit 空间到概率单纯形内部的映射:
Rn⟶Δintn−1.
第二,它对整体平移不敏感,真正使用的是相对差值:
softmax(z+c1)=softmax(z).
第三,它精确保留 logit 差值与概率比值之间的关系:
logpjpi=τzi−zj.
第四,它是 log-sum-exp 的梯度:
∇zLSEτ(z)=softmax(z/τ).
第五,它是熵正则化选择问题的最优解:
softmax(z/τ)=argp∈Δn−1max{⟨p,z⟩+τH(p)}.
放回 Transformer,attention 中的 softmax 并不只是把分数“归一化为权重”。它把 query-key 产生的相对几何优势,转换成单纯形上的概率竞争结构。
所以,真正值得记住的不是:
softmax makes scores sum to one.
而是:
softmax turns relative logit geometry into probabilistic competition.
这才是 softmax 在 attention 中的几何本质。