论文标题:
A Survey of Chain of Thought Reasoning: Advances, Frontiers and Future
论文链接:https://arxiv.org/abs/2309.15402
仓库链接:https://github.com/zchuz/CoT-Reasoning-Survey
引言
思维链,一种通过逐步思考解决问题的方式,在解决复杂推理任务上展现出了惊人的性能,激起了人工智能和自然语言处理领域近年来的广泛研究和关注。
然而,目前缺乏一篇针对思维链及其变体的系统性归纳和总结。针对这一问题,本文对现有思维链相关研究进行了广泛调研,对思维链构造方法、思维链增强方法、思维链结构变体进行了归纳和总结,对思维链前沿应用做出了探讨并对思维链未来潜在研究方向进行展望。
为了与传统链式思维链进行区分,本文提出了泛思维链(X-of-Thought)的概念,其泛指基于思维链核心思想——逐步思考解决问题的方法和变体。在下文中所讨论的思维链均代指广义的泛思维链。
我们期望这篇综述能够为研究者和初学者提供参考和启发,激发更多关于思维链推理领域的深入探讨,推动该领域的进一步发展和创新。背景介绍
2.1 范式转换近年来,随着计算能力的不断提升,大规模语言模型如雨后春笋般涌现,例如 GPT,LLAMA,BLOOM。而随着语言模型规模的不断扩大,涌现出了许多令人惊喜的能力,例如上下文学习和思维链能力。因此,自然语言处理的范式正在从预训练+微调转变为预训练+上下文学习。2.2 上下文学习和思维链推理上下文学习(In-context Learning)通过在提示文本中添加输入-输出示例,通过少样本学习(Few-shot Learning)的方式让 LLM 模仿已有示例(demonstrations)解决新的问题。通过上下文学习,LLM 无需额外微调即可使用,并且还能取得不错的性能。尽管如此,其在面对复杂数学推理、常识推理等复杂推理任务时表现不佳。
思维链(Chain-of-Thought)推理要求模型在输出最终答案之前,显式输出中间逐步的推理步骤。这一举措大幅度提高了 LLM 在复杂推理任务上的表现,并且输出的中间步骤方便使用者了解模型的思考过程,提高了大模型推理的可解释性。目前,思维链推理已经成为大模型处理复杂任务的一个常用手段。未来研究展望(包含多模态思维链推理、可信思维链推理——减少幻觉、思维链理论研究)
4.1.1 手动思维链构造
示例中的推理链条完全由人工标注。
优缺点:人工标注推理链条具有较高质量,为少样本学习提供了优质的信号。但是人工标注需要较大的人力成本开销,并且会遇到示例选择难以优化、跨任务迁移困难等问题。4.1.2 自动思维链构造示例中的推理链条完全无需人工标注。具体来说,它分为 Zero-shot CoT 和 Auto CoT 两种方式。前者通过特定的提示文本激发模型在没有示例的情况下生成推理链条;后者则是使用前者零样本生成的推理链条,并结合示例选择策略,通过少样本学习的方式生成推理链条。
优缺点:自动思维链构造不需要人工标注极大减少了人工成本,并且由于无需针对任务设定示例,在不同任务间可以方便迁移。但是由于缺少高质量人工标注信号,其性能通常较差,时常会出现事实错误、逻辑错误等幻觉现象。4.1.3 半自动思维链构造示例中的推理链条少量由人工标注。具体来说,人工标注少量推理链条作为“种子样例”,基于这些种子样例进行拓展得到大量的推理链条,之后通过示例选择通过少样本学习的方式生成推理链条。
优缺点:半自动构造方法结合了前二者的优点,在推理性能和人力成本间达到了平衡。少量人工标注提供了高质量的信号从而提高了推理质量,并且自动的推理链条拓展也减少了人工成本,在不同领域间迁移也仅需对种子样例进行重新标注。4.2 思维链结构变体最原始的思维链是链式结构,并且以自然语言描述中间推理过程。链式结构过于线性,一定程度上限制了它在复杂任务上的能力,为此许多研究对思维链的结构进行了探索。4.2.1 链结构变体链式结构变体主要针对中间推理过程的形式进行修改。
程序语言的执行和复杂数学推理的过程十分契合,一些工作提出使用程序语言代替自然语言,通过生成可执行程序作为推理链条,并执行该程序得到最终推理结果,例如 PAL、PoT。此外还有一些其他形式的中间推理过程,例如 Algorithm-of-Thought 将推理链条替换为算法的执行过程,激发大模型内部使用算法推理的能力,Chain-of-Symbolic 在规划任务中使用符号代替了复杂的环境。4.2.2 树结构变体链式结构的思维链限制了探索的广度,一些方法显式地构造了树并引入了树搜索算法。结合树结构和树搜索算法可以对不同的推理路径进行探索,并且引入了回溯、自我评估、剪枝的操作,在复杂任务及规划任务上取得优秀表现(Tree-of-Thought)。此外有方法在中间步骤中额外引入了不确定性评估,一定程度缓解了由不确定性带来的推理级联错误(Tree-of-Uncertain-Thought)。
有些方法通过树结构加快推理速度,通过将问题分解成可以平行解决的子问题并行解码,但这种方法仅限于解决简单任务,无法处理复杂推理任务(Skeleton-of-Thought)。
然而,当前的树结构变体方法在任务选择上有较大的局限性,并且需要针对任务设定具体的提示指令,这些困难阻碍了它的广泛应用。4.2.3 图结构变体图结构相较于树引入了更复杂的拓扑结构。Graph-of-Thought 在推理中通过环结构引入了自我修复,并根据图拓扑结构引入了信息聚合,在处理复杂任务时有着更较优秀有的表现,但是其面临着和树结构变体类似的问题,阻碍了它的广泛应用。
ResPrompt 通过在提示文本中引入了“残差链接”来连接、聚合不同步骤的推理结果,隐式地引入了推理步骤之间地图结构,可以在数学推理等通用任务上使用,并且取得了优秀的效果。一个简单的思路是对推理步骤进行校验,例如通过演绎推理检验前后推理的一致性(Verify-CoT)、对每一个推理步骤进行细粒度的校验(DIVERSE)。
事实性错误通常通过引入知识进行缓解,具体来说分为外源知识和内源知识。对于内源知识,模型在回答问题前,首先通过提示指令获取模型内部的知识,并基于这些知识进行推理(SCREWS、Chain-of-Verification、Crystal、Step-Back Prompting),外源知识的引入将会在后续章节中介绍。
对于推理一致性,一些方法通过反向推理进行验证。具体而言,他们根据问题和模型的预测来推理问题中的条件,根据推测出的条件和真实条件的一致性来判断推理的正确性(RCoT、FOBAR、Self-Verification)。4.3.2 基于问题分解
模型直接回答复杂问题是十分具有挑战性的,而回答简单问题则得心应手。因此将问题分解成子问题显式地一步步解决是一类有效的方法。
Least-to-Most 使用了自顶向下的问题分解策略,首先将问题一次性分解成若干子问题,之后逐个解决从而得到最终的答案;Successive Prompting 采取了一种迭代分解策略,每轮迭代分解一个子问题并解答,并使用其促进后续的问题分解和回答;Decomposed Prompting 采取模块化设计,对不同类型的子问题设计专属模块负责解答,提高了子问题解答的准确性。
此外,BINDER 采取神经符号的方式,通过程序执行得到最终答案;DATER 则关注表格推理的问题分解,需要同时考虑问题和表格的分解。4.3.3 基于外源知识
模型内部存储的知识在预训练结束后便会定格,无法获取新的知识,导致知识的匮乏和过时。从维基百科、知识库、词典等途径引入外源知识,能够一定程度缓解这个问题。
Chain-of-Knowledge 从知识库中获取结构化知识进行知识指导的推理,并且根据结构化知识对推理链条的真实性和可信性进行验证。KD-CoT 将多跳推理转化为多轮问答形式,在每轮问答中检索相关的事实知识辅助问答。4.3.4 基于排序或投票
由于语言模型是基于概率采样的,在生成文本时会具有一定的随机性,通过多次采样并对采样结果进行集成,可以有效地缓解这个现象,并显著提高推理的性能。
一些工作在推理链条或答案层级进行粗粒度的集成,例如 Self-Consistency、Complex CoT、Verifiers。这种集成粒度过粗没有考虑到推理步骤,为此另一些工作考虑到了中间推理步骤进行细粒度的集成,例如 Self-Check、GRACE。除了通过概率进行采样外,Diversity-of-Thought 通过不同的提示文本来采样多跳推理路径。总的来说,基于多次采样的策略已经成为当前思维链推理中常用的技术。4.3.5 效率提升尽管思维链推理已经展现出卓越的性能,其推理速度慢、使用开销大仍是不可忽视的问题。目前工作从减少推理链条标注成本、加快推理时解码速度和降低推理时的多次采样次数开销入手。
思维链前沿应用
5.1 工具使用
虽然大模型具有非常强大的知识水平,其依然缺乏对于时效性内容以及领域外知识的更新能力,并且语言模型在数学计算、符号推理上也较为薄弱,在遇到这些问题时往往会产生幻觉现象。
为此,许多方法探究如何使用外部工具对 LLM 进行增强,通过提示或微调等方式引入使用工具(调用 API)的能力。网页和知识库检索能够让模型获取最新的外部知识,数学计算器与程序执行可以用以处理更为复杂的计算问题,调用其他模型能够获得其他模态(图像、视频、语音)的理解以及生成能力,甚至是与外部环境进行感知与交互,实现具身智能。
思维链推理在工具增强方法中起到了非常重要的作用。大多数情况下,模型对于工具调用的需求是隐含的。工具提高了大模型在单步“动作”下的处理能力,而思维链赋予了模型在推理过程中对于问题的分解,工具使用形式的思考以及工具调用结果的追踪处理能力。5.2 决策规划思维链提供了一种将问题分解为链式子问题的形式,从而处理较为复杂的问题。然而,对于更为复杂的任务,链式的分解形式并不充分。在前文中,我们介绍了将链式推理拓展到树结构、图结构等形式的工作。
除此之外,LLM+P,LLM+DP 等工作将问题分解为规划领域定义语言(Planning Domain Definition Language, PDDL)的形式,通过外部模块对过程进行规划调度,最终再转换回自然语言形式用 LLM 进行处理。这些方式都提供了更为灵活的分解以及调度过程,增强模型的规划能力。
在长期规划中,模型产生的错误会进行累积。并且在执行过程中可能会遇到计划外的错误,不断进行重试也无法得到正确的结果。因此需要提高模型在推理过程中对错误处理、总结,以及对计划更新的能力。Self-Refine 能够让模型对结果进行自我反馈以及优化,而 Reflexion 在此基础上加入长短期记忆,根据历史经验进行决策。AdaPlanner 等工作则能够根据环境反馈优化规划过程,提高灵活性。
规划增强的方法可以与工具增强、多智能体等方法进行结合,进一步增强大模型在复杂问题上的处理能力。5.3 思维链蒸馏思维链被视为大模型的一种涌现能力,然而,这种能力在一些规模较小的模型上并不是很显著,限制了小模型在推理时的表现。
当模型具备一定的思维链能力时,可以通过自监督与自我迭代的方法对推理能力进行强化,例如 LMSI,STaR 等。
但大多数情况下,小模型的思维链能力较弱,难以输出可靠的推理过程进行自我蒸馏。此时需要依靠具有较强思维链能力的大模型输出推理链条,再蒸馏给小模型,从而让小模型也获得一定的推理能力。一般来说,蒸馏时需要对数据进行筛选,有答案标签的情况下可以通过标注筛选出结果正确的推理过程,而在没有标注时也能通过 self-consistency 等方式投票得出较为可靠的答案。
除了推理结果的正确性外,推理过程的多样性对于蒸馏的效果也非常重要。SCoTD 发现针对每个样本采样多种推理路径能提高小模型的推理性能,SCOTT 通过对比解码和反事实推理等方式进一步提升思维链质量,缓解小模型学习到推理过程“捷径”的问题。
思维链的形式也会影响小模型的学习效果。DialCoT 将思维链过程拆解为多轮对话的形式,简化小模型的学习难度。MWPCoT 和 PlanningToken 等工作则在数学推理过程中引入高层次的信息表示,提高模型在推理过程中的一致性以及在不同问题上的泛化性。
不过需要注意的是,模型在多维度能力上存在着非常复杂的权衡。虽然通过蒸馏和微调的方式可以提高小模型在专一领域的推理能力,这个过程同时会损害模型在其他通用领域的性能(Specializing-Smaller-LM)。相关推理基准和数据集
常用的推理数据集和基准包含:
数学推理:数学推理通常用来衡量模型的推理能力。
常识推理:常识推理是根据日常生活中普遍知晓和普遍感知的知识进行推理、判断和理解的过程。
符号推理:本文中符号推理特指对简单操作的模拟,这些操作对于人类而言十分简单,但对于语言模型而言则极具挑战性。
逻辑推理:逻辑推理分为演绎推理、归纳推理和归纳推理。演绎推理是从一般前提得出结论的,归纳推理从特例中推导出一般结论,溯因推理对观察到的现象给出合理的解释。
多模态推理:在现实世界中除文本以外还包含众多其他模态的信息,其中以视觉模态最为普遍。图文多模态推理需要结合图文回答问题。视频多模态推理引入了时间维度,相较于图文多模态推理更具挑战性。
总结
本文对当前思维链推理研究进行了充分的回顾和讨论。我们提出了泛思维链的概念,并且对思维链的方法从多个角度进行了总结和讨论。此外,我们还探讨了思维链在前沿领域中的应用。最后,我们指出了当前思维链研究的不足和挑战,给出了未来潜在研究方向的探讨。更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧