注意力衰减与"迷失在中间"(Lost in the Middle)

入门01-心智模型⏱ 20 分钟已审校
学习进度:

一句话定义

即使窗口能装下全部内容,模型对上下文中间位置信息的利用效率也显著低于开头和结尾——这就是"迷失在中间"(Lost in the Middle)现象。

为什么重要

它直接否定了"反正塞得下就行"的做法。你精心准备的 20 条资料如果平铺在上下文中段,模型可能只"看见"开头两条和结尾两条。生产事故里大量"我明明给了资料它还是答错"的案例,根因就在位置效应。掌握本知识点,你就拿到了信息放置策略(信息放置策略:指令、知识、数据的排布)的理论地基,能解释并预防一整类失效。

前置知识

直观类比

模型读长上下文像听一场两小时的会议录音:开头讲什么记得牢,最后几分钟印象最深,中间一小时的内容只有特别响亮的部分才留得住。所以重要的事要在会议开头点题、结尾复述——上下文组织同理。

图示

可靠性
 高 │█                               █
    │█                               █
 中 │█      ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁        █
    │█    ▕          中间低谷       ▏  █
 低 │█▁▁▁▁                    ▁▁▁▁▁▁▁▁█
    └──────────────────────────────────→ 位置
     开头                            结尾

核心概念

  • 首因效应(Primacy):上下文开头的指令和信息被更可靠地遵循。
  • 近因效应(Recency):结尾附近的内容——尤其是紧贴生成位置的检索片段——利用率最高。
  • 中间低谷(Middle Trough):序列中部的内容召回率明显下降,且上下文越长、候选越多时越明显。
  • 位置-召回曲线:把同一信息的放置位置从序列头扫到尾,绘制"能否被正确引用"的曲线,典型形态是两端高、中间低的 U 形。

原理与机制

机制层面公认的解释包括:注意力在长序列上的分布不均匀,中部 token 获得的注意力权重被两端稀释;训练数据的结构性偏差(指令通常在开头、最新内容在结尾);以及长序列上位置编码外推的退化。需要强调两点工程含义:

  1. 这是概率倾向而非硬规则——模型并非完全看不见中部内容,而是可靠性下降,所以表现为"时对时错",恰恰是最难排查的一类故障;
  2. 曲线形态随模型代际变化,新模型的中部低谷在变浅,但方向性规律至今仍然成立,稳健的做法是把关键内容放两端,而不是赌某代模型已经治愈。

公式或模型

本节用定性模型描述:设信息放置在归一化位置 p ∈ [0,1],可用可靠性 R(p) 大致呈 U 形——R(0) 与 R(1) 高,R(0.5) 低。工程上不必精确计算 R,只需记住决策规则:关键约束放开头,即时要用的证据放结尾,可牺牲的填充放中间。

实例或案例

案例:客服知识库的放置修复。 症状:把 15 条 FAQ 全部平铺在提示中部,模型对第 6~10 条的问题频繁答错。操作步骤:① 把与当前问题最相关的 FAQ(可用简单关键词匹配挑出 3 条)移到检索结果区,紧邻用户问题之前;② 系统级规则(语气、禁答范围)固定在开头;③ 其余 FAQ 移到结尾作"备查资料"。修复后答错率显著下降。模板骨架:

[开头] 系统角色 + 硬约束(必须遵守的规则)
[中段] 背景资料、可牺牲的参考内容
[结尾] 本次要用的证据片段 → 用户问题 → 请回答

排错清单:

常见误区

  • 把窗口上限当可用上限:窗口 200K ≠ 200K 都可靠可用;预算要给注意力衰减留余量(见 上下文窗口与注意力预算)。
  • 绝对化:"模型完全读不到中间"是错的——是可靠性下降,测试时应重复采样确认(与 自洽性(Self-Consistency):用多次采样投票换稳定 的多次采样思路一致)。
  • 用旧结论否定新模型:衰减幅度随代际改善,改提示前应先在自己的模型上做小实验验证,不要照搬两年前的博客结论。

自测题

  1. 一份 30 条的规章制度必须全量放进提示,如何排布使遵循度最高?

答:最高频、最关键的条款放开头;常被引用的细则放结尾;低频条款放中段;同时在开头用一句话做"条款索引"提示模型规则共有哪些类。

  1. 为什么"迷失在中间"的失效难以在测试中被发现?

答:它是概率倾向,单次测试可能恰好通过;需要多组放置位置 × 多次采样的矩阵实验才能暴露。

  1. U 形曲线哪一端对"多轮对话"更重要?

答:结尾端——最新一轮的输入紧贴生成位置,近因效应更强,这也是"把当前问题放最后"成为惯例的原因。

与其他知识点的关系

信息放置策略:指令、知识、数据的排布 是本条的直接应用层;上下文压缩:摘要、滚动与层级 的压缩决策要考虑"压缩谁"——中段冗余优先;长文档组织:分块、裁剪与引用定位 的分块裁剪决定哪些内容值得占两端位置。

延伸阅读

  • 论文:Lost in the Middle: How Language Models Use Long Contexts(Liu et al., 2023)——本现象的代表性实证研究。

来源

  • Lost in the Middle: How Language Models Use Long Contexts (Liu et al.
  • 2023)