跳到主要内容

迷失在中间:大语言模型中的位置偏差及其对金融 AI 的影响

· 阅读需 7 分钟
Mike Thrift
Mike Thrift
Marketing Manager

当我回想起 DocFinQA 的记录时——在处理具有 123K token 上下文的 SEC 文件时,基于检索的流水线和长上下文大语言模型都崩溃了——我留下的问题是 为什么。Liu 等人的这篇论文(TACL 2024, arXiv:2307.03172)提供了机制上的答案,事实证明,这种失效模式比我预想的更简单且更难以消除。

论文简介

2026-06-27-lost-in-the-middle-language-models-long-contexts

Nelson F. Liu、Kevin Lin、John Hewitt、Ashwin Paranjape、Michele Bevilacqua、Fabio Petroni 和 Percy Liang 撰写的《迷失在中间:语言模型如何使用长上下文》(Lost in the Middle: How Language Models Use Long Contexts)进行了两项针对性实验:基于 NaturalQuestions-Open 的多文档问答(包含 10、20 和 30 个检索到的文档)和合成键值检索(包含 75、140 和 300 对)。在每个实验中,他们系统地改变相关文档或键值对在输入上下文中的位置——开头、中间或结尾——同时保持其他所有因素不变。研究结果非常清晰:性能呈现出一条 U 形曲线,谷值位于上下文的中间,且该曲线出现在所有受测模型中。

核心观点

  • U 形曲线是真实且一致的。 在 20 个文档的问答设置中,第一位置的性能约为 75%,到第 10 个位置下降到 55% 左右,然后在第 20 个位置回升到约 72%——边缘与中心之间存在约 20 个百分点的差距。
  • 所有模型都遵循同样的模式。 受测模型涵盖了闭源和开源、小型和大型:GPT-3.5-Turbo(4K 和 16K)、GPT-4、Claude-1.3(8K 和 100K)、MPT-30B-Instruct 以及 LongChat-13B。U 形曲线在每一个模型中都有体现,包括那些明确以扩展上下文窗口为卖点的模型。
  • 即使是 Claude-1.3-100K 也不能幸免。 100K 上下文变体的表现与其他模型一致。长上下文窗口并不意味着模型实际上会在整个窗口内均匀地分配注意力。
  • 闭卷基准线设定了一个令人冷静的底线。 没有任何文档的 GPT-3.5-Turbo 正确回答了 56.1% 的 NaturalQuestions;在仅能访问那一个相关文档的理想情况下,正确率达到了 88.3%。但在 20 个文档设置中最差的中间位置,性能甚至跌破了闭卷基准线——这意味着添加更多上下文反而起到了反作用。
  • 编码器-解码器模型(Flan-T5-XXL, Flan-UL2)在训练长度内更具鲁棒性,但当上下文超出长度时也会出现性能下降。 架构差异确实有影响,但在规模扩大时,两者都会退化。
  • 根本原因是因果注意力掩码(Causal Attention Masking)。 每个 token 只能关注之前的 token,因此与中间位置相比,最开头的位置在整个模型中积累了更多的总注意力权重。近因效应(Recency effects)也拉升了上下文末尾的性能。

哪些结论站得住脚,哪些不一定

这里的实验设计非常简洁:位置是唯一受控变量,任务是标准基准测试,且发现结果在多种模型家族中得到了复现。我对核心结果没有异议。

我觉得不太有说服力的是将键值检索任务作为现实应用的有效代理。UUID 到 UUID 的查找测试的是模型是否能复读出记忆的字符串,而不是它是否具备推理能力。U 形曲线在那里也出现了,这强化了位置偏差的说法,但也意味着论文混淆了两种不同的现象:精确匹配任务的检索准确性与相关段落的推理质量。我想知道,当相关文档在给出最终答案前需要多步推理时,这种 U 形曲线是会恶化还是好转,而不仅仅是逐字复述。

作者在大体上承认但未填补的一个空白是:他们从未测试过指令微调(Instruction fine-tuning)或 RLHF 是否改变了位置敏感性,只测试了更大的上下文窗口是否有影响。鉴于根本原因是架构上的(因果掩码),我怀疑指令微调无法解决这个问题,但论文并未证实这一点。

为什么这对金融 AI 至关重要

这篇论文为我一直遇到的实证模式提供了机制上的解释。DocFinQA 在长篇 SEC 文件上崩溃了。IRCoT 和 FLARE 都会在推理前检索多个段落并将其串联起来。我见过的金融背景下的每个 RAG 流水线都会将检索到的段落按顺序塞进提示词,并寄希望于模型能关注到正确的那一个。

这对 Beancount 代理(Agents)的意义是具体的。如果一个代理检索了十条账本分录作为上下文,那么处于第 3 到第 7 位的分录最容易被忽略或引发幻觉。这不仅仅是检索问题——这是一个呈现(Presentation)问题。根据这篇论文,有两种应对方案:要么将最具诊断相关性的分录放在最前面(和最后面),要么根本不要串联,一次只对一个段落进行推理。

这一发现也让长上下文大语言模型的叙事变得复杂。每个季度都有新模型宣布更大的上下文窗口。这篇论文告诉我们,如果你在窗口内均匀分布证据,窗口再长也不意味着你想象中的效果。一个将相关交易埋藏在 60K 位置的 128K 上下文模型,还不如一个能精准检索到正确段落的 4K 上下文模型。

对于回写安全性(Write-back safety)而言,其后果令人不安:如果要求模型总结一个账本会话,而相关的“不要过账此交易”策略规则出现在长系统提示词的中间,模型可能会表现得好像从未读过该规则一样。

延伸阅读

  • 《发现于中间:通过即插即用的位置编码让语言模型更好地使用长上下文》("Found in the Middle: How Language Models Use Long Contexts Better via Plug-and-Play Positional Encoding",Zhang 等人,arXiv:2403.04797)—— 提出多尺度位置编码(Ms-PoE)作为一种通过 RoPE 缩放实现的无需训练的修复方案;声称在 Zero-SCROLLS 上提升了多达 3.8 个百分点,直接解决了 U 形曲线问题。
  • 《永不迷失在中间:通过位置无关的分解训练掌握长上下文问答》("Never Lost in the Middle: Mastering Long-Context Question Answering with Position-Agnostic Decompositional Training",arXiv:2311.09198)—— 采取了相反的方法,训练模型显式地与位置无关;与 Ms-PoE 的对比澄清了微调或推理侧技巧哪种是更好的杠杆。
  • 《通过缩放单一维度减轻大语言模型中的位置偏差》("Mitigate Position Bias in Large Language Models via Scaling a Single Dimension",arXiv:2406.02536)—— 识别出了导致偏差的特定位置隐藏状态维度,并在无需重新训练的情况下对其进行缩放;这是目前提出的最精密的修复方案,对于在不重新训练的情况下部署现有模型具有重要意义。