Learning to Reason from Feedback at Test-Time¶
会议: ACL 2025
arXiv: 2502.15771
代码: 有
领域: LLM推理
关键词: 测试时计算, 反馈利用, 测试时优化, 推理可扩展性, 强化学习
一句话总结¶
本文提出FTTT(Feedback at Test-Time Training)范式,将LLM在推理阶段对环境反馈的利用形式化为一个优化问题,并设计了可学习的测试时优化器OpTune,在四个推理数据集上实现了优于现有反馈利用方法的可扩展性和性能。
研究背景与动机¶
领域现状:大语言模型在面对复杂推理任务时,往往无法一次性生成正确答案。迭代式地与环境交互并利用反馈信息(如错误提示、执行结果、评分信号等)来逐步修正方案是提升成功率的关键策略。
现有痛点:现有的反馈利用方法存在两个主要问题。第一类方法(如将所有历史反馈拼接到prompt中进行refinement)随迭代次数增加导致输入长度膨胀,存在严重的长度泛化问题——模型在超长输入下性能退化甚至崩溃。第二类方法(如简单重试策略)每次独立采样新答案,完全不利用之前尝试中获得的反馈信息,浪费了宝贵的错误经验。
核心矛盾:如何在利用历史反馈的同时避免输入长度膨胀?理想方案应能将反馈信息"压缩"式地吸收到模型中,使模型在有限上下文窗口内高效利用累积的反馈经验。
本文目标:(1) 提出一种无需拼接历史的反馈利用范式;(2) 设计一个可学习的模块在测试时根据反馈优化模型行为。
切入角度:作者将反馈利用类比为优化问题——每条反馈相当于一个梯度信号,指示模型应向何方调整。类似于传统优化中的梯度下降,可以设计一个"测试时优化器"来根据反馈信号调整模型的隐状态或参数。
核心 idea:将测试时反馈利用形式化为优化问题(FTTT范式),并训练一个轻量级的测试时优化器OpTune,它在推理阶段根据每次反馈迭代式地更新模型的内部表示,无需扩展输入长度。
方法详解¶
整体框架¶
FTTT的整体流程:给定一个推理任务,LLM生成初始方案 → 提交到环境获得反馈 → OpTune(测试时优化器)根据反馈更新模型的内部状态 → LLM基于更新后的状态生成新方案 → 重复直到成功或达到最大迭代次数。关键创新在于反馈信息不是拼接到输入prompt中,而是通过OpTune"写入"模型的隐状态。
关键设计¶
-
FTTT范式——将反馈利用形式化为优化问题:
- 功能:提供统一框架将反馈利用从"拼接prompt"转变为"优化模型状态"
- 核心思路:定义目标函数为最大化在给定反馈序列下生成正确答案的概率。每一轮迭代中,模型生成候选答案 \(y_t\),环境返回反馈 \(f_t\),优化器将 \((y_t, f_t)\) 对转化为模型参数或隐状态的更新信号。形式上类比SGD:\(\theta_{t+1} = \theta_t + \text{OpTune}(y_t, f_t, \theta_t)\)
- 设计动机:传统prompt拼接方式将反馈利用问题与长度泛化问题耦合在一起。将其形式化为优化问题后,反馈信息的累积不再受上下文窗口限制
-
OpTune——可学习的测试时优化器:
- 功能:一个轻量级神经网络模块,在测试时根据反馈信号动态调整LLM的参数或隐状态
- 核心思路:OpTune接收当前模型状态和反馈信号作为输入,输出一个参数更新量。它被训练为能从错误中学习——给定一系列(尝试, 反馈)对,OpTune应该能推断出正确的修正方向。OpTune的训练通过模拟测试时场景在训练集上进行,使用强化学习或监督学习信号
- 设计动机:手工设计的优化规则难以适应不同类型的推理任务和反馈格式。可学习的优化器能自适应地处理各种反馈信号,并在训练过程中学到有效的"反馈压缩"和"状态更新"策略
-
可扩展的测试时计算机制:
- 功能:允许通过增加测试时的迭代次数来持续提升性能,实现计算-性能的正向扩展
- 核心思路:由于每轮迭代只需处理当前反馈(而非累积的所有历史),计算成本线性增长而非超线性。同时OpTune的更新机制确保每轮迭代都能有效利用新信息,性能随迭代次数单调提升
- 设计动机:现有方法要么因长度膨胀导致性能在某个迭代次数后饱和/下降,要么因不利用历史信息导致扩展效率极低。FTTT兼具两者优势
损失函数 / 训练策略¶
OpTune的训练使用两阶段策略:首先收集训练集上的(任务, 尝试序列, 反馈序列, 正确答案)数据;然后训练OpTune最大化在给定反馈序列后生成正确答案的概率。可以使用监督学习(如果有正确答案的标签)或强化学习(使用任务成功率作为奖励)。
实验关键数据¶
主实验(四个推理数据集,两个LLM)¶
| 方法 | 数据集1 成功率 | 数据集2 成功率 | 数据集3 成功率 | 数据集4 成功率 |
|---|---|---|---|---|
| 单次生成(无反馈) | 基线 | 基线 | 基线 | 基线 |
| Prompt拼接 (5轮) | 中等提升 | 中等提升 | 中等提升 | 中等提升 |
| Prompt拼接 (10轮) | 性能饱和/下降 | 性能饱和/下降 | 性能饱和/下降 | 性能饱和/下降 |
| 简单重试 (5轮) | 有限提升 | 有限提升 | 有限提升 | 有限提升 |
| FTTT + OpTune (5轮) | 显著提升 | 显著提升 | 显著提升 | 显著提升 |
| FTTT + OpTune (10轮) | 持续提升 | 持续提升 | 持续提升 | 持续提升 |
可扩展性分析¶
| 迭代次数 | Prompt拼接 | 简单重试 | FTTT + OpTune |
|---|---|---|---|
| 1 | 基线 | 基线 | 基线 |
| 3 | 提升后趋平 | 缓慢提升 | 稳步提升 |
| 5 | 开始饱和 | 缓慢提升 | 稳步提升 |
| 10 | 下降 | 近似饱和 | 仍在提升 |
| 15+ | 明显下降 | 完全饱和 | 继续提升 |
关键发现¶
- FTTT + OpTune是唯一能随迭代次数持续提升性能的方法,验证了其优越的可扩展性
- Prompt拼接方法在约5-10轮后因长度膨胀导致性能饱和甚至下降
- 简单重试方法虽不受长度限制,但因不利用历史信息,扩展效率极低
- 两个不同规模的LLM上实验结果一致,说明FTTT范式具有通用性
- OpTune的引入开销相对较小,但带来的性能提升显著
亮点与洞察¶
- 将测试时反馈利用形式化为优化问题:这一概念框架非常优雅——它将看似不同的反馈利用策略(prompt拼接、重试、refinement等)统一到一个"测试时优化"的框架下,使得可以用优化理论的工具来分析和改进反馈利用。
- 打破了反馈利用与长度泛化的耦合:之前的方法要么利用反馈但受长度限制,要么不受长度限制但不利用反馈。OpTune通过将反馈信息"内化"到模型状态中,同时解决了这两个问题。这一思路可迁移到任何需要迭代优化的生成场景。
- 可学习优化器的范式潜力:OpTune的设计思路打开了"元学习 meets 测试时计算"的大门。未来可以针对不同任务类型训练专门的测试时优化器。
局限与展望¶
- OpTune需要在训练集上预先收集反馈数据进行训练,对于全新任务类型可能需要冷启动
- 当前方法假设反馈信息是结构化的(如对/错信号、错误类型),对于非结构化反馈(如自然语言评论)的处理能力未知
- OpTune的泛化能力——在一个推理域上训练的OpTune能否迁移到其他域——需要进一步研究
- 与其他测试时计算方法(如Best-of-N、Tree Search等)的结合值得探索
相关工作与启发¶
- vs Self-Refine: Self-Refine将反馈拼接到prompt中,受长度限制。FTTT通过模型状态更新避免了这一问题
- vs Best-of-N采样: Best-of-N独立采样不利用反馈,FTTT在每次采样前先利用历史反馈更新模型
- vs Test-Time Training (TTT): TTT通常在测试数据的分布上做自监督训练,FTTT特化于利用任务反馈信号,更加task-specific
- 本文的优化器范式可能启发新的"自适应推理"系统设计
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 将反馈利用形式化为优化问题并设计可学习优化器,概念新颖且执行优雅
- 实验充分度: ⭐⭐⭐⭐ 四个数据集两个模型的验证充分,可扩展性分析有说服力
- 写作质量: ⭐⭐⭐⭐ 概念阐述清楚,形式化定义准确
- 价值: ⭐⭐⭐⭐⭐ 对测试时计算和反馈利用范式有重要推动,实用价值高
相关论文¶
- [ACL 2025] Learning to Reason Over Time: Timeline Self-Reflection for Temporal Reasoning
- [ACL 2025] TestNUC: Enhancing Test-Time Computing Approaches and Scaling through Neighboring Unlabeled Data Consistency
- [ACL 2025] HelpSteer3: Human-Annotated Feedback and Edit Data to Empower Inference-Time Scaling
- [ACL 2025] Meta-Reflection: A Feedback-Free Reflection Learning Framework
- [ACL 2025] AceCoder: Acing Coder RL via Automated Test-Case Synthesis