---
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|长度外推]] — 问题域
