什么是大语言模型的累积推理?

什么是大语言模型的累积推理?

引言

什么是大语言模型的累积推理?为什么我们需要LLM的累积推理?累积推理在LLM中是如何运作的?LLM能否很好地完成累积推理?在本博客中,我们将以通俗易懂的方式逐一讨论这些问题,并参考 Yifan Zhang、Jingqin Yang、Yang Yuan 和 Andrew Chi-Chih Yao 的论文《Cumulative Reasoning with Large Language Models》。

什么是累积推理?

累积推理框架的核心思想是将复杂的推理问题分解为更小的步骤,然后通过累积和验证每个中间步骤,迭代地构建最终解决方案。

借鉴人类认知过程,累积推理引入了专门的角色,如“提议者”用于提出潜在的推理步骤,“验证者”用于根据上下文验证提议的正确性,以及“报告者”用于将累积的点综合成最终解决方案。

累积推理能够动态存储和组合经过验证的中间命题,形成有向无环图(DAG)。

具体来说,在累积推理框架中:

  1. 提议者根据当前上下文提出潜在的推理步骤,这些步骤在DAG中表示为新节点。
  2. 验证者评估提议者的建议是否正确,并将有效的步骤整合到不断演变的解决方案上下文中,这对应于在DAG中添加新的有向边。
  3. 报告者根据当前状态判断累积的上下文是否已达到最终解决方案。如果是,则输出结果。

因此,整个推理过程可以表示为一个动态构建的DAG,其中节点是中间推理步骤,有向边捕捉了新的推理步骤如何从之前的步骤推导而来。DAG允许推理过程分支和重新汇聚,并能够重访和重用先前的推理结果,更好地模拟人类在解决复杂问题时灵活的多路径思维过程。

为什么我们需要LLM的累积推理?

尽管大语言模型(LLM)在各种应用中取得了最新进展,但它们解决复杂、多步骤推理问题的能力仍然有限。现有的方法,如思维链(CoT)和思维树(ToT)提示,虽然尝试引导LLM进行更结构化的逐步推理过程,但缺乏动态存储和利用推理过程中生成的中间结果的机制。这种无法有效构建和组合先前命题的限制,使得它们在处理需要多步骤细致推理的复杂多方面问题时表现不佳。

借鉴人类认知过程,累积推理引入了专门的角色,如“提议者”用于提出潜在的推理步骤,“验证者”用于根据上下文验证提议的正确性,以及“报告者”用于将累积的点综合成最终解决方案。这种分解为提议、验证和报告迭代循环的方式,使得LLM能够将复杂任务分解为可管理的组件。

至关重要的是,累积推理能够动态存储和组合经过验证的中间命题,形成有向无环图(DAG),而不仅仅是线性链或树状结构。这种利用更广泛已验证命题上下文的灵活性,反映了人类在处理复杂多步骤问题时采用的细致入微的非线性推理。因此,累积推理为大语言模型解锁了更强大和多样的推理能力。

累积推理在LLM中是什么样子的?

构建语言模型角色

根据累积推理框架,作者构建了三个语言模型角色:

  • 提议者:根据当前上下文提出潜在的推理步骤
  • 验证者:评估提议者的建议是否正确,并将有效步骤整合到上下文中
  • 报告者:判断累积的上下文是否能够得出确定的解决方案

这三个角色可以使用同一个大语言模型,通过特定的提示来分配不同的角色。

设置基线

为了评估累积推理的有效性,作者设置了以下基线:

  • 直接输入输出提示(Direct)
  • 思维链提示(CoT)
  • 自验证思维链提示(CoT-SC)
  • 思维树提示(ToT)

遵循实验流程

作者测试了多种大语言模型,包括 GPT-3.5、GPT-4 和 LLaMA 模型。实验流程如下:

  • 对于数据集中的每个问题,将问题输入给提议者。
  • 提议者生成一系列推理建议作为中间步骤。
  • 将中间步骤输入给验证者,验证者评估每个步骤。
  • 有效的步骤被整合到上下文中,无效的步骤被丢弃。
  • 重复上述过程,直到报告者确定可以给出最终解决方案。
  • 在某些实验中,使用多数投票或其他策略来提高鲁棒性。

选择评估数据集

作者选择了多个涵盖不同类型复杂推理任务的数据集进行评估,包括:

  • 逻辑推理任务:FOLIO wiki 数据集、AutoTNLI 数据集
  • 24点游戏数学难题
  • 数学问题求解:MATH 数据集

LLM能否很好地完成累积推理?

简单的答案是:能!实验结果表明,CR框架在所有评估任务中均显著优于基线方法。

总体性能

在 FOLIO wiki 数据集上,准确率从 85.02% 提升至 98.04%;在 AutoTNLI 数据集上,相比思维链提升了 9.3%;在 24 点游戏中,准确率达到 98%,比之前的最佳方法提升了 24%;在 MATH 数据集上,CR 获得了 4.2% 的绝对提升,并且在最具挑战性的 Level 5 问题上获得了 43% 的相对提升。值得注意的是,通过将 CR 与代码环境结合,作者在 MATH 数据集上实现了 72.2% 的准确率,相对优于之前最佳方法 38.8%。

优于思维链(CoT)和思维树(ToT)

累积推理(CR)通过一系列在不同任务上的实证结果展示了其对思维链(CoT)和思维树(ToT)的优越性。在逻辑推理任务(如 FOLIO wiki 和 AutoTNLI 数据集)上,CR 表现卓越,在整理的 FOLIO 数据集上达到 98.04% 的准确率,相比 CoT-SC 的 96.09% 有了显著提升。这一进步归功于 CR 动态存储和利用中间结果的能力,形成有向无环图(DAG),从而能够利用更广泛的已验证命题上下文。

在数学谜题 24 点游戏中,CR 以 98% 的准确率胜出,比 ToT 提升了 24%,并且只访问了四分之一的节点,突显了其效率和问题解决能力。

此外,在 MATH 数据集上,CR 不仅创下了新基准(比之前方法提升 4.2%),在最困难的问题上还实现了 43% 的相对提升。将 CR 与 Python 代码环境结合后,准确率高达 72.2%,比 PoT 和 PAL 等方法提升了 38.8%。这些结果共同说明了 CR 相比 CoT 和 ToT 具有更强的适应性、鲁棒性和增强的推理能力。

累积推理在LLM中的未来方向有哪些?

与符号系统集成

文章讨论了将 CR 与 Python 代码环境结合的潜力,以利用 LLM 的计算和逻辑推理能力。未来可以探索与符号系统、知识图谱或形式定理证明器的更深层次集成,以进一步提高推理的准确性和复杂性。

增强泛化能力

虽然 CR 在特定领域已取得成功,但将其泛化能力扩展到更广泛的任务和领域将至关重要。这可能涉及使 CR 适应跨不同学科的各种推理和问题求解。

提高鲁棒性和容错性

文章强调了 CR 的容错特性。未来的工作可以专注于使 CR 更加鲁棒,特别是在处理模糊或噪声数据时,以及提高从错误中间步骤中恢复的能力。

基准测试和标准化

为累积推理任务开发标准化的基准和评估指标,有助于系统性地评估进展并比较不同方法。

如何用大语言模型实现累积推理?

作者提供的大部分代码需要连接 OpenAI API 以使用 GPT 3.5 和 4 模型,这应该是你的第一步。

接下来,无论你是想解决数学问题、玩 24 点游戏,还是复现累积推理实验,只需运行此 Github 页面提供的特定 Python 文件:https://github.com/iiis-ai/cumulative-reasoning

此外,如果你想像论文作者那样使用 LLaMA 模型或其他 LLM 来测试累积推理,可以使用 Novita AI LLM API 来访问多种 LLM。

结论

总之,这篇博文全面介绍了 LLM 的累积推理,这是一种显著增强 LLM 复杂问题求解能力的新方法。通过将复杂问题分解为更小的步骤,并通过提议、验证和报告的过程迭代构建解决方案,累积推理模拟了人类的认知策略。

来自多个数据集的结果令人印象深刻,展示了准确率的显著提升,尤其是当累积推理与代码环境结合时。此外,结果证明了累积推理优于现有的思维链和思维树方法。

总体而言,LLM 累积推理的未来方向有望将 LLM 推至 AI 推理的新高度,带来更复杂、更接近人类的问题求解能力。

参考文献

Zhang, Y., Yang, J., Yuan, Y., & Yao, A. C.-C. (2024). Cumulative Reasoning with Large Language Models. IIIS, Tsinghua University. https://arxiv.org/pdf/2308.04371

Novita AI 是一个一站式平台,提供无限创造力,接入 100+ 个 API。从图像生成、语言处理到音频增强和视频处理,按用量付费,让您在构建自己的产品时免去 GPU 维护的烦恼。免费试用。