大型语言模型 (LLM) 的格局已从简单的聊天机器人迅速转变为语言智能体 (Language Agents) ——这类系统能够推理、规划并与外部环境交互以解决复杂任务。无论是浏览网页以回答多跳问题,还是编写代码通过单元测试,智能体都代表了AI应用能力的下一个前沿。

然而,构建这些智能体面临一个显著的瓶颈: 数据

要让一个通用的LLM (如Llama-2或Llama-3) 成为一个称职的智能体,我们通常需要在高质量的“轨迹 (trajectories) ”——即推理和行动的逐步示例——上对其进行微调。历史上,获取这种数据有两种方式: 人工标注 (缓慢且昂贵) 或“蒸馏 (distillation) ”,即要求像GPT-4这样庞大的专有模型生成示例供小模型学习。

但是,如果我们想构建强大的开源智能体,而不依赖OpenAI的API或大量的人力投入,该怎么办?如果模型能够自学呢?

在本文中,我们将深入探讨 Re-ReST (基于反思强化的自训练) , 这是加州大学洛杉矶分校 (UCLA) 的一篇论文,提出了一种新颖的智能体自主改进框架。我们将探索结合*自训练 (self-training) 与一种称为反思 (reflection) *的机制,如何让较小的模型达到与GPT-4数据训练模型相当甚至更好的性能。

师生学习模式的问题

在进入解决方案之前,我们需要了解现状。训练开源智能体的主流范式一直是知识蒸馏 (Knowledge Distillation)

在这种设置中,“教师”模型 (通常是GPT-4) 针对特定任务生成成功的轨迹。“学生”模型 (如Llama-2) 随后在这些数据上进行微调以模仿教师。虽然有效,但这种方法有其局限性:

  1. 成本与依赖: 它依赖闭源API,这可能很昂贵,并且造成了对专有技术的依赖。
  2. 上限: 学生通常受限于教师的能力以及教师数据的特定分布。

另一种选择是自训练 (Self-Training) 。 在这里,模型生成自己的样本,检查它们是否正确 (使用环境奖励) ,并在自己的成功案例上重新训练。理想情况下,这会创造一个改进的良性循环。

Figure 1: Comparison of Previous Work vs. Re-ReST.

如图 Figure 1 所示,先前的方法 (左侧) 依赖于从GPT到Llama的单向知识流动。而 Re-ReST (右侧) 创建了一个闭环。模型生成样本,但重要的是,它以不同的方式处理不成功的轨迹 。 它不是丢弃失败,而是使用反思器 (Reflector) 来修复它们,在将其反馈回训练循环之前变废为宝。

自训练的挑战

纯粹的自训练听起来很理想,但在复杂的推理任务中往往会失败。为什么?

“低质量样本”陷阱 为了让语言智能体通过自训练有效学习,它需要生成成功的轨迹以供学习。在困难任务 (如编写复杂代码或解决多步逻辑谜题) 中,基础模型可能会失败95%次。如果模型只从那微小的5%成功片段中学习,改进将是缓慢且不稳定的。

此外,简单地丢弃95%的失败样本是对计算资源和信息的巨大浪费。模型尝试去解决问题了;它往往只是在推理或语法上犯了一个小错误。

这正是 Re-ReST 引入其核心创新的地方: 利用反思器来拯救那些失败的样本。

Re-ReST 方法

Re-ReST 代表 Reflection-Reinforced Self-Training (反思增强的自训练) 。 其核心思想是将数据的生成与数据的优化分离开来。

该框架由两个不同的LLM组成 (尽管它们可以从同一个基础模型初始化) :

  1. 智能体 (Agent, \(\mathcal{M}\)) : 试图解决任务的模型 (例如,生成代码) 。
  2. 反思器 (Reflector, \(\mathcal{R}\)) : 一个经过训练的模型,负责查看智能体的失败尝试和环境的错误消息,然后生成修正后的解决方案。

流程如何运作

让我们分解 Figure 2 中展示的工作流程。

Figure 2: Overview of the Re-ReST method workflow.

  1. 采样 (智能体) : 智能体接收任务输入。它尝试解决该任务,生成多个候选轨迹 (输出 1 到 K) 。
  2. 环境反馈: 每个输出都在环境中进行测试 (例如,运行代码,检查答案) 。
  • 成功 (\(\checkmark\)) : 如果输出正确,它会立即被添加到训练集中。
  • 失败 (\(\times\)) : 如果输出失败,它不会被丢弃。它会连同反馈 (例如,“第5行语法错误”) 一起传递给下一步。
  1. 反思 (反思器) : 反思器接收原始输入、失败的尝试以及具体的错误反馈。它“反思”哪里出了问题,并生成一个经过优化的、修正后的输出 (输出 K’) 。
  2. 验证: 如果优化后的输出现在是正确的,它会被添加到训练集中。

这个过程显著丰富了训练数据。智能体不仅从它已经能解决的简单问题中学习,还从需要修正的困难问题中学习。

训练背后的数学原理

训练过程分两个阶段进行。首先,我们必须确保反思器确实擅长修复错误。然后,我们使用反思器来训练智能体。

第一阶段: 训练反思器 反思器使用 (失败尝试 \(\rightarrow\) 修正尝试) 对进行训练。我们可以通过让基础模型生成样本,筛选成功/失败,并将成功样本作为失败样本本应样子的基准真值 (ground truth) 来收集这些数据对。

反思器的目标函数是标准的极大似然估计 (MLE) ,条件是失败样本 (\(y^l\)) 和输入 (\(x\)) :

Equation 1: Reflector Training Objective.

第二阶段: 训练智能体 一旦我们有了一个合格的反思器,我们就运行 Re-ReST 循环来生成大量成功的轨迹数据集 (包括最初成功的和经反思器修正的) 。然后,智能体在这个组合数据集上进行微调。

Equation 2: Agent Training Objective.

这个方程的精妙之处在于,数据集 \(\mathcal{D}_{\mathcal{R}}\) (来自反思器的数据) 通常包含比 \(\mathcal{D}_{\mathcal{M}}\) (智能体自己生成的数据) “更难”的例子,这迫使智能体学习更稳健的推理模式。

为什么反思优于“仅仅增加采样”

对复杂流程的一个常见反驳是: “为什么不直接采样100次而不是10次?最终你会得到正确答案的。”

研究人员通过比较 Re-ReST 与样本数增加的标准自训练对此进行了调查。

Figure 3: Performance comparison vs. Number of Samples.

Figure 3 揭示了一个关键见解。在标准自训练 (蓝线) 中,增加每个实例的样本数最初确实提高了性能,但很快就会进入平台期 。 模用光了“运气”——无论猜测多少次,它就是缺乏解决更难实例的能力。

Re-ReST (红色虚线) 打破了这个天花板。通过利用反馈主动修正错误,反思器“解锁”了那些以前通过随机采样无法获得的训练样本。这不仅仅是关于更多数据;它是关于覆盖更广泛问题难度分布的更好数据。

实验结果

作者在广泛的领域测试了 Re-ReST: 多跳问答、决策制定、代码生成和图像生成。结果一致表明,Re-ReST 允许开源模型 (如 Llama-2-13B) 表现出超越其同类量级的性能。

1. 多跳推理 (HotpotQA)

HotpotQA 要求智能体搜索维基百科,找到多个文档,并在它们之间进行推理以回答问题。

Table 1: Results on HotpotQA.

Table 1 突出了三个主要发现:

  1. 自训练有效: 仅让 Llama-2 自学就将精确匹配 (EM) 分数从 20.0% (Few-Shot) 提高到了 27.6%。
  2. Re-ReST 效果更好: 加入反思后,性能进一步提升至 29.6%。
  3. 击败 GPT-4 蒸馏: 看看与 FireAct 的对比。FireAct 使用 GPT-4 生成训练数据。Re-ReST 仅使用 Llama-2 和维基百科 API 反馈,就取得了可比的结果。当允许 Re-ReST 使用极少量 GPT-4 种子数据 (0.5k) 时,它的表现超过了纯 GPT-4 蒸馏方法 (35.8 对比 34.4) 。

2. 序列决策 (ALFWorld)

ALFWorld 是一个基于文本的模拟,智能体在其中扮演家庭机器人 (例如,“去厨房,找到苹果,清洗它,把它放进冰箱”) 。这需要长程规划,任何一个错误都会毁掉整个轨迹。

Table 2: Results on ALFWorld.

Table 2 中的结果非常引人注目。基础的 Few-Shot 模型几乎完全失败 (8.9% 成功率) 。自训练有所帮助 (37.3%) ,但 Re-ReST 跃升至 51.4% 。 这表明,对于需要严格序列逻辑的任务,通过反思“调试”轨迹的能力极其强大。

3. 代码生成 (MBPP)

在编程中,“反馈”非常精确: 单元测试要么通过,要么失败。这使其成为 Re-ReST 的理想领域。

Table 3: Results on Code Generation and Visual Programming.

Table 3 显示了持续的收益。在 MBPP (Python 编程) 数据集上,Re-ReST 将 Pass@1 率从 54.5% (标准自训练) 提高到了 56.4%。虽然这里的差距比 ALFWorld 小,但它证实了该方法的通用性。

反思器真的在学习吗?

一个关键问题是,我们是否真的需要训练反思器。我们不能直接提示 Llama-2 “修复错误”吗?

Table 5: Impact of Training the Reflector.

Table 5 回答了这个问题。使用基础 LLM 作为反思器 (不专门针对反思进行训练) 确实有帮助——它将智能体在 HotpotQA 上的表现提升至 28.8%。然而,在成功/失败对上训练反思器将分数推高至 29.6%。这表明“修正错误”是一项模型可以通过练习来提高的特定技能。

超越训练: 推理与优化

论文最后提出了 Re-ReST 框架的两个迷人扩展。

无基准真值的推理

反思方法 (如 Reflexion) 的一个主要局限性是,它们通常需要在测试时获得基准真值反馈 (例如,单元测试或奖励信号) 才能工作。在现实世界中,我们通常没有答案密钥。

作者提出将自洽性 (Self-Consistency) 与反思结合使用。他们让反思器即使不知道是否错误也“修复”智能体的输出,有效地生成替代的推理路径。然后他们对最终答案进行投票。

Table 6: Inference time results using Self-Consistency.

Table 6 表明,这种方法允许反思的好处渗透到推理阶段,在不需要教师或环境预言机 (oracle) 的情况下提高准确性。

直接偏好优化 (DPO)

由于 Re-ReST 生成 (错误尝试,修正尝试) 对,它为 DPO 创建了一个完美的数据集,DPO 是一种通过在“A 优于 B”的示例上训练来对齐模型的方法。

Table 7: Compatibility with DPO.

Table 7 证明了 Re-ReST 与 DPO 兼容。通过将修正后的轨迹视为“赢家”,将失败的轨迹视为“输家”,模型的对齐效果甚至比标准监督微调更有效。

结论

Re-ReST 为开源 AI 的未来提供了一个令人信服的蓝图。它证明了我们并不总是需要更大的模型或更聪明的老师来提高。通过构建重视错误——并通过反思系统地修复错误——的学习过程,较小的模型可以引导自身的智能提升。

对于学生和研究人员来说,这突显了一个关注点的转变: 从简单地整理静态数据集,转向设计动态训练循环 , 在循环中模型进行交互、失败、学习和进化。

主要收获:

  • 自训练允许模型在没有外部监督的情况下改进,但受限于缺乏高质量数据。
  • Re-ReST 通过使用反思器利用环境反馈修正失败的尝试来解决这个问题。
  • 这种方法优于标准自训练,并能与依赖昂贵 GPT-4 蒸馏的方法相媲美。
  • 它在推理、编码和决策任务中都有效,证明了自主自我改进是语言智能体的一条可行之路。