2.2 位置效应:开头、结尾与丢失的中部


2.2 位置效应:开头、结尾与丢失的中部

本节摘要:本节讲预算的第二个自由度——顺序。Stanford 的 Liu 等人在《Lost in the Middle: How Language Models Use Long Contexts》(TACL 2023)中做了一个干净的实验:把含正确答案的文档插在多文档序列的不同位置,让模型回答——结果是 U 型曲线:答案在开头或结尾时表现最好,落在中部时显著变差,幅度可达 10~30 个百分点(实测,随模型与任务而异);且无关文档越多,整体越差。本章把它翻译成两条实用推论:重要放两端(系统提示天然在最前;关键约束在最近的用户消息末尾复述;检索片段把最相关的放首尾);中部装低熵内容(可预测、信息密度低的内容放中间,高熵的事实、数字、约束绝不住中部;长输出截断时保尾部)。结论:排序与 token 一样是预算——同样的片段集合,顺序不同,命中率不同。

学习目标

阅读完本节,你应当能够:

  1. 复述 lost in the middle 的实验设计与 U 型结论。
  2. 用"重要放两端、中部装低熵"重排一组检索片段或长历史。
  3. 识别位置效应的误用边界:它是统计规律,先评测再调序。

一、实验:会"迷路"的中间地带

实验设计干净得像教科书(实测,Liu et al. 2023):给模型 20 篇文档,其中只有一篇含正确答案,唯一变量是这篇文档放在第几位;其余 19 篇全是无关但看似合理的干扰项。反复测量准确率随位置的变化,得到这条曲线:

准确率 高 ┤ ● ● │ ● ● │ ● ● │ ● ● 低 ┤ ●● ●● │ ●●● ●●●●●●●● └──────────────────────────────────────→ 文档位置 1 5 10 12 18 20 开头 中部 结尾 U 型:首尾最好,中部最差(实测,幅度 10~30 个百分点)

三个值得记住的细节:

  1. 中部不是略差,是显著差——同一模型、同一批文档、同一个答案,仅因位置不同,准确率可下降 10~30 个百分点(实测,随模型代际与任务而异;新模型在改善,规律仍在)。
  2. 无关文档越多,整体越差——这直接印证 1.1 节的注意力稀释:干扰项不是中性的。
  3. "窗口支持"不等于"利用有效"——哪怕答案就在窗口里,模型也可能对它视而不见。这打破了"长窗口一劳永逸"的幻想。

二、两个工程直觉(不涉数学)

为什么是 U 型?两个够用的直觉,不必深究注意力数学:

  • 开头像"设定",结尾像"追问":训练语料里,段落开头常是背景与设定、结尾常是最切题的强调,模型继承了这种位置敏感;叠加注意力对近处 token 的天然偏置,首尾各自受益。
  • 中部被两头稀释:中部内容既要和开头的长程依赖竞争,又要和结尾的近距离优势竞争,两头不靠。

⚠️ 位置效应是统计规律,不是物理定律:不同模型代际的敏感度差异很大,同一个 U 型在你的任务上可能平缓也可能陡峭。正确姿势是拿自己的任务做一次小规模位置评测(把同一段关键信息挪三个位置各测十轮),再决定投入多少精力调序。

三、推论一:重要放两端

把 U 型反过来用——最需要被读到的内容,放窗口首尾:

手段 做法 说明
系统提示在最前 指令成分天然位于窗口开头(3.1 节) 位置红利是系统提示权威性的来源之一
关键约束末尾复述 长 history 之后、最近的用户消息末尾,用一行重申红线:"再次强调:不要修改 config" 复述不是啰嗦——首尾双保险,中部历史无论多长都冲不掉
检索片段首尾排序 多段素材按相关性排:最相关的两段放最前与最后 排序本身是重排器的职责,机制见《语义代码检索》第 5 章
多文档问答先粗排 无法精确排序时,至少把确认无关的移出窗口 减少干扰项对 U 型曲线的整体压低(实测)

四、推论二:中部装低熵内容

"熵"借用信息论直觉:低熵 = 可预测、信息密度低(背景说明、格式约定、常识性描述);高熵 = 不可预测、信息密度高(具体数字、唯一事实、约束条件、异常状态)。推论:

  1. 高熵内容绝不住中部:退款政策里"7 天无理由、二手商品除外"这一句是高熵的——它必须出现在首尾,放中间等于藏起来。
  2. 低熵内容适合填中部:通用背景、产品介绍、格式示例——丢了也不影响答题的内容,才是中部的合格填充物。
  3. 长工具输出截断时保尾部:2.1 节"丢大块保线索"的预算学依据正在这里——命令输出尾部(结论、错误摘要)是高熵区,头部的版本横幅是低熵区;截中间、留首尾,恰好同时服务预算与位置。
装配一条长上下文的位置模板(示意): [开头] 系统提示(指令) → 最高优先的检索片段 → 任务原文与红线 [中部] 低熵素材:背景、格式说明、中等相关片段、已引用化的旧结果 [结尾] 最近 K 轮对话 → 次高优先片段 → 关键约束复述 → 本轮用户输入

五、位置是第二个预算

token 预算回答"装多少",位置预算回答"怎么摆"——同样的片段集合、同样的 token 花费,仅因顺序不同,命中率可以差出一截(实测)。至此,一条完整的动态层装配策略成形:

装配 = 分配表(2.1,给多少) × 驱逐顺序(2.1,丢什么) × 位置编排(2.2,怎么摆)

这套公式此后全书通用:第 5.2 节(后半)的检索片段组装是它的直接应用;第 6 章(后半)压缩后的"结构化任务简报"同样按此模板摆放。

本节要点回顾

  1. U 型结论(实测):答案在首尾时表现最好、在中部时显著变差(10~30 个百分点);无关文档越多整体越差;窗口支持不等于利用有效。
  2. 两个直觉:开头像设定、结尾像追问;中部被两头稀释。
  3. 推论一:重要放两端——系统提示在最前、关键约束末尾复述、最相关片段放首尾。
  4. 推论二:中部装低熵——高熵内容(数字、事实、约束)绝不住中部;截断保尾部。
  5. 位置即预算:装配 = 分配 × 驱逐 × 排序;调序前先在自己任务上小规模评测。

量与序都齐了,动态层的装配算法完整。从下一章起逐成分深潜,先从设计期就能定型的常驻层开始——系统提示与工具 schema,开发者写下的每一个字都在这里被审计。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U