当你遇到一道特别棘手的数学应用题或一个复杂的逻辑谜题时,你做的第一件事是什么?如果你像大多数人一样,你会再读一遍。你会浏览文本,确定核心问题,然后重读细节以理解它们是如何关联的。这种简单的认知策略——重读——是人类理解能力的基础。
然而,像 GPT-4 或 LLaMA 这样的大型语言模型 (LLM) 通常不会这样做。它们线性地处理文本,从左到右,逐个 Token 地读取。一旦它们读过一个词,它们通常不会像人类在重新思考整句话的语境时那样“回头看”。
在论文 “Re-Reading Improves Reasoning in Large Language Models” 中,来自中国科学院信息工程研究所、北京航空航天大学和微软的研究人员介绍了一种名为 RE2 (Re-Reading,重读) 的方法。他们的发现虽然简单但影响深远: 仅仅提示 LLM 将输入的问题读两遍,就能显著提升其推理能力。
在这篇文章中,我们将探讨为什么标准 LLM 难以进行“全局”理解,RE2 方法如何通过模拟双向注意力来解决这个问题,以及这个简单的技巧所带来的惊人性能提升。
问题所在: 单向注意力的局限性
要理解为什么重读是必要的,我们首先需要了解现代大多数 LLM 是如何处理文本的。像 GPT-3、ChatGPT 和 LLaMA 这样的模型都是建立在 仅解码器 (Decoder-only) Transformer 架构之上的。
这些模型是 自回归 (autoregressive) 的,并且使用 单向注意力 (unidirectional attention) 。 这意味着当模型正在编码某个特定的 Token (单词或单词的一部分) 时,它只能“看到”之前的 Token。它无法看到之后的 Token。
试想一下,要理解一个句子,而最重要的上下文线索位于最后一个词。
- 句子: “The bank, which had steep muddy slopes and was covered in lush grass, was difficult to climb.” (那个有着陡峭泥泞斜坡且长满茂盛草丛的 bank,很难攀爬。)
- 处理过程: 当模型读到开头的单词 “bank” 时,它还不知道这是指金融银行还是河岸。直到后面读到 “muddy slopes” (泥泞的斜坡) 时,它才弄明白。
由于注意力机制无法向后看,模型在没有后文完整语境的情况下创建了早期单词的表示。这种限制阻碍了模型执行复杂推理任务的能力,因为在这些任务中,理解前提的开头和结尾之间的关系至关重要。
解决方案: RE2 (重读)
研究人员提出了一种名为 RE2 的方法。它不需要重新训练模型或更改其架构。相反,它是一种提示策略,强制模型处理输入两次。
它是如何工作的
这个概念非常直接。提示不只是输入一次问题,而是重复该问题。
标准提示:
Q: [Input Query] A: Let’s think step by step…
RE2 提示:
Q: [Input Query] Read the question again: [Input Query] A: Let’s think step by step…
通过重复问题,研究人员人为地创造了一种 双向注意力 机制。

如上图所示:
- 顶部 (标准 CoT) : 模型一遍通过处理问题。Token “Roger” 无法注意到 “How many”,因为 “How many” 出现在后面。
- 底部 (RE2) : 模型处理问题两次。在 第二遍 (Second Pass) 期间,当模型 (再次) 处理 “Roger” 时,它可以关注回 第一遍 (First Pass) 的内容。由于第一遍包含了整个问题 (包括结尾) ,模型现在实际上拥有了句子结构的“未来”知识。
“双向”效应
这种技术有效地修补了仅解码器模型的单向限制。在第二次阅读期间,每个 Token 都可以访问第一次阅读提供的“全局”信息。
研究人员使用 LLaMA-2 模型的注意力热图可视化了这种效果。

在这个热图中:
- 垂直轴代表查询 Token (模型正在阅读的内容) 。
- 水平轴代表键 Token (模型正在回顾的内容) 。
- 红色三角形: 这个区域显示了 第二遍 回看 第一遍 时的注意力。
上三角形中的深色斑点证明,当模型第二次阅读问题时,它严重依赖于第一遍 末尾 的信息。模型实际上是在说: “既然我已经看过一遍完整的问题了,我现在可以在更好地理解结尾的情况下重读开头了。”
RE2 的形式化
在数学上,标准的思维链 (Chain-of-Thought, CoT) 推理试图基于输入 \(x\) 生成理由 \(z\) 和答案 \(y\)。

RE2 改变了输入条件。输入不再仅仅是 \(x\),而是变成了重读操作 \(re2(x)\)。

这一微小的修改使得理由生成 (\(z\)) 能够以更丰富的、输入的“双向”表示为条件。
实验与结果
研究人员在大量的基准测试中测试了 RE2: 包括算术、常识和符号推理在内的 14 个数据集 。 测试的模型范围从基础的 ChatGPT (GPT-3.5) 到 LLaMA-2-70B 和 Davinci-003。
算术推理
主要的测试平台是数学应用题 (使用 GSM8K 和 SVAMP 等数据集) ,这些题目需要精确理解变量之间的依赖关系。

上表突显了该方法的一致性:
- Vanilla vs. Vanilla+RE2: 增加重读几乎普遍提高了性能。
- CoT vs. CoT+RE2: 即使使用思维链 (本身就是一种强大的推理方法) ,添加 RE2 也能提供进一步的提升。例如,在 GSM8K 基准测试中,Davinci-003 的性能从 58.98 跃升至 61.64 。
读更多遍会有帮助吗?
如果读两遍好,读三遍会更好吗?研究人员分析了“阅读次数”以寻找最佳点。

数据表明存在一个“最佳点”。
- 性能在 2 次阅读 时达到峰值。
- 阅读 3、4 或 5 次会导致收益递减甚至性能下降。
- 为什么? 研究人员认为,过度的重复可能会让模型感到困惑,导致它在输出中模仿这种重复,而不是去解决问题。这也偏离了训练数据分布太远 (在训练数据中,问题很少被重复 5 次) 。
处理复杂性
最有趣的发现之一是,RE2 对 复杂问题 特别有效。

- 左图: 柱状图显示,随着问题复杂度 (推理步骤数) 的增加,CoT (浅米色) 和 CoT+RE2 (蓝色条纹) 之间的差距通常会扩大或保持显著。
- 右图: 这显示了“n-gram 召回率”,它衡量了生成的解释在多大程度上引用了原始问题。RE2 具有更高的召回率,表明模型在生成答案时更密切地关注了问题的具体细节。
与其他方法的兼容性
RE2 是一种“输入端”增强,这意味着它几乎可以与任何“输出端”提示策略兼容。
思维激发提示: 研究人员测试了 RE2 与其他高级提示方法的结合,如 Plan-and-Solve (PS) 和 Program-Aided Language (PAL) 。

如上所示,RE2 对 Plan-and-Solve 和 PAL 的提升效果与对标准 CoT 的提升效果一样明显。
少样本学习 (Few-Shot Learning) : 当提供示例 (少样本提示) 时,RE2 同样有效。

自洽性 (Self-Consistency) : 提升 LLM 性能的一种流行技术是“自洽性”,即模型生成多个答案,然后选择最常见的一个。RE2 可以与此结合使用。

CoT + RE2 + Self-Consistency (SC) 的组合产生了最高的结果 (在 SVAMP 上达到 87.70) ,证明了即使对于现有的最强推理管道,RE2 也能增加价值。
效率如何?
一个合理的担忧是,将输入文本加倍会使处理的成本和时间加倍。研究人员测量了其对推理时间和显存使用的影响。

- 推理时间 (上图) : 时间略有增加,但并非加倍。因为生成阶段 (回答) 占据了总时间的很大一部分,增加输入处理时间并不会破坏整体延迟。
- 显存使用 (下图) : 显存占用几乎保持不变。
与使用更大的模型或生成数十条自洽性路径相比,这使得 RE2 成为一种获得准确性提升的非常“廉价”的方式。
深入探讨: 可视化注意力转移
为了确凿地证明 RE2 改变了模型 思考 的方式,论文提供了注意力矩阵的详细可视化。

- 三角形 (a) - CoT: 模型 (CoT 块) 关注第一遍 (First Pass) 。
- 三角形 (b) - CoT+RE2: 视觉结构发生了变化。出现了一个明显的“第二遍 (Second Pass) ”块。连接线显示,在使用 RE2 时, 思维链生成阶段 对问题 Token 的关注度显著提高。
定量来看,使用 RE2 时,生成过程中分配给问题 Token 的注意力权重从 0.32 增加到了 0.40 。 这证实了重读使得模型在推理过程中更加“尊重”源文本。
结论
RE2 方法证明了我们尚未触及当前大型语言模型通过简单提示改变所能达到的上限。
通过认识到单向注意力的架构限制——即无法“向前看”——并用人类启发的重读策略来修复它,我们可以解锁更好的推理性能。
关键要点:
- 简单性: RE2 不需要训练,只需修改提示:
Q: {Input} Read the question again: {Input}。 - 双向理解: 它允许仅解码器模型在完全了解句子结尾的情况下处理句子的开头。
- 通用性: 它提升了数学、常识和符号推理的性能,并且适用于从 ChatGPT 到 LLaMA-2 的各种模型。
- 效率: 它以微不足道的计算时间增加换取了显著的收益。
对于使用 LLM 的学生和从业者来说,RE2 提醒我们要记住: 有时改进人工智能的最佳方法是教它模仿人类智能的基本学习习惯。如有疑问,再读一遍。
](https://deep-paper.org/en/paper/2309.06275/images/cover.png)