注意力稀释,上下文变长时模型在公式里丢了什么

模型已经把上下文窗口卷到百万 token,用起来却是另一回事:喂得越长,答得越不靠谱。这个现象有几个流行的名字:上下文腐烂(context rot)、注意力稀释、信噪比下降。

一、实验结论

1.1 Chroma 的 Context Rot 报告:控制变量测出来的衰减

2025 年 7 月 Chroma 发布的技术报告是目前最系统的一次测量。方法论上的关键动作是控制变量:任务难度恒定,只改变输入长度。18 个主流模型(Claude、GPT、Gemini、Qwen 四个家族),8 种输入长度 × 11 个 needle 位置,judge 对齐人类判断 99% 以上。四组实验值得记住:

  • 语义距离:大海捞针的变体,把 needle 与问题的字面重合度调低,只靠语义相近。短输入下低相似度也答得好;输入拉长后,相似度越低衰减越狠。短输入的表现证明任务本身不难,衰减来自长度。
  • 干扰项:往干草堆里掺一个相似的错误答案就掉分,四个叠加更狠,且随长度放大。家族风格差异明显:Claude 倾向于拒答,GPT 倾向于自信地答错。
  • 打乱的干草堆反而更好:把连贯散文打乱成无序句子后,18 个模型全部表现提升。逻辑结构居然是有害的,这是全报告最反直觉的一条。
  • 复读测试:让模型原样复读一段重复的词。输入到万词量级,开始漏字、错位、越写越短,有的模型编出输入里根本不存在的词。连复读都做不干净,说明退化与任务难度无关,是长度本身在征税。

另有一组直接对标真实场景的 LongMemEval 测试:同一批问题,全量输入约 113k token 对比聚焦输入约 300 token,所有模型聚焦组显著更好。答案两种输入里都在,多出来的十几万 token 不是免费的。

1.2 RULER:标称窗口的打假基准

RULER(COLM 2024)换了一个问法:不测「能不能找到针」,测更难的行为:多跳追踪、聚合等 13 类任务。结果:17 个长上下文模型在标准 NIAH 上几乎满分,换难任务后随长度大幅衰减;所有模型都标称支持 32K 以上,但只有一半在 32K 还能保持满意表现。NIAH 满分成了一种营销指标,它测的是窗口里最不容易坏的那种用法。

1.3 Lost in the Middle:中段的信息约等于不存在

斯坦福 2023 年的经典实验:多文档问答,把含答案的文档摆到不同位置。结果是 U 型曲线:开头结尾记得牢,中段显著塌陷。最刺眼的数字:答案埋在中间时,GPT-3.5-Turbo 的得分低于完全不给文档的闭卷基线。给了答案,反而更差。

1.4 NoLiMa:需要推理时,有效上下文只有几千

NIAH 类测试本质仍是匹配。NoLiMa 换成需要语义推理的题目后,数字难看得多:32K token 时多数模型得分不到短输入的一半;折算「有效上下文」,多数模型只有 2K 上下。标称窗口买来的是空间,可靠性得另算。

1.5 多轮维度:同一批信息分几轮给,掉 39%

微软与 Salesforce 2025 年的实验:把基准测试的完整提示拆成多轮对话逐步给出,平均性能掉 39%,o3 从 98.1 掉到 64.1。机制是模型在信息不全时过早定稿,之后拿到补充也不回头改。长度在烂,轮次也在烂,agent 场景两条都占。

1.6 小结:四条共性

  • 衰减与任务难度无关(复读实验),与长度强相关;
  • 退化是渐变不是悬崖,表达依然流畅自信,事实召回和长程推理先悄悄掉队。这是它危险的地方:不报错,不出现在任何仪表盘上;
  • 标称窗口 ≠ 有效窗口,简单检索撑得住不代表推理撑得住;
  • 干扰信息的杀伤力大于无关信息,错误但相似的内容最坏。这条在第二章还会回来。

二、原理分析

2.1 先说一个流行解释为什么不对

讲这个现象的文章,十篇有九篇会写「注意力总和是 1,N 个 token 每个平均分到 1/N,所以稀释了」。这个说法把数学事实当成了失效机制。softmax 的输出可以任意尖锐,只要 logit 差距够大,权重可以几乎全部压在极少数 token 上,N 再大也无所谓。归一化只保证总和为 1,不保证摊平。真正的故事要回到公式里逐项排查。

2.2 一个公式,逐处排查

scss 复制代码
attn(q) = Σᵢ wᵢ·vᵢ      其中  w = softmax(QKᵀ/√d)

输出侧:凸组合是稀释的算子本身。 注意力输出是 value 向量的加权平均,权重和为 1,数学上这叫凸组合,输出必然落在所有 value 张成的凸包内。这一条没有回旋余地:权重摊平多少,输出就靠近均值多少,信号被字面意义地平均掉。它同时给出上界:QK 再强,最好情况也只是干净地选中某一个 v,变不出凸包外的信息。

softmax 分母:噪声随 N 线性累积。 把目标 token 的 logit 记作 s*,其余 N−1 个噪声 token 的 logit 记作 sᵢ:

scss 复制代码
w* = e^{s*} / (e^{s*} + Σᵢ e^{sᵢ})  ≈  1 / (1 + (N−1)·e^{s̄−s*})

分母里的噪声项随 N 线性增长。N 涨 32 倍,logit 差距 s*−s̄ 要多拉开 ln32 ≈ 3.5,才能保住原来的权重。而 logit 差距是训练出来的 QK 分辨力,不会因为你把窗口拉长就自动变大。稀释真正进入的位置在这里,不在归一化。

这个式子还顺手把「上下文信噪比」形式化,目标权重对噪声总质量的比可以写成:

复制代码
SNR ≈ e^{s*} / Σᵢ e^{sᵢ} ≈ e^Δ / N      (Δ = 目标与噪声的 logit 差距)

随 N 线性衰减,除非 Δ 随 ln N 增长。上下文腐烂、注意力稀释、信噪比下降,三个词在这个式子里是同一个量。它也能回头解释 1.1 的实验:字面匹配的 needle 撑得久(精确重合天然 Δ 大);语义匹配衰减快(Δ 小);干扰项一个就掉分(干扰项是高 logit 噪声,e^{sᵢ} 大,几个就够压垮分母)。

2.3 信噪比的两个实验注脚

噪声不是标量:语义距离决定毒性。 Cuconasu et al. 2024 系统研究了 RAG 里的检索噪声:检索器打分最高但不含答案的文档(相关噪声)明确有害;而最反直觉的发现是,往 prompt 里加随机文档,准确率反而提升,最高 +35%。作者明说机制待研究。2.2 的式子能解释毒性的排序:随机 token 的 sᵢ 很低,对分母贡献小;相关噪声的 sᵢ 逼近 s*,直接抢分子。「无关」和「错误但相似」是两回事,后者才是毒药,这正是 1.6 小结里那条共性的微观解释。但式子只解释了「危害小」,解释不了「有帮助」:随机文档为什么反而提升准确率,中间还隔着一条机制鸿沟,这里不硬答。

压缩即去噪:密度本身是可操作的变量。 LongLLMLingua 的实验:NaturalQuestions 上把 prompt 压到 1/4 的 token,性能不降反升,最高 +21.4%;LooGLE 上成本降 94%。它的立论就是信噪比语言:模型表现取决于关键信息的密度与位置,压缩提高密度。这给「少即是多」一个定量形状:压缩去掉的是分母里的噪声项,长度只是顺带变小。

2.4 softmax 不能拒绝:attention sink 是架构的泄压阀

softmax 还有一条更隐蔽的约束:权重和恒为 1,意味着每个 query 必须看某个地方,「谁都不看」不在可表达的范围内。没什么该看的时候怎么办?模型学会的解法是把多余权重倾倒到序列最开头的几个 token 上,这就是 attention sink。

StreamingLLM(Xiao et al. 2023)的实验很说明问题:保留开头 4 个 token,哪怕把它们替换成毫无语义的换行符,��意力团块纹丝不动,长流生成照常工作。倒垃圾的动作是结构性的,与首 token 的内容无关。泄压阀是 softmax 的标配,不是哪个模型的怪癖。

对长上下文有两层含义。一层是税:sink 占掉的权重是纯开销。另一层是位置格局:开头有 sink 加持,结尾有近因偏置,中段两头不靠。这与 1.3 的 U 型曲线互相印证,也给「关键信息放首尾」这条经验一个架构级的解释。

2.5 多头分工:长程检索是少数头的活

多头注意力的设计意图是分工,不同的头学不同的关注模式。检索头研究(Wu et al. 2024)量化了这种分工:长上下文里负责「找到 needle 并搬过来」的头只占很小一部分;mask 掉这几个头,大海捞针能力立刻崩溃,mask 掉同样数量的其他头几乎无损。后续的 DuoAttention 顺着把头分成检索头和流式头两类,只给检索头保留全量 KV cache,推理成本大降而长文能力保住。

这件事改变了「长上下文能力」的计价单位:窗口、层数、头数都是面子,里子是少数检索头的 QK 分辨力。窗口可以堆到百万,干检索活的头并没有变多。

2.6 两个条件性因素

RoPE 的距离衰减:旋转位置编码让远距离 token 对的 QK 内积系统性衰减,天然偏向近端。理论上成立,也与 U 型曲线自洽;但注意 Chroma 在自己的实验设置里没有复现出显著的位置效应。位置因素真实存在,强度跟任务类型和编码方案相关,不是铁律。1.1 那条「打乱的干草堆反而更好」也归在这一档:结构与顺序的影响真实存在,但方向不稳定,机制层面还没有干净的解释。

训练分布偏斜:训练语料里短序列远多于超长序列,模型对跨越整个长上下文的依赖关系练得少。这是 Anthropic 工程博客给的归因,符合直觉,但没有独立实验证实。

2.7 置信度分层

说法 状态
凸组合:权重摊平 → 输出趋向均值 数学事实
分母噪声随 N 累积,SNR ≈ e^Δ/N 可推导;「这就是 context rot 的主因」仍是假设
相关噪声有害、随机噪声反而有益 实证(Cuconasu),机制未明
压缩提密度可提升性能 实证(LongLLMLingua)
attention sink 存在且是结构性的 实证扎实
检索头集中、mask 即崩 实证扎实
RoPE 距离衰减贡献中段塌陷 条件性成立
训练分布偏斜 合理推断,未独立证实

最后补一条纪律:Chroma 报告本身明确表示机制未解,「输入的结构模式可能影响注意力分配」只是它给出的展望。上面的分析给出的是稀释进入的位置和量级,不是一条已证实的完整因果链。

三、应对方案

每项对策对应公式里的一项,或一组实验事实:

对策 作用于
压缩与清理:摘要压缩、tool result 清除或折叠 减 N、提密度,收分母
子代理隔离:脏活在独立上下文里干,只回传蒸馏后的结论(Anthropic 的描述:子代理吃掉几万 token,回传一两千) 减 N,最激进的一种
按需检索:不预先塞全量,用时取回 减 N,LongMemEval 的直接教训
关键信息放首尾、指令前置 顺 sink 与近因的位置格局
关键内容语义独特、结构标记清晰 拉大 Δ,补分子
工具数量克制(Berkeley 函数调用基准上,工具一多所有模型都变差)、无关参考资料不进上下文 减高 logit 噪声项
长期记忆放上下文外,用时取回 把冷的 v 移出凸包
多轮任务尽早给全约束,避免分片透露 对多轮 −39% 的直接回应
安全约束钉在压缩够不到的地方 对 Governance Decay 的直接回应

展开最值得说的三条。

「少一点」比「给全了」更接近正确。 LongMemEval 那组对照(113k vs 300 token)是最直白的证据:答案都在,但带着十几万 token 陪跑,所有模型都变差。「万一用得上」是上下文管理里最贵的念头,放进来的每个 token 都进分母,没有免费乘客。Anthropic 把这叫做 attention budget:判断标准不是「这条信息有没有一点关系」,而是「它值不值得占一份注意力」。Cuconasu 的随机噪声实验从反面补了一刀:连无害的噪声都不是免费的,它只是危害小,相关噪声才是毒药。检索和塞料的决策标准应该按「与任务的语义距离」排毒性,别按「有没有用」一刀切。

压缩是第一公民,但它有一个安全面。 压缩即去噪,LongLLMLingua 证明压得好性能反升。但 2026 年的 Governance Decay 研究给出了反面的数字:长时程 agent 场景里,安全约束完整可见时违规率 0%,一轮压缩之后平均 30%,最差的模型到 59%,摘要悄悄删掉了「不许做什么」。约束幸存于摘要,违规率就回到 0%;被丢掉,就到 38%。所以压缩要分两层对待:任务上下文可以有损,治理约束必须无损。论文给的解法叫 constraint pinning,把红线类内容钉在压缩流程够不到的位置(比如常驻的 system 位),实测违规率回到 0%。这对所有做 compaction 的系统是硬要求,不是优化项。

给自己装一个仪表盘。 注意力衰减不报错、不进日志,这是最麻烦的一点。应对只有主动测:给关心的任务类型做一个小的长上下文召回测试(自制 NIAH 就够),换模型、改上下文结构时跑一遍;对多轮 agent,把「第 1 轮给的关键约束,第 30 轮还能不能守住」加进回归。RULER 的教训是别拿 NIAH 满分当验收标准,用最像你真实负载的任务去测。测一次的成本很低,瞎着的成本很高。

收尾

2026 年的前沿模型缩小了衰减的幅度,没有消除它,Chroma 测的 18 个模型无一例外。窗口的数字还会继续涨,公式里的那个式子不会变:SNR ≈ e^Δ/N。搞清楚 Δ 和 N 哪个能动,比等一个更大的窗口有用。


参考来源

  1. Kelly Hong et al., Context Rot: How Increasing Input Tokens Impacts LLM Performance, Chroma Research, 2025-07
  2. Hsieh et al., RULER: What's the Real Context Size of Your Long-Context Language Models?, COLM 2024
  3. Nelson Liu et al., Lost in the Middle: How Language Models Use Long Contexts, TACL 2024
  4. Modarressi et al., NoLiMa: Long-Context Evaluation Beyond Literal Matching, 2025
  5. Laban et al., LLMs Get Lost in Multi-Turn Conversation, Microsoft/Salesforce, 2025
  6. Cuconasu et al., The Power of Noise: Redefining Retrieval for RAG Systems, 2024
  7. Jiang et al., LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression, 2023
  8. Shiyang Chen, Governance Decay: How Context Compaction Silently Erases Safety Constraints in Long-Horizon LLM Agents, 2026
  9. Wu et al., Retrieval Head Mechanistically Explains Long-Context Factuality, 2024;DuoAttention, 2024
  10. Xiao et al., Efficient Streaming Language Models with Attention Sinks(StreamingLLM), 2023
  11. Anthropic, Effective context engineering for AI agents, 2025-09
相关推荐
万联WANFLOW1 小时前
LiteLLM 1.107.0 投毒排查实战:依赖、Docker、CI 环境分别怎么查?
安全·docker·llm
用户4015823324621 小时前
对话一长,AI 就忘了你说过的话?Claude Code、Codex、Aider、WES Code 怎么压缩上下文
人工智能·go·ai编程
用户5833339816681 小时前
影刀元素点击功能有什么替代方案?含 AI 自愈的几条实测路线
人工智能
趣说科技1 小时前
CMEF首日:探索BCI×AI产业应用新路径!熵基科技脑机全栈技术集中亮相
人工智能·科技
Rayna_Echoverse1 小时前
从Meta到Anthropic,AI巨头为什么突然开始争夺做你的私人助理
人工智能
野生码农AI实战1 小时前
FDE是什么?一个FDE垂直网站41分钟上线的全过程
人工智能
长弓三石1 小时前
企业级 Harness 平台的 IM 接入:从选型到上线,一篇讲完
人工智能
冬奇Lab1 小时前
开源项目第243期:ArtCraft —— 给艺术家的 AI 创作 IDE,先搭场景再生成,把「抽卡」变成「手艺」
人工智能·开源
闽林致远1 小时前
从文案语义到素材自动获取的工程链路-AutoVideoHub
人工智能