--- title: "注意力汇 (Attention Sinks)" created: 2025-04-15 updated: 2026-05-14 type: concept tags: [attention, llm, streaming, softmax, kv-cache] sources: ["https://arxiv.org/abs/2309.17453"] --- # 注意力汇 (Attention Sinks) ## 定义 **注意力汇**是 Xiao et al. (2024) 在 ICLR 论文 [[streaming-llm|StreamingLLM]] 中发现的现象:自回归 LLM 中,**初始 Token 在所有层和注意力头上吸引不成比例的高注意力分数**,即使它们与当前预测任务语义无关。 ## 数学解释 SoftMax 函数的性质导致注意力汇的出现: $$\text{SoftMax}(x)_i = \frac{e^{x_i}}{\sum_{j=1}^N e^{x_j}}$$ 关键约束:所有 token 的注意力分数之和必须为 1($\sum_i \text{SoftMax}(x)_i = 1$)。 当当前 query 与大多数上下文 token 没有强语义匹配时,模型仍然需要把这些"多余"的注意力值分配到某处。**初始 Token 因自回归建模中对所有后续 token 都可见,被自然训练为注意力的"汇" (sink)**。 Xiao et al. 的公式表述: $$\text{SoftMax}(x)_i = \frac{e^{x_i}}{e^{x_1} + \sum_{j=2}^N e^{x_j}}, \quad x_1 \gg x_j, \, j \in 2, \ldots, N$$ 其中 $x_1$(初始 token 的注意力 logit)远大于其他 token。 ## 实验证据 1. **注意力可视化**:Llama-2-7B 除底部两层外,几乎所有层和注意力头都严重关注初始 token 2. **替换实验**:将前 4 个 Token 替换为换行符 `\n`,模型仍大量关注它们,恢复它们后 PPL 恢复——证明是**绝对位置**而非语义在起作用 3. **数量研究**:4 个初始 Token 即可完全恢复性能,1-2 个不够,更多边际递减 ## 根因分析 为什么是**初始 Token** 而不是其他 Token? → 自回归语言建模中,初始 Token 对**所有后续 Token 都可见**,而后面的 Token 只对有限集合可见。这使得初始 Token 更容易被训练为注意力的通用"倾倒目标"。 ## 应用 - **[[streaming-llm|StreamingLLM]]**:保留 4 个初始 Token 的 KV + 最近 Token 的滑动窗口 → 无限长流式推理 - **H2O**:基于累积注意力分数选择性地保留 "Heavy Hitter" Token - **SinkRouter**:汇感知的路由优化策略 - **预训练改进**:在训练样本前添加专用 [[sink-token|可学习汇 Token]],消除对多个初始 Token 的依赖 ## 相关概念 - [[streaming-llm|StreamingLLM]] — 基于注意力汇的流式推理框架 - [[window-attention|窗口注意力]] — 驱逐初始 Token 导致崩溃的基线 - [[sink-token|汇 Token]] — 预训练中的专用注意力汇 - [[softmax-off-by-one|SoftMax-off-by-One]] — 替代方案 - [[kv-cache-bottleneck|KV 缓存瓶颈]] — 相关优化问题 - [[length-extrapolation|长度外推]] — 问题域