20260514:增加新内容
This commit is contained in:
@@ -1,17 +1,58 @@
|
||||
---
|
||||
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)
|
||||
|
||||
占位符 — 待补充完整内容。
|
||||
## 定义
|
||||
|
||||
**核心概念**: 某些初始 Token(如 BOS)天然吸引大量注意力权重,可作为"注意力汇"稳定长序列推理。基于此可以设计高效的 KV 缓存淘汰策略(如 StreamingLLM、H2O)。
|
||||
**注意力汇**是 Xiao et al. (2024) 在 ICLR 论文 [[streaming-llm|StreamingLLM]] 中发现的现象:自回归 LLM 中,**初始 Token 在所有层和注意力头上吸引不成比例的高注意力分数**,即使它们与当前预测任务语义无关。
|
||||
|
||||
## 关键应用
|
||||
## 数学解释
|
||||
|
||||
- **StreamingLLM**: 保留初始 Attention Sinks + 最近 Token 实现无限长流式推理
|
||||
- **H2O**: 基于注意力权重选择性地保留"重击者"Token 的 KV
|
||||
- **SinkRouter**: 汇感知的路由优化
|
||||
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 的依赖
|
||||
|
||||
## 相关概念
|
||||
|
||||
- [[lost-in-the-middle]] — 问题背景
|
||||
- [[kv-cache-bottleneck]] — 缓存优化
|
||||
- [[llm-attention-survey-2026]] — 综述参考
|
||||
- [[streaming-llm|StreamingLLM]] — 基于注意力汇的流式推理框架
|
||||
- [[window-attention|窗口注意力]] — 驱逐初始 Token 导致崩溃的基线
|
||||
- [[sink-token|汇 Token]] — 预训练中的专用注意力汇
|
||||
- [[softmax-off-by-one|SoftMax-off-by-One]] — 替代方案
|
||||
- [[kv-cache-bottleneck|KV 缓存瓶颈]] — 相关优化问题
|
||||
- [[length-extrapolation|长度外推]] — 问题域
|
||||
|
||||
Reference in New Issue
Block a user