基于 CoT+PoT 验证器提升 LLM 推理准确性与一致性的方法
针对大语言模型在复杂推理任务中的局限性,本文探讨了通过构建 CoT+PoT 验证器来提升推理准确性的方案。研究团队利用多模型采样数据训练验证器,对比了 ORM、DPO 及 SimPO 等方法,发现无参考偏好调优效果最佳。结合 CoT 的可读性与 PoT 的可执行性,该方法在 GSM8k 和 MBPP 等基准测试中显著优于基线模型。文章提供了具体的训练策略与系统提示词设计建议,帮助开发者优化 LLM 输出的一致性。

针对大语言模型在复杂推理任务中的局限性,本文探讨了通过构建 CoT+PoT 验证器来提升推理准确性的方案。研究团队利用多模型采样数据训练验证器,对比了 ORM、DPO 及 SimPO 等方法,发现无参考偏好调优效果最佳。结合 CoT 的可读性与 PoT 的可执行性,该方法在 GSM8k 和 MBPP 等基准测试中显著优于基线模型。文章提供了具体的训练策略与系统提示词设计建议,帮助开发者优化 LLM 输出的一致性。

即便是最先进的 LLM,在复杂的多步推理问题上仍然面临挑战。如何提高 LLM 的推理准确性和一致性,成为了 AI 研究者们关注的焦点。

尽管 LLM 在各种自然语言任务中表现出色,但在数学和代码推理等复杂任务中仍然存在明显的短板。研究者们发现,即使是最先进的 LLM,在生成单一解决方案时的准确率往往不尽如人意。然而,有趣的是,当允许模型生成多个解决方案时,正确答案通常能够在这些样本中被找到,召回率甚至超过 85%。

这一发现为解决 LLM 推理挑战提供了新的思路:通过扩大推理计算规模,采样多个候选解决方案,可能是一种有效的改进方法。然而,如何从这些候选方案中筛选出正确答案,成为了关键问题。
为了解决这一问题,研究团队首先构建了一个全面的训练数据集。这个数据集包含了多个 LLM 推理器生成的正确和错误解决方案,涵盖了数学和代码推理任务。
对于数学推理,研究者使用了 GSM8k 和 MATH 数据集作为种子数据集,从多个 backbone 模型中采样解决方案。这些模型包括通用 LLM(如 Mistral 和 Phi3) 以及专门用于数学的模型 (如 InternLM2-Math 和 MAmmoTH2-plus)。对于每个问题,他们采样了 10 个 CoT 解决方案并去除重复项。最终,他们得到了 159,778 个正确解决方案和 100,794 个错误解决方案,平均每个问题有 10.67 个正确解决方案和 6.73 个错误解决方案。
对于代码推理,研究者同样使用了通用 LLM 和专门用于代码的模型。他们选择了 MBPP 和 MagiCoder-75k 的 Python 子集作为种子数据集。通过生成过程,他们最终得到了 132,089 个正确解决方案和 145,345 个错误解决方案,平均每个问题有 11.10 个正确解决方案和 12.21 个错误解决方案。
这种多样化的数据集为验证器提供了丰富的学习资源,使其能够更有效地区分和排序不同 LLM 产生的解决方案。
在构建了全面的训练数据集后,研究团队对不同的验证器训练方法进行了系统的比较。他们主要考察了两大类方法:结果奖励模型 (Outcome Reward Models, ORMs) 和偏好调优 (Preference Tuning)。这两类方法在原理和实现上有显著差异,各有优缺点。
ORMs 是一种直接的方法,其核心思想是在 LLM 的输出层上添加额外的计算结构,用于评估生成内容的质量。
具体实现:
优点:
缺点:
偏好调优方法,如直接偏好优化 (DPO),采用了一种不同的策略。这类方法不直接学习评分函数,而是通过比较学习来优化模型输出。
具体实现:
优点:
缺点:
研究团队发现,无参考的偏好调优方法 (如 SimPO) 在训练验证器时表现最佳。这类方法是对标准偏好调优的进一步改进。SimPO 的有效性归因于一个关键设计:使用序列的平均对数概率作为隐含奖励,这种奖励公式更好地与模型生成保持一致,并且无需参考模型,从而提高了计算和内存效率。
特点:
优势:
研究团队通过严格的实验比较了这些方法:

研究者推测,SimPO 的优越性能可能源于以下几个因素:
研究团队提出了一种名为 CoTnPoT 的创新方法,结合了 CoT 和 PoT 解决方案的优势。CoT 解决方案更具描述性和可读性,而 PoT 解决方案高度抽象和结构化,可以直接执行以识别运行时错误。使用 CoTnPoT 和 Math-Rev,在数学推理验证性能方面显著优于两个基线一 Math-Shepard 和 Math-Minos。此外,如图所示,Math-Rev+Qwen2-72B-Instruct 在 LLMs 中表现优于最先进的模型,包括 LLaMA3.1-405B 和 GPT-4o。

CoTnPoT 方法的工作流程如下:

这种方法巧妙地结合了 CoT 的可读性和 PoT 的可执行性,有效提高了验证的准确性。
研究团队在多个基准测试上评估了他们的方法,以下是实验结果。

在 GSM8k 数据集上,使用 Qwen-72B-Instruct 作为 backbone 推理器,结合 Math-Rev 验证器和 CoTnPoT 方法,达到了 95.6% 的准确率。这一结果大幅超越了现有的最佳表现。
在更具挑战性的 MATH 数据集上,同样的组合达到了 76.9% 的准确率,超过了包括 GPT-4o 在内的多个强大基线模型。
在 MBPP 数据集上,CoTnPoT 方法同样表现出色。例如,使用 CodeQwen 作为 backbone 推理器,结合 Code-Rev 验证器和 CoTnPoT 方法,在 MBPP 测试集上达到了 80.3% 的通过率,比不使用 CoTnPoT 的版本提高了 2.8 个百分点。
研究团队将他们的 Math-Rev 验证器与两个最近的基线 (Math-Shepard 和 Math-Minos) 进行了比较。在保持一致的 LLM 推理器 (MetaMath-7B-Mistral) 的情况下,Math-Rev 在 GSM8k 和 MATH500 数据集上都取得了最佳表现,分别达到 90.75% 和 46.40% 的准确率。这一成功归功于更有效的验证器训练方法 (SimPO) 和从多个 LLM 推理器采样的成对训练数据。
尽管这项研究取得了显著成果,研究团队也坦诚地指出了当前方法的一些局限性:
未来的研究方向可能包括:
这项研究对正在开发 AI 产品的 Prompt 工程师们具有重要的实践意义。为了在实际项目中复现类似效果,建议遵循以下原则并参考系统提示词模板。
以下是一个基于 CoTnPoT 逻辑的系统提示词模板,可用于解决多步骤问题的自我验证:
# Role
你是一个高级推理助手,擅长通过思维链 (CoT) 和执行代码 (PoT) 相结合的方式解决复杂问题。
# Task
请根据用户的问题,生成多个可能的解决方案,并通过内部验证机制筛选出最优解。
# Workflow
1. **思维链生成**:逐步分析问题,生成详细的推理步骤。
2. **代码转换**:将关键计算步骤转化为可执行的 Python 代码片段。
3. **执行验证**:模拟运行代码,检查结果是否与推理结论一致。
4. **自我修正**:如果存在不一致,重新生成解决方案。
5. **最终输出**:输出经过验证的最优答案及简要解释。
# Constraints
- 必须包含至少 3 种不同的解题思路。
- 所有涉及计算的步骤必须提供对应的代码验证。
- 最终答案必须明确且唯一。
# Example Input
用户问题:"小明有 5 个苹果,吃了 2 个,又买了 3 个,现在有多少个?"
# Output Format
- 思路 1: [CoT 描述]
- 验证代码 1: [Python 代码]
- 思路 2: [CoT 描述]
- 验证代码 2: [Python 代码]
- ...
- 最终答案:[确认后的结果]
通过将上述方法整合到 SYSTEM PROMPT 中,可以显著提高项目里输出的准确性和一致性。开发者可根据具体业务场景调整验证规则,例如增加单元测试集成或外部 API 校验,以进一步增强鲁棒性。
本文详细介绍了利用 CoT+PoT 验证器提升 LLM 推理性能的完整技术路径。从数据集构建、验证器训练方法对比到实际工程落地,为后续研究和应用提供了坚实基础。随着大模型技术的演进,结合可执行代码的验证机制将成为提升 AI 可靠性的关键方向之一。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online