大型语言模型 (LLM) 功能极其强大,但它们在一个微妙的弱点上却举步维艰——复杂的多步推理。如果你让一个模型解决一道奥林匹克级别的数学题或编程竞赛难题,它的首次尝试往往是错误的。挑战不在于生成答案,而在于如何有效地从失败中学习。

人类从错误中学习。我们很少会重复犯同一个错误,因为我们内化了失败的原因。LLM 能做到类似的事情吗?它们能否测试过程中从反馈中学习,并在每次迭代中持续改进?

传统上,有两种主要策略用于实现多次尝试:

  1. 顺序修正 (Sequential Revision) : 模型将其先前的答案和反馈视为不断增长的上下文的一部分——就像学生在复习批改过的试卷。此方法促进学习,但很快就变得低效且笨拙,因为过长的上下文会导致注意力分散和“中间遗失”问题。
  2. 并行采样 (Parallel Sampling) : 模型不进行学习,而是同时生成多个独立的答案——就像一群学生各自独立参加同一场考试,希望有人能答对。它速度快,但无法提升推理能力。

如果存在第三种方式——既高效又具备记忆能力,会怎样?这正是 Yanyang Li 等人提出的论文 《在测试时从反馈中学习推理》 (Learning to Reason from Feedback at Test-Time) 的核心思想。他们的方法 基于反馈的测试时训练 (Feedback-based Test-Time Training, FTTT) ,让 LLM 能够实时更新其内部权重——即“记忆”,直接从反馈中学习。为了进一步改进,他们引入了 OPTUNE,一个微型、可训练的优化器,用于改进模型自我更新的方式。


试错法的问题所在

为了直观地理解差异,想象一下每种方法如何处理重复尝试。

一张图表比较三种方法: (a) 顺序修正展示单一的尝试链,(b) 并行采样展示多个独立的尝试,(c) FTTT 展示带反馈循环的尝试,这些循环能更新模型。

图 1: 推理策略对比。顺序修正构建了长依赖链,并行采样生成孤立的尝试,而 FTTT 引入了由反馈驱动的权重更新。

  • (a) 顺序修正: 每次新的尝试都依赖所有先前尝试,形成冗长的上下文,LLM 难以处理。
  • (b) 并行采样: 所有尝试都是独立的。效率高,但浪费了以往错误中宝贵的信息。
  • (c) 基于反馈的测试时训练 (FTTT) : 每次失败后,模型调整其权重,在生成下一个答案前进行内部学习。

人类不会在记忆中反复回顾每一个错误,也不会每次都从头开始——我们会将经验内化。FTTT 的目标正是如此: 将失败尝试中的知识存储在模型参数中,而非上下文中。


FTTT: 即时训练

FTTT 的核心在于将每次失败视为一次微型训练机会。当模型回答一个问题 \(Q\),生成尝试 \(A_n\) 时,验证器会检查 \(A_n\) 是否正确并提供二元反馈。

若答案错误,FTTT 将此视为一个监督学习任务。模型被训练去预测语言反馈 \(F\),此处的反馈仅为“你的答案不正确”。其损失函数定义如下:

\[ \mathcal{L}_{\text{FTTT}}(Q, A_n) = -\frac{1}{l_0} \log M_{n-1}(F \mid Q, A_n) \]

这看似简单,却极具深意。为了正确预测自己的失败,模型必须理解它为什么错——即建立导致错误的内部表征。


通过自我反思增加深度

二元反馈过于简单——仅表明“对”或“错”。为了提供更丰富的学习信号,作者引入了自我反思 (Self-Reflection) 。在一次错误尝试后,他们使用未修改的原始模型 \(M_0\) 生成一段简短的错误解释,例如:

“以下是前一个解答中的错误总结……”

生成的反思 \(R_n\) 作为银标准训练标签。当前模型随后被训练来复现该反思,使用辅助蒸馏损失:

\[ \mathcal{L}_{\text{aux}}(Q, A_n, R_n) = -\frac{1}{l_n} \log M_{n-1}(R_n \mid Q, A_n, F) \]

最终损失将两者结合:

\[ \mathcal{L}_{\text{final}} = \mathcal{L}_{\text{FTTT}} + \mathcal{L}_{\text{aux}} \]

每次失败都让模型获得增量式学习。整个流程如下:

  1. 生成答案 \(A_n\);
  2. 检查正确性:
    • 若正确 → 停止;
    • 若错误 → 执行 FTTT 更新;
  3. 使用 \(M_0\) 生成反思 \(R_n\);
  4. 计算最终损失 (\(\mathcal{L}_{\text{final}}\)) 并更新权重;
  5. 使用更新后的模型生成新答案 \(A_{n+1}\)。

通过引入反思,模型不仅能学到它失败了,还理解失败的原因,且无需依赖长上下文记忆。

一张表格比较 FTTT 与其他方法在自我反思、记忆和长度泛化等特性上的表现。FTTT 是唯一在三者上都达标的方法。

表 1: FTTT 独特地结合了自我反思、内部记忆以及跨长上下文的可扩展性。


OPTUNE: 更智能的权重更新方式

FTTT 可使用任何标准优化器 (如 Adam) 来更新。但如果能设计一个专为推理反馈定制的优化器呢?

这就是 OPTUNE 的作用所在——一个轻量级神经网络,被训练以预测最优参数更新。与传统梯度下降不同,OPTUNE 学习如何根据反馈和上下文调整模型权重。这是**“学习优化” (Learning to Optimize, L2O)** 范式的具体应用。

直接优化数百万参数显然不可行,因此作者提出了两项创新:

OPTUNE 架构图,展示了带残差连接的瓶颈设计,它在梯度空间中处理梯度以预测权重更新。

图 2: OPTUNE 架构在梯度空间中运行,通过压缩与分解生成高效的权重更新。

  1. 基于梯度的输入压缩:
    OPTUNE 接收梯度 (而非原始文本) 作为输入。这些梯度天然地总结了当前参数如何影响误差,将可变长度的文本信息压缩为固定尺寸的数值张量。
  2. 梯度分解:
    大型梯度 (\(\nabla W_i \in \mathbb{R}^{d \times d}\)) 被分解为两个较小向量 \(u_i\) 和 \(\delta_{i+1}\),将维度从 \(d^2\) 降至 \(2d\)。
    OPTUNE 随后预测修改后的向量 \(\tilde{u}_i\) 与 \(\tilde{\delta}_{i+1}\),重构更新量 \(\tilde{\nabla}_{W_i} = \tilde{\delta}_{i+1} \tilde{u}_i^{T}\)。
  3. 残差瓶颈设计:
    OPTUNE 在瓶颈结构中应用归一化、Dropout 和线性映射以防止过拟合。架构高效且具备良好表达性:
\[ \begin{array}{c} [\bar{u}_i, \bar{\delta}_{i+1}] = \operatorname{Norm}([u_i, \delta_{i+1}]) \\ h_i = \theta_2 \text{Dropout}(\theta_1[\bar{u}_i, \bar{\delta}_{i+1}]) \\ [\tilde{u}_i, \tilde{\delta}_{i+1}] = h_i + [\bar{u}_i, \bar{\delta}_{i+1}] \end{array} \]

该设计类似于 PEFT (参数高效微调) 中的瓶颈适配器 (bottleneck adapter) ,但 OPTUNE 微调的是梯度而非激活值——创造出更智能、更具反馈驱动的更新。


这些思想奏效吗?实验结果

作者在两种模型上——Llama-3.1-8B-InstructMistral-7B-Instruct-v0.3——评估了 FTTT 与 OPTUNE,覆盖四个推理基准:

  • 数学: MATH, GSM8K
  • 代码: MBPP, HumanEval

FTTT 对比其他测试时方法

结果表显示 FTTT 在 Llama-3.1-8B 和 Mistral-7B 模型上,在四个数据集上均优于 Revision、Beam Search 和 Best-of-N 等基线方法。

表 2: FTTT 在多个数据集上超越了先进的测试时基线方法,即便未使用自我反思。

FTTT 的表现始终优于 Best-of-NSelf-Refine 等方法。例如,在 GSM8K 中,FTTT 仅需 3–4 GPU 小时,而顺序修正需要 20 小时,同时 FTTT 的准确率更高。它将从以往尝试中学习的能力与计算效率相结合。

折线图显示不同方法随尝试预算增加的性能表现。FTTT (蓝线) 始终处于或接近顶部,尤其在预算较低时。

图 3: 随着测试时预算提高,FTTT 能有效扩展,并以极低的计算成本保持顶级性能。

当模型能准确分析失败原因时 (如 Llama-3.1) ,自我反思能进一步提升表现。总体而言,FTTT 随尝试次数增加的扩展性平稳——不同于修正型方法易受上下文长度限制。


OPTUNE 对比其他微调方法

OPTUNE 还与传统 PEFT 方法 (LoRA、Adapter、IA³、LN-Tuning) 及全量微调进行了比较。

表格显示 OPTUNE 在三个数据集上的平均表现优于 LoRA、Adapter 及全量微调。

表 3: OPTUNE 在平均性能上表现最佳,同时是最具参数效率的方案 (仅 43.9 万可训练参数) 。

尽管轻量,OPTUNE 的准确率超过 LoRA 与 Adapter,甚至超越全量微调,同时仅使用一个数量级更少的参数。它微调得更聪明,而非更费力。

折线图显示微调性能随预算的变化。OPTUNE (浅蓝线) 起步略低,但当预算超过两次尝试时表现超越其他方法。

图 4: 随反馈增多,OPTUNE 表现强劲,在中等预算下迅速超越其他微调方法。

在低预算下 (两次尝试) ,OPTUNE 起步稍慢,因为首次尝试使用原始 LLM 输出。但一旦整合反馈,便能实现更高的推理准确率。


案例研究: 更深入的推理

表格包含两个数学题。对于第一个问题,LoRA 出现计算错误,而 OPTUNE 正确推理出了结果。

表 4: OPTUNE 正确理解了题目约束 (左) ,而 LoRA 因理解肤浅导致计算错误。

在 GSM8K 示例中,LoRA 误判了关键细节——例如误解了“到 40 码线再返回”。OPTUNE 正确推理并得出了正确答案。这些实例展示了 OPTUNE 在推理任务中更深的解释力。


为什么重要

这项研究填补了现代 AI 的重要空白: 在无需重新训练整个模型的情况下从错误中学习。

  • FTTT 让 LLM 能在测试时将反馈直接整合进权重中。
  • OPTUNE 学会了如何优化——生成针对推理的高效、高质量更新。

两者结合,实现了更快的收敛、更好的扩展性与更深的理解——即便反馈仅是“你的答案不正确”。


展望未来

虽然本文聚焦于二元反馈,但该框架能自然扩展至来自奖励模型或人工评估的连续信号。试想 LLM 能动态地从细致、分级的反馈中学习——通过推理本身提升推理能力。

目前,FTTTOPTUNE 已为这一愿景奠定基础: 让 LLM 不仅能回答问题,更能从每次尝试中学习


简而言之: 这项研究将测试时间从学习的终点变成了更智能、更具反思性的推理过程的起点。