rStar:双小模型自博弈相互验证提升推理能力
1. 引言:大型语言模型的推理短板
尽管大型语言模型(LLM)在自然语言理解、代码生成及对话交互等任务中表现出色,但在复杂逻辑推理方面仍存在显著不足。以 GSM8K 数学推理数据集为例,即使是 Mistral-7B 等先进模型,在使用思维链(Chain of Thought, CoT)技术辅助下,其准确率也仅能达到约 36.5%。这一瓶颈在小型语言模型(SLM)中更为突出。
传统的解决方案主要依赖两种路径:
- 微调(Fine-tuning):虽然有效,但往往依赖于由更强大模型(如 GPT-4)生成的标注数据,成本高且存在知识蒸馏偏差。
- 使用更强教师模型:通过提示工程调用外部大模型进行推理,但这并非所有场景都能获得许可或资源支持。
如何在缺乏外部强模型的情况下,利用现有 SLM 自身潜力提升推理能力,是当前的研究热点。
2. 自我探索的困境与突破
一种有前景的方法是利用模型自身的知识进行迭代优化。例如 RAP(Rewarding Analytical Prowess)方法采用自我奖励反馈机制。然而,这种方法存在两个根本性问题:
- 解答空间探索困难:LLM 在推理过程中容易陷入局部最优,难以有效探索多样化的解答路径,导致推理步骤质量低下。
- 判断能力不足:SLM 难以准确辨别哪些中间推理步骤是正确的,也难以确定最终答案的正确性,导致自我优化可能反而降低输出质量。
针对上述问题,微软亚洲研究院和哈佛大学的研究团队提出了 rStar(Self-play muTuAl Reasoning)方法。该方法的核心思想是让两个相同的 SLM 互相验证,通过自博弈机制提升推理能力。
3. rStar 核心工作原理
rStar 的工作流程设计为闭环迭代系统,具体步骤如下:
3.1 流程概述
- 问题提出:给定一个需要复杂推理的问题。
- 初始解答:两个 SLM(称为 Agent A 和 Agent B)分别独立生成初始解答。
- 互相验证:A 对 B 的解答进行逻辑校验,B 对 A 的解答进行逻辑校验。
- 反馈改进:基于对方的验证反馈,A 和 B 分别修正自己的解答中的错误或不严谨之处。
- 迭代优化:重复验证与改进步骤,直到达到预设的迭代次数或双方解答趋于一致且满足质量阈值。
- 最终输出:选择经过多轮验证后质量最优的解答作为最终结果。
3.2 核心优势
- 互补性:两个模型可以互相补充,弥补各自在特定逻辑路径上的盲区。
- 多样性:通过双模型交互,能够探索更广泛的解答空间,减少单一模型的路径依赖。
- 自我验证:无需外部更强大的模型介入,实现了低成本的自我提升。
- 适用性广:可应用于数学推理、逻辑谜题、代码调试等多种任务。
4. 技术实现细节
以下是 rStar 算法的简化 Python 伪代码实现,展示了核心逻辑结构:
def rStar(model_A, model_B, question, max_iterations=5):
"""
rStar 自博弈推理主函数
:param model_A: 模型实例 A
:param model_B: 模型实例 B
:param question: 推理问题输入
:param max_iterations: 最大迭代次数
:return: 最优解答
"""
# 1. 初始化阶段:生成初始解答
solution_A = model_A.generate_solution(question)
solution_B = model_B.generate_solution(question)
i (max_iterations):
feedback_A = model_A.validate(solution_B)
feedback_B = model_B.validate(solution_A)
solution_A = model_A.improve(solution_A, feedback_B)
solution_B = model_B.improve(solution_B, feedback_A)
solution_quality_meets_threshold(solution_A, solution_B):
select_best_solution(solution_A, solution_B)


