注意力熵与动态拓扑#
Transformer 的自注意力机制可以看成一个由输入动态生成的加权有向图。
在这个图里,token 是节点,注意力权重是边。第 t 个位置从第 i 个位置读取多少信息,不是提前写死的结构,而是由当前输入 X 经过 Q,K,V 投影、打分、mask 和 softmax 之后即时生成的。
这篇文章讨论一个更细的问题:
注意力分布的熵,能不能刻画 Transformer 的信息路由宽度?
答案是可以,但要小心解释。低熵注意力不是天然更好,高熵注意力也不是天然更好。它们分别对应不同的信息分配形态:低熵是窄路由,适合精确定位;高熵是宽覆盖,适合全局聚合。真正重要的是:注意力熵要和任务证据的分布形态匹配。
1. 自注意力是一张输入依赖的动态图#
给定第 ℓ 层的输入表示:
X(ℓ)=x1(ℓ)x2(ℓ)⋮xn(ℓ)∈Rn×dmodel,
其中 n 是序列长度,xi(ℓ) 是第 ℓ 层第 i 个 token 的表示。
对第 ℓ 层第 h 个 attention head,有三组线性投影:
Q(ℓ,h)=X(ℓ)WQ(ℓ,h),K(ℓ,h)=X(ℓ)WK(ℓ,h),V(ℓ,h)=X(ℓ)WV(ℓ,h).
其中:
WQ(ℓ,h),WK(ℓ,h)∈Rdmodel×dk,WV(ℓ,h)∈Rdmodel×dv.
对当前位置 t,query 向量是:
qt(ℓ,h)=xt(ℓ)WQ(ℓ,h).
对上下文位置 i,key 和 value 分别是:
ki(ℓ,h)=xi(ℓ)WK(ℓ,h),vi(ℓ,h)=xi(ℓ)WV(ℓ,h).
注意力打分为:
sti(ℓ,h)=dkqt(ℓ,h)⋅ki(ℓ,h)+mti.
这里的 mti 是 mask 项。对 causal language model:
mti={0,−∞,i≤t,i>t.
然后用 softmax 得到注意力权重:
ati(ℓ,h)=∑j∈Ωtexp(stj(ℓ,h)/τ)exp(sti(ℓ,h)/τ),
其中 τ>0 是温度系数,Ωt 是位置 t 可以看到的 token 集合。ati(ℓ,h) 表示位置 t 从位置 i 读取信息的强度。
最终,第 h 个 head 在位置 t 的输出为:
yt(ℓ,h)=i∈Ωt∑ati(ℓ,h)vi(ℓ,h).
所以,一个 attention head 实际上定义了动态图:
G(ℓ,h)(X)=(V,E,A(ℓ,h)),
其中:
V={1,2,…,n},A(ℓ,h)=[ati(ℓ,h)]t,i=1n.
边 i→t 的权重就是 ati(ℓ,h)。这个图是输入依赖的:输入 X 改变,Q,K,V 改变,分数矩阵 S 改变,最终注意力图 A 也改变。
2. 从注意力分布到香农熵#
固定层 ℓ、head h 和目标位置 t,注意力向量可以写成:
at(ℓ,h)=[at1(ℓ,h),at2(ℓ,h),…,atn(ℓ,h)].
由于 softmax 的归一化性质:
ati(ℓ,h)≥0,i∈Ωt∑ati(ℓ,h)=1,
at(ℓ,h) 可以被看成一个概率分布。
我们用香农熵衡量这个分布的分散程度:
Ht(ℓ,h)=−i∈Ωt∑ati(ℓ,h)log(ati(ℓ,h)+ε).
这里 ε 只是数值保护项,用来避免 log0。如果只在可见集合 Ωt 上计算,softmax 权重通常为正;如果把 mask 后的位置也放进向量里,则这些位置权重为 0,按惯例 0log0=0。
如果可见集合大小为 ∣Ωt∣=m,则:
0≤Ht(ℓ,h)≤logm.
低熵表示注意力集中。若几乎所有权重集中在某个位置 r:
atr(ℓ,h)≈1,ati(ℓ,h)≈0(i=r),
则:
Ht(ℓ,h)≈0.
图结构上,这意味着位置 t 的入边几乎只剩一条强边 r→t。
高熵表示注意力分散。若注意力接近均匀分布:
ati(ℓ,h)≈m1,i∈Ωt,
则:
Ht(ℓ,h)≈−i=1∑mm1logm1=logm.
图结构上,这意味着当前位置保留了大量中等强度的入边。
为了消除上下文长度影响,可以使用归一化熵:
Hˉt(ℓ,h)=log∣Ωt∣Ht(ℓ,h),0≤Hˉt(ℓ,h)≤1.
其中 Hˉt(ℓ,h)≈0 表示注意力极度集中,Hˉt(ℓ,h)≈1 表示注意力接近均匀。
还可以定义有效上下文大小:
Neff(t,ℓ,h)=exp(Ht(ℓ,h)).
这个量比原始熵更直观。若 Neff≈1,说明当前 head 几乎只在使用一个 token;若 Neff≈m,说明它正在接近均匀地使用 m 个 token。
3. 温度、logit 间隔与注意力尖锐化#
注意力权重由 softmax 产生:
ai=∑jexp(zj/τ)exp(zi/τ),
其中 zi 是 attention logit,τ 是温度。
为了看清温度的作用,只考虑两个 token,logit 分别是 z1,z2。定义间隔:
Δ=z1−z2.
则权重比为:
a2a1=exp(z2/τ)exp(z1/τ)=exp(τΔ).
这个式子直接说明三件事:
- Δ 越大,强 token 和弱 token 的权重比越大。
- τ 越小,同样的 logit 间隔会被放大得越强。
- τ 越大,softmax 越平滑,注意力熵越高。
二元情况下:
a1=1+exp(−Δ/τ)1,a2=1−a1.
对应的信息熵为:
H=−a1loga1−a2loga2.
当 Δ/τ→+∞ 时:
a1→1,a2→0,H→0.
当 Δ/τ→0 时:
a1→21,a2→21,H→log2.
因此,注意力尖锐化的核心算子链条是:
Q,K⟶S=dkQK⊤+M⟶A=softmax(S/τ)⟶H(A).
S 决定 logit 间隔,τ 决定间隔被放大的程度,H(A) 描述最终注意力图的稀疏程度。
4. 低熵注意力如何形成稀疏信息通路#
第 ℓ 层第 h 个 head 的输出为:
yt(ℓ,h)=i∈Ωt∑ati(ℓ,h)vi(ℓ,h).
如果存在一个很小的 token 集合 St,满足:
i∈St∑ati(ℓ,h)≥1−δ,∣St∣≪∣Ωt∣,
其中 δ 很小,那么:
yt(ℓ,h)=i∈St∑ati(ℓ,h)vi(ℓ,h)+i∈/St∑ati(ℓ,h)vi(ℓ,h).
若所有 value 向量有界:
vi(ℓ,h)2≤B,
则被忽略部分的范数满足:
i∈/St∑ati(ℓ,h)vi(ℓ,h)2≤i∈/St∑ati(ℓ,h)vi(ℓ,h)2≤δB.
因此,当 δ 很小时:
yt(ℓ,h)≈i∈St∑ati(ℓ,h)vi(ℓ,h).
这就是注意力路由的数学形式:当前位置 t 的表示更新主要依赖少数几个 source token。
多头注意力中,每个 head 都产生一个路由结果:
yt(ℓ,1),yt(ℓ,2),…,yt(ℓ,H).
拼接后经过输出投影:
ot(ℓ)=Concat(yt(ℓ,1),…,yt(ℓ,H))WO(ℓ).
再进入残差流:
xt(ℓ+1)=xt(ℓ)+ot(ℓ)+MLP(ℓ)(xt(ℓ)+ot(ℓ)).
这里省略 LayerNorm 的具体位置,因为不同架构可能使用 Pre-LN 或 Post-LN。
从图的角度看,低熵 attention head 在做一件事:
many possible edges⟶few active edges.
这种稀疏路由对精确定位任务尤其有利。
| 场景 | 任务 | 合适的注意力形态 | 机制 |
|---|
| 长文本检索 | Needle in a Haystack | 低熵,高 top-k mass | 答案通常位于少数关键句子,尖锐注意力可以把读取带宽集中到相关位置 |
| 信息抽取 | 实体、属性、关系抽取 | 低熵,中等到高稀疏 | 当前 token 需要从特定实体、数字、时间或属性位置读取信息 |
| 代码补全 | 参数、变量、函数调用 | 低熵,结构化稀疏 | 代码依赖常常指向明确的定义位置、调用位置或作用域边界 |
| 指代消解 | 代词到实体 | 低熵,单点或少点路由 | 代词表示需要绑定到前文某个实体表示 |
5. 隧道视野:低熵路由在全局任务中的失效模式#
低熵注意力本身没有问题。问题出现在任务需要全局证据,而模型仍然只保留少数注意力边。
设某个全局任务需要聚合多个 token 上的弱证据。可以把真实任务信号抽象为:
g=i∈Ωt∑βiϕi,
其中 ϕi 是第 i 个 token 携带的语义特征,βi 是该 token 对任务目标的真实贡献。对摘要、语气判断、主题识别等任务,βi 往往分布在很多位置上。
模型通过注意力读取的信号为:
g^t=i∈Ωt∑atiϕi.
如果注意力集中在小集合 St 上:
i∈St∑ati≥1−δ,
那么模型主要看到:
g^t≈i∈St∑atiϕi.
被遗漏的全局信号为:
gmiss=i∈/St∑βiϕi.
当下面两个条件同时出现时,就会发生隧道视野:
Hˉ(at)≈0,H(β) 较高.
第一条表示模型注意力很集中。第二条表示任务证据本身很分散。两者不匹配,就会造成全局任务失焦。
可以把隧道视野定义成一种熵错配现象:
TunnelVision(t)=I[Hˉ(at)<α]⋅I[Hˉ(β)>γ],
其中 α 是低注意力熵阈值,γ 是高任务证据熵阈值,I[⋅] 是指示函数。
直观地说,模型只开了一条很窄的信息通道,但任务需要从很多位置同时收集证据。
6. Softmax 梯度饱和:为什么隧道视野会固化#
注意力权重为:
ai=∑jexp(zj/τ)exp(zi/τ).
softmax 的雅可比矩阵为:
∂zj∂ai=τ1ai(I[i=j]−aj).
当某个位置 r 的注意力接近 1 时:
ar≈1,ai≈0(i=r).
此时:
∂zj∂ai≈0.
这意味着 softmax 进入饱和区。被压低到接近 0 的注意力边,很难通过梯度重新获得较大权重。
对被忽略 token i 来说:
ai≈0⟹∂zj∂ai=O(ai/τ).
所以,当某些上下文线索在早期层被压到极低权重时,它们对后续训练信号的贡献也会变弱。模型容易形成稳定但狭窄的路由模式。
这就是隧道视野的训练动力学版本:
early logit gap⟶low-entropy attention⟶weak gradient for suppressed edges⟶route becomes harder to revise.
7. 稀疏度是任务相关的资源分配参数#
注意力稀疏度需要和任务结构匹配。它不能被看成单调收益指标。
| 任务类型 | 任务例子 | 推荐注意力形态 | 原因 |
|---|
| 精确定位 | 长文本检索、事实抽取、代码变量绑定 | 低熵,高 top-k mass | 目标证据集中在少数位置,强路由可以压制噪声 |
| 局部结构建模 | 指代消解、依存关系、函数调用关系 | 中低熵,结构化稀疏 | 需要若干关键边,不需要全局平均 |
| 全局理解 | 摘要、主题识别、语气分析 | 中高熵,覆盖面更广 | 任务证据分布在多处,过度尖锐会丢失弱信号 |
| 多证据推理 | 多跳问答、法律或医学长文判断 | 分阶段熵变化 | 早期需要广覆盖,中后期需要聚焦到证据链 |
| 生成控制 | 风格保持、长文一致性 | 避免长期极低熵 | 需要维持全局状态、语气和结构约束 |
更精确地说,可以用下面三个量诊断一个 head 的行为。
归一化熵#
Hˉt(ℓ,h)=−log∣Ωt∣∑iati(ℓ,h)log(ati(ℓ,h)+ε).
它衡量注意力分布相对最大熵有多分散。
Top-k 注意力质量#
Mk(t,ℓ,h)=i∈TopK(at(ℓ,h),k)∑ati(ℓ,h).
如果 M1 或 M5 很高,说明注意力集中在极少数位置。
有效上下文大小#
Neff(t,ℓ,h)=exp(Ht(ℓ,h)).
比如 Neff=3,可以理解为当前 head 大约只在使用 3 个 token。
8. 如何调控注意力熵#
调控注意力熵,本质上是在调控 Transformer 的信息路由宽度。
方法一:温度缩放#
A=softmax(S/τ).
当 τ 增大,(zi−zj)/τ 变小,注意力更平滑,熵升高。当 τ 减小,logit 间隔被放大,注意力更尖锐,熵降低。
方法二:熵正则#
如果希望鼓励稀疏注意力,可以最小化熵:
L=Ltask+λℓ,h,t∑Ht(ℓ,h).
如果希望鼓励覆盖更多上下文,可以最大化熵:
L=Ltask−λℓ,h,t∑Ht(ℓ,h).
如果希望注意力熵靠近某个目标值 H⋆,可以使用:
L=Ltask+λℓ,h,t∑(Ht(ℓ,h)−H⋆)2.
方法三:结构化 mask#
通过 mask 控制可见边:
sti=dkqt⋅ki+mti,
其中:
mti={0,−∞,edge i→t allowed,edge i→t forbidden.
这会直接改变动态图的边集合。
方法四:Sparsemax 和 Entmax#
softmax 总会给每个可见位置一个非零概率。为了得到真正的零权重,可以使用 sparsemax:
sparsemax(z)=argp∈Δm−1min∥p−z∥22,
其中 Δm−1 是概率单纯形:
Δm−1={p∈Rm:pi≥0, i∑pi=1}.
sparsemax 可以产生精确的零权重,因此会让注意力图变成真正的稀疏图。Entmax 则处在 softmax 和 sparsemax 之间,用一个可调参数控制稀疏程度。
9. 总结:注意力熵刻画信息路由的宽度#
自注意力的核心算子链条是:
X⟶(Q,K,V)⟶S=QK⊤/dk+M⟶A=softmax(S/τ)⟶Y=AV.
其中,A 是动态生成的注意力图。它同时决定:
- 哪些 token 之间发生信息传递;
- 每条信息通路的强度;
- 当前层的信息聚合范围;
- 梯度能够通过哪些路径有效回传。
香农熵提供了一个直接的量化工具:
H(at)=−i∑atilog(ati+ε).
低熵注意力对应窄路由,适合检索、抽取、代码绑定等精确定位任务。高熵注意力对应宽路由,适合摘要、主题识别、语气分析等全局聚合任务。
隧道视野可以被理解为注意力熵和任务证据熵之间的错配:
Hˉ(at) low,Hˉ(β) high.
当模型只保留少数强注意力边,而任务答案依赖大量分布式弱线索时,信息路由会变窄,梯度会在 softmax 饱和区变弱,模型最终容易固化到局部证据上。
因此,注意力稀疏性更适合作为一种动态资源分配参数来理解。温度、熵正则、mask 结构和稀疏归一化算子,调控的都是同一个东西:Transformer 在当前层、当前 head、当前 token 上打开的信息通道有多宽。