NLP高频面(48)大语言模型中的思维链(CoT)技术详解¶
本文讨论了大语言模型中的思维链(CoT)技术,介绍了其核心思想、不同任务中的效果、常见提示模式、推理模式、应用选择、提升表现的原理、不同模型的表现对比、应用实例,并对未来发展进行了展望。关键要点包括:
核心思想:让模型在给出最终答案前生成一系列推理步骤,将复杂问题分解为子问题,提升推理质量和可解释性。
适用任务:在数学推理、常识问答、符号推理、法律推理等复杂推理任务中效果显著,简单或纯查找型任务作用不明显。
常见模式:少样本思维链需提供示例,效果显著但需人工设计;零样本思维链附加通用指令,使用方便;自动思维链让模型生成示例,降低人工干预。
推理模式:按部就班型实现简单,但面对复杂问题易出错;三思后行型求解能力强,但计算开销大;集思广益型集成多个推理结果,减少不确定性。
应用选择:根据任务特点选择合适的CoT方法,如数学推理用零样本或少样本CoT,复杂任务可结合自洽性或三思后行型方法。
提升原理:减轻认知负荷、提供错误检查机会、利用训练分布、增强可解释性和用户信任,但依赖模型规模,可能出现虚假推理,增加响应时间和长度。
未来展望:拓展到多模态领域、实现更高效推理、自动化提示与策略、验证推理结果、优化用户交互。
引言¶
大语言模型(LLM)在近年的飞速发展,让机器在各种任务上表现出令人瞩目的能力。然而,与人类不同,传统的语言模型往往倾向于直接给出答案,而缺乏可解释的中间推理过程。这在复杂推理任务中成为瓶颈:模型可能由于一步推理不当而得出错误结论,却没有过程可供检查。为了解决这一问题,研究者提出了思维链(Chain of Thought, CoT)技术,即在模型回答问题时,引导其生成一系列连贯的中间推理步骤。这种方法模拟人类逐步思考的过程,将复杂问题拆解为更小的子问题,循序渐进地求解,从而促进系统性的问题解决。本篇文章将围绕大型语言模型中的思维链技术展开详细讨论,包括其核心思想、适用任务、常见模式、不同变体方法的比较、任务场景下的应用指南、对模型性能的提升作用,以及在当前先进模型中的表现差异。文章最后还将提供代码示例演示 CoT 的应用,并展望未来的发展趋势。
思维链的核心思想¶
思维链(CoT)的核心思想在于让模型在给出最终答案前,先“想出”一系列推理步骤。直观来说,这就像给模型一张草稿纸,让它可以一边推算一边作答。传统的提示往往直接要求模型输出答案,而CoT提示则要求模型输出从问题到答案的完整逻辑论证过程。通过鼓励模型产出这些中间步骤,CoT能够引导模型逐步逼近正确答案,并使推理过程透明可循。
这种方法的理论基础是:复杂问题往往可以通过分解为一系列易于处理的子问题来解决。人类在解题时也是如此,会将一个大问题分成若干小步骤,各个击破。思维链提示正是让模型采用类似的策略,将复杂任务分解为一系列逻辑步骤,依次推导,直到得出最终结论。例如,对于一个数学应用题,直接让模型给出答案可能会导致它凭直觉猜测;但如果让模型“让我们一步步推理”(例如提示语:“让我们一步一步地思考”),模型就会先计算每一步的结果,再综合得出答案。这种逐步推理不仅提高了正确率,也使我们可以看到模型的思路链条,从而方便验证和分析。
简而言之,思维链提示通过鼓励模型给出中间推理而非直接跳到结论,来提升模型的推理质量和可解释性。它提供了一种结构化问题求解机制:模型基于之前的推理结果产生下一步推理,最终形成一个连贯的推理链直至答案。这一方法已经被证明能够激发语言模型的隐含推理能力,使其在许多复杂任务上表现得更接近人类的缜密思考过程。
思维链在不同任务中的效果¶
思维链技术自提出以来,在多种需要复杂推理的任务上展示出显著效果。尤其在以下几类任务中,引入CoT能明显提升模型表现:
数学推理:数学文字题和算术计算是思维链最早验证成功的领域之一。大型语言模型在直接回答多步计算问题时,常常会出错(例如因为算错中间步骤)。然而通过链式推理,模型可以逐步列出计算过程,每一步都得到校验,从而大幅降低出错率。例如,研究者发现,在小学数学题数据集(如MultiArith)上,只需在问题后附加“让我们一步一步地思考”,GPT-3模型的准确率就从不到20%猛增到接近80%。这种巨大的提升证明了逐步推理对于数学题的重要性。类似地,在更复杂的数学推理基准GSM8K上,引导模型产出思维链,使得PaLM等大模型的解题正确率远超不用思维链时的表现。总的来说,CoT能帮助模型进行逐行运算、公式推导和逻辑证明,因此在算术和代数问题、数学应用题、公式推演等任务上效果显著。
常识问答与逻辑推理:很多常识问答、逻辑推断类任务需要结合多个事实或步骤才能得出正确答案。例如问:“如果今天是周三,三天后是星期几?”直接回答可能出错,但让模型逐步推理(先算三天后的日期,再映射星期)就更稳健。思维链可以让模型罗列相关知识、逐步筛选推断,从而在常识QA、多跳推理(multi-hop QA)、逻辑谜题等任务上表现更出色。研究显示,在Commonsense QA、StrategyQA等需要多步推理的基准上,引导模型进行思维链能够提升准确率。例如,使用CoT后,模型在StrategyQA(一种要求整合多个常识事实回答问题的数据集)上的准确率有显著提高。常识推理任务往往没有明确的公式可循,但CoT能够帮助模型串联起零散的知识点,形成因果链条,这使它在这类任务中也颇为有效。
符号推理与代码推理:除了数字和常识,CoT 对一些符号推理任务(如链表操作、方程求解、数独谜题)也有帮助。模型可以一步步模拟符号操作过程,避免一次性出错。在代码生成与调试场景中,让模型先规划思路再写代码也属CoT的一种形式。例如,“先用自然语言列出解题步骤,再生成代码实现”可以提高代码正确性。虽然代码领域往往还有专门的工具调用方法,但在模型纯语言推理范围
内,CoT 有助于逻辑严密性。类似地,在法律推理等需要严谨多步推导的任务中,思维链也能发挥作用。
法律与复杂文案推理:法律推理题目(例如判定某案例是否构成某罪名)通常需要分步分析事实、法律条文和推理过程。在这类任务中,引导模型逐条列出关键事实、相关法律依据以及推理链,可以让答案更加可靠。比如一个法律问题:“甲将他人遗忘在商场的手机占为己有,是否构成侵占罪?”使用思维链提示,模型会先写出:“(1)根据法律,侵占罪是……(2)本案中甲拾得遗失物据为己有……(3)符合侵占罪构成要件,因此成立。”这样的回答逻辑清晰、论据充分。而如果没有思维链,模型可能直接回答“是”或“不是”而缺乏解释。通过CoT,模型在法律问答、学术推理、复杂文案分析等场景下能给出更有条理和说服力的结论。
需要指出的是,思维链对任务的帮助也取决于模型规模和任务难度。一般来说,对于需要多步推导的复杂任务,CoT提示几乎都会有所助益,尤其在模型原本容易一步出错的场景下。然而对于非常简单的问题,引入思维链可能显得多余;对于纯查找型的问答任务(如简单事实查询),CoT作用也不明显,因为这类任务不需要复杂推理。总体而言,在数学推理、逻辑推理、常识整合、代码分析、法律推演等复杂任务上,思维链技术已展现出显著效果,成为提升LLM性能的一大利器。
常见的思维链提示模式¶
思维链可以通过多种提示方式来实现。在实际应用中,研究者总结出几种常见模式,用于引导模型产出连贯的推理过程:
少样本思维链(Few-Shot CoT):在提示中提供带有推理过程的示例,示范给模型如何一步步推理。这是最初在论文中提出的形式。例如,可以在提示里先给出两三个问答示例,每个示例的回答都包含详细的推理步骤,最后再让模型回答真实问题。由于大型语言模型具有很强的上下文学习能力,通过这些带推理链的示例,模型会模仿示例的格式,对新问题也输出类似的推理+答案。这种少样本CoT在早期取得了惊人的成功:在Google提出的链式思维 prompting 研究中,为算术和推理难题设计了包含中间步骤的few-shot例子,使得PaLM等模型的准确率大幅上升。少样本CoT的优点是效果显著,缺点是需要人为设计示例,且示例占用提示长度。
零样本思维链(Zero-Shot CoT):这是后来发现的一种更简洁的提示策略,核心是在问题后直接附加一个通用指令,如“让我们一步一步地思考”,而不提供具体示例。这个提示语触发模型自行产出推理步骤,再给出答案。零样本CoT最早由Kojima等人在2022年的研究中提出,他们惊奇地发现,对于GPT-3这样的模型,仅仅在问题后加上一句话“Let’s think step by step.”,模型往往就会开始列出推理过程,最终答案准确率大幅提高。例如,对之前提到的算术问题,零样本CoT的效果几乎逼近少样本示例的效果。这一发现意味着模型已经在训练中学会了“看到提示要求解释时,先进行推理”的模式。零样本CoT无需准备示例,使用方便,而且不会占用额外的提示长度,是非常实用的一种模式。不过,它对提示措辞有一定依赖(英文里常用“Let’s think step by step”,中文可以使用“让我们一步一步推理”等类似语句触发)。在绝大多数支持CoT的大模型上,零样本CoT都能有效激发其链式推理能力,因此被广泛应用。
自动思维链(Auto-CoT):这是针对少样本CoT需人工设计示例这一缺点提出的改进方法。Auto-CoT方法通过让模型自己来生成示例,以减少人工干预。具体来说,研究者可以随机选择几个与目标任务类似的问题(甚至用模型自己造一些问题),然后对每个问题使用零样本CoT提示,让模型产出推理过
程和答案。接着,将这些模型生成的“问题-思维链-答案”作为示例,放入提示开头,再让模型回答真正的问题。这样就形成了一个自动构建示例的Few-Shot CoT。由于模型有可能在示例推理中出错,Auto-CoT通常会生成多个候选示例并筛选或多样化处理,以降低错误示例的影响。实验显示,通过Auto-CoT,可以在无需人工精心编写示例的情况下,实现与人工Few-Shot CoT相当的性能。这极大降低了CoT提示设计的门槛,使链式推理更易用、更可扩展。一句话,Auto-CoT 等于是“让模型教模型”:先让模型举例说明如何推理,再用这些例子教自己。这个方法在包括数学、常识等多个基准上都取得了和手工示例相近甚至更好的效果,证明了大模型本身已经具备生成高质量思维链示例的能力。
上述几种是思维链提示最基本和常见的模式。此外还有一些扩展技巧,例如有时会结合提示链¶
(Prompt Chaining)的方法,把模型的思维链分段提取(先让模型输出推理过程,再通过另一个提示让它总结答案),或者在提示中加入一些格式要求(如逐步编号每一步)。总体而言,无论Few-Shot还是Zero-Shot,本质都是为了让模型产生“显性的中间推理”。少样本示例提供了明确的范例,零样本指令则利用了模型固有的对解释性回答的偏好。不管哪种形式,应用思维链提示后,我们通常会看到模型的答案先罗列出一系列推理,再给出最终结论。这标志着模型在遵循提示进行连贯的逻辑推导,而非凭一句话直接猜测答案。
需要指出的是,思维链并非保证每一步都绝对正确。模型可能在推理过程中仍出现错误,但由于整个过程透明,用户或后续算法可以检查并发现哪些步骤有问题。因此,思维链不仅提高了正确率,也让错误更容易被发现和纠正。这种优势使CoT成为当前提升模型复杂推理的一项关键技术。
三 种典型的思维链推理模式:按部就班 vs 三思后行 vs 集思广益¶
随着思维链技术的发展,研究者在基本的 CoT 提示之外,进一步提出了多种新颖的推理框架。总体来看,这些方法大致可以分为三类风格:按部就班型、三思后行型和集思广益型。下面我们分别介绍每一类的代表方法及其特点,并比较它们之间的异同。
按部就班型方法(逐步生成单一路径)¶
“按部就班”类的方法指模型严格按照顺序一步步地产生单条思维链,直到得出答案。实际上,我们前面讨论的基本CoT提示(无论Few-Shot还是Zero-Shot)都属于这一类。在这种模式下,模型面对一个问题,从第1步推理开始,接着第2步、第3步……线性地展开思路,仿佛脑海中只有一条路线贯穿始终。其典型特征是不存在分支和回溯:模型不会刻意尝试多种不同思路,也不对已经做出的推理进行修改,而是一路线性推演到结论。
零样本CoT和少样本CoT都可归为按部就班型,因为它们让模型生成的思维链是一条连续的路径。模型每输出一句推理,都基于前一句展开,直到最后得到答案。在这过程中,模型没有显式地考虑其他可能的路线或选项。
逐步提示和工具使用:有些研究会把按部就班型CoT与外部工具结合,让模型一步步调用工具求解。例如所谓“Scratchpad(草稿本)”技术,让模型在推理链中间可以进行计算或记笔记,也是线性过程的一部分。这依然属于按部就班思维链,只是引入了工具辅助。
按部就班型方法的优点是实现简单、思路清晰,其缺点是在面对复杂问题时,如果最初走的路线不对,中途不会自动更正。模型可能沿着一条错误的思路越走越远。另外,单一路径有时可能陷入某种
偏误而不自知。不过对于大多数任务而言,让模型老老实实地一步步推理已足够取得明显收益,正因如此,按部就班型CoT是目前应用最广泛、基础的一类方法。
典型例子:Zero-Shot CoT用“一步一步思考”的提示让模型按部就班地输出思路;Auto-CoT用生成的示例引导模型沿单一路径推理。这些都属于线性思维链,即使中间有错误模型通常也不会跳出重来。
三 思后行型方法(多路径探索与反思)¶
“三思而后行”出自成语,意为多次思考再行动。在思维链技术中,我们借此指让模型尝试多种不同的推理路径,经过评估和筛选,最后才决定答案的方法。与按部就班型的一条路走到底不同,三思后行型方法允许甚至鼓励模型发散思维,探索树状或图状的多种解题思路,然后通过搜索或反思选择最佳的思路。这类方法的代表包括思维树(Tree of Thought, ToT)和思维图(Graph of Thought, GoT)等。
思维树(Tree of Thought, ToT):这是Princeton大学和DeepMind的研究者在2023年提出的一种框架【注:Yao等人,2023】。在ToT中,模型不再一次性给出整条推理链,而是逐步地扩展可能的“下一步”想法,形成一棵树状的思路结构。具体来说,模型先产生若干第1步的候选想法,然后对每个候选,各自展开可能的第2步……如此分叉下去,形成一个推理树。接下来,算法会评估每条部分推理路径的前景,剪除明显无效的分支(例如逻辑不通或与已知事实矛盾的路径),将计算资源集中在有希望的路径上。模型可以“回顾”之前的步骤,对某条路径进行修改或回溯——这相当于人类解题时发现走不通就退回来换一条路想的过程。最终,ToT在树中找到一条完整的解题路径(从根到叶的链),据此得出答案。思维树方法的突出特点在于:引入了决策点和搜索过程,模型可以同时考虑多种可能的推理方向,而非被局限在单一路径上。
思维树极大增强了模型解决复杂问题的能力。文献报告显示,在一些需要规划和尝试的难题上,ToT让模型的成功率产生飞跃。例如在经典数学游戏“24点”(给定四个数字,通过加减乘除得到24)任务中,GPT-4直接用链式思维只能解出约4%的题目,而结合ToT框架后成功率飙升到74%之高!同样,在迷你填字游戏、解谜写作等需大量搜索的任务上,ToT也让模型表现出远强于常规CoT的水平。这表明:通过树状探索和决策,模型能够弥补贪心一次性生成的不足,获得接近搜索算法的能力。
思维图(Graph of Thought, GoT):这是进一步扩展的框架,由苏黎世联邦理工等机构的研究者在2024年提出【注:Besta等人,2024】。GoT将ToT的概念推广,允许“思维”形成任意拓扑结构的图,而不仅限于树。换言之,模型产生的想法可以在图中任意连接和合并。某些不同路径的思路如果产生了相同的中间结果,可以在图上合并为一个节点;模型也可以在图中形成循环,重新审视某个想法。GoT提供了一套模块化架构,让模型的思维过程具备更强的灵活性和组合能力。例如,模型可以把两条不同推理链中有用的部分结合起来,综合其优点,弥补各自的缺点,形成新的解决方案——这一点在树结构中是不可能的。通过这种网络状的思想整合,GoT在一些任务上相比ToT进一步提高了效率和效果。例如,论文中提到,在排序任务上,Graph-of-Thoughts比Tree-of-Thoughts将结果质量提高了约60%,同时将计算成本降低了30%以上。GoT被认为更接近人脑的思考模式:人类遇到难题时,往往会跳出线性思维,在脑海中构建一个复杂的概念网络,比较不同路径,甚至融合不同方案的部分思路。Graph-of-Thought正是赋予了LLM类似的能力。
三思后行类方法的 共同点 在于:它们都不局限于单一路径,而是让模型像搜索算法一样扩展和评估多个推理路线。这带来了更高的求解能力(因为可以避免走入单一路径的死胡同),但代价是计算开销更大,实现也更复杂。ToT/GoT 需要在推理过程中多次与模型交互、评估许多候选,这远比一次性生成一个回答消耗的资源多。不过在关键任务上,这样的投入是值得的,因为它能够解决一些普通链式思维无法解决的难题。
需要注意的是,三思后行类方法往往需要设计好的启发式策略来引导搜索,否则可能面临爆炸性的分支组合。论文中常采用启发式评价函数或限定最大步骤等手段控制搜索规模。此外,这类方法目前多在学术研究和特定应用中验证,其通用性和易用性还在探索中。但不可否认,它代表了CoT技术的一大方向:引入决策与搜索,使LLM具备更强的规划和深度推理能力。
集思广益型方法(多解并举与自洽投票)¶
“集思广益”原意是集合众人的智慧。在CoT领域,我们借指让模型生成多个解答思路,然后综合这些思路以得出最终答案的方法。这类方法的思路是:对于一个复杂问题,可能存在多种不同的正确推理路径,模型如果随机采样多次,往往能产生一些不同的解题链条。如果我们能将这些不同思路的结果进行比较,取其中最一致或最有共识的答案,就能提高正确率。代表性的方法是自洽性思维链(Self-Consistency CoT)。
自洽性(Self-Consistency):该方法由Google研究员提出,用于提升链式思维答案可靠性【注:Wang等人,2022】。其具体做法是:在同一个问题上,让模型独立地生成多条思维链(比如采样5次或10次,每次都从头按CoT输出推理和答案)。这样我们得到了一组可能不同的推理过程和对应答案。由于模型的生成具有随机性,不同次的推理路径可能采取不一样的角度思考问题。接着,我们对这些答案进行统计,“少数服从多数”——即选出出现次数最多的那个答案作为最终答案。如果需要,更严格一些也可以让模型再对比这些不同推理的优劣,但多数情况下简单投票已经足够。
Self-Consistency 的直觉在于:对于复杂推理问题,正确的答案通常是唯一的,但抵达它的路径可能不止一条。只要有至少一条推理链走通了,那么那次生成的最终答案就是正确的。而错误的推理往往各有各的偏差,最终答案可能是错的且五花八门。通过采样多次,我们相当于让模型“集体讨论”,最终以多数模型的意见为准。实践证明,这种方法大幅提升了链式推理的可靠性。例如,在算术和常识推理基准上,引入自洽性后,模型性能显著上升:在数学题数据集 GSM8K 上,自洽性让GPT-3系列模型的准确率相比单条CoT提高了近18个百分点,在常识问答、符号推理数据集上也有10%左右的提升。自洽性方法的效果等同于一种投票表决机制,能过滤掉模型偶然的失误,增强结果的稳健性。值得一提的是,即使基础的CoT本身效果不好,自洽性仍可能带来改善,因为多次采样提供了纠错机会。
Self-Consistency 还有一个好处是易于并行化:我们可以同时运行多条思维链,然后投票,流程上比较简单,不需要复杂的搜索控制。不过其劣势在于需要多次调用模型,计算成本比生成一次要高。此外,如果模型倾向于重复某种错误推理导致多个链都一致地出错,自洽性也无能为力(不过这种情况相对少见,通常不同采样下错误答案往往不一致)。
多解重排和多模型协作:与自洽性类似的思想,还包括让多个模型各自进行CoT推理,然后互相讨论得出最终答案,或者让同一个模型在不同温度下思考多遍再汇总。这都属于集思广益的范畴。甚至有研究让模型自己产生多个答案并给出置信度,最终选择置信度最高的答案,也是利用了多解并举来提高可靠性。
集思广益型方法的 核心优势 在于: 通过集成多个推理结果,减少单次模型决策的不确定性 。它借鉴了集成学习的思想,充分挖掘模型在不同运行中的潜在多样性,以提升准确率。在实际应用中,如果计算允许,使用自洽性策略往往能显著提高答题可靠度,尤其是在 开放式问答、数学计算、代码生成等需要精确答案的场景下。很多团队在用 GPT-3/4 做比赛题、难题时,都会让它想多几遍再投票,这是因为经验上这么做答案更靠谱。
需要指出的是,自洽性依赖模型本身的能力——模型需要有一定概率能靠某条链得到正确答案。如果模型能力不足,多次采样可能都是错答案,那多数投票也救不了结果。因此,自洽性通常配合大型模型使用,在它们身上效果显著,而对小模型意义不大。此外,集思广益的方法主要解决的是结果可靠性问题,它并不会主动探索新的推理路线(不同链条靠随机抽样获得,但不保证覆盖所有思路)。相比之下,三思后行类的ToT会主动寻找新路径。二者可以看作互补关系:一个偏重横向增加思路数量,另一个偏重纵向深入探索不同路径。
综上,按部就班、三思后行、集思广益三类CoT方法各有侧重:
按部就班型让模型专注走好一步路,简单直接;
三思后行型赋予模型决策和搜索能力,大幅提升解题覆盖面;
集思广益型通过多次思考投票提高答案可靠性。
它们之间并不矛盾,有时还可组合使用。例如,思维树可以结合自洽性,对每个决策点采样评估,再搜索;或者用多个少样本CoT模型各自推理后集体表决。在实际选择时,需要根据任务特点权衡:如果任务允许探索多路径且求解难度极高,可考虑ToT/GOT;如果任务要求答案高度可靠,用自洽性投票;如果任务中等复杂且希望尽快得到较好结果,经典的按部就班CoT往往已经够用。下一节我们将讨论如何针对不同任务选择合适的CoT策略。
面向不同任务的 CoT 方法选择与应用¶
思维链方法并非“一招鲜吃遍天”,在不同类型的任务上,我们应选择和调整合适的CoT策略,以取得最佳效果。下面结合具体任务类型,分析如何应用思维链技术,并举例说明其操作方式。
数学推理任务¶
特点:数学推理通常有明确的正确答案和客观的解题步骤,可供模型循序渐进推导。错误往往来自计算失误或逻辑跳步。
推荐CoT策略:对于数学题(如算术运算、多步应用题、方程求解等),按部就班型的思维链几乎是必需的。基本的Zero-Shot CoT往往就能大幅提升正确率。如果题目复杂(比如奥数题、竞赛题),可以考虑少样本CoT提供示例,以指导模型使用正确的公式或套路。此外,自洽性可以进一步提高数学题的正确率——模型独立求解多次然后投票,能避免一次运算错误导致的失分。例如,一个典型应用是在财务计算、工程计算等重要场景下,让模型算五遍再取众数答案,以保证可靠。
应用举例:考虑这样一道题:“小明去商店买文具,铅笔2元一支,他买了5支;笔记本每本7元,他买了3本。如果小明给收银员50元,他应找回多少元?”
$ ^{} $直接提问(无CoT) $ ^{} $时,模型可能直接输出一个数字,容易出错。
使用Zero-Shot CoT:我们在提示中加上一句“请一步一步地给出计算过程和答案。”模型输出可能如下:
如果是更复杂的题,比如需要列方程或者多步骤推导,可考虑在提示前给一个示例:“例:某人买了…(此处给一道类似题以及解析过程)…”。通过Few-Shot CoT,让模型明白应该如何拆解问题。对于数学证明题或开放性的数学问题,也可以尝试ToT等方法,让模型探索多种证明途径。但多数常见数学问题,线性CoT已足够处理。综合而言,在数学领域“让模型展示详细步骤”几乎是必备的提示技巧,这也和人类教学中要求“写出解题过程”异曲同工。
常识问答与多跳推理¶
特点:常识问答题可能需要综合多条知识(multi-hop),有时问题本身隐含着需要推理的逻辑。任务难点在于提取并整合分散在不同知识点的信息。
推荐CoT策略:按部就班型CoT依然是首选,让模型将问题分解为几个子问答或者推理步骤。例如先让模型想到相关的知识点,再一步步推导答案。如果问题需要从多个已知事实推出结论,也可以在CoT过程中鼓励模型列出这些事实再进行演绎。对于一些很复杂的常识推理(比如需要脑补场景、多步因果链),可以考虑自洽性来提高稳健性,因为模型有时第一次想不全所有细节,多想几次可能有某次覆盖到了关键点。另一种思路是将三思后行用于常识问答:例如Tree of Thought框架下,让模型对潜在线索进行搜索和验证,找出符合的问题路径。不过一般来说,常识问答单个问题不算超复杂,因此较少需要用ToT,直接一条思维链到底就能显著提升准确率。
应用举例:问题:“有一种鸟不会飞但却有极强的游泳能力,这种鸟生活在南极,它叫什么?”这是个典型多跳常识问答,需要知道“不会飞但善游泳”“南极”这些提示指向企鹅。
不用CoT时,模型可能凭直觉输出“企鹅”也可能搞混输出“鸵鸟”之类。
使用CoT提示:“请逐步推理并给出答案”,模型输出:“首先,题干说有鸟不会飞但游泳很强。这符合企鹅的特征,因为企鹅是鸟类不会飞但游泳能力很强。其次,题干强调生活在南极,企鹅正是生活在南极的不会飞的鸟。因此答案应该是企鹅。”答案:企鹅。可以看到,模型列出了两个关键常识点:“不会飞但游泳强 -> 企鹅”,“南极的这种鸟 -> 企鹅”,最后综合确认答案。这样的过程让回答更可靠。
若问题更复杂,比如包含多个事实链,我们可以让模型以bullet点形式列出已知信息,再逐条推理因果。
在开放领域的问答中,Chain-of-Thought还有助于纠正模型的幻觉。因为模型如果一步步验证,就不容易直接编造。如果在某步发现无相关知识,可以终止或提醒不确定。因此,对于需要严谨常识推理的场景(如医学问答中的因果分析,科普问答等),使用CoT能提高答案可信度。选择上,一般零样本CoT的“一步步分析”提示就够用;遇到模型始终答不对的复杂问答,再考虑更高级的方法。
法律推理与复杂逻辑判断¶
特点:法律推理和复杂伦理/逻辑判断题通常有一系列前提条件和规则,需要模型将案例事实与规则逐一比对,最终作出判断。这类任务非常需要结构化的论证过程,否则答案难以令人信服。
推荐CoT策略:这类任务几乎离不开思维链。最佳实践是采用少样本CoT提供论证范式。例如,可以在提示中先给一个案例和详细的法律分析作为示例,再让模型类比地分析当前案例。若没有示例,则至少使用零样本CoT提示模型列举要点。可以让模型按IRAC法(Issue问题、Rule法条、Application应用、Conclusion结论)结构输出。具体实现上,可以对模型说:“请按照‘事实->法律->分析->结论’的思路逐步论证”。模型就会先写事实认定,接着引用相关法律条文,然后分析是否符合构成要件,最后得出结论。这正是法律推理需要的步骤。因此按部就班型CoT非常适合法律/逻辑任务。对于模型在某些边缘案例可能模棱两可的情况,可以结合自洽性多次求解,看大多数情况下模型倾向于哪个结论,从而减少偶然性的影响。
应用举例:问题:“甲看到邻居家失火,情急之下擅自撞门进屋救火,造成邻居家门锁损坏。这种情况下甲的行为是否需要承担赔偿责任?”
使用CoT提示,模型可能输出:“事实:甲见邻居失火,为避免更大损失,撞门救火,损坏了门锁。法律:根据紧急避险相关法律,在紧急情况下为保护公共利益或者他人利益而造成的损害,可以不承担责任。分析:本案中,甲为了扑灭火灾(保护他人财产和公共安全)而损坏门锁,属于紧急避险行为。法律规定紧急避险不负赔偿责任。因此,甲的行为符合紧急避险的条件。结论:甲不需要赔偿邻居家门锁的损失。”这样的回答涵盖了法律推理的完整链条。如果没有CoT,模型可能只是简单回答“不用赔”或者“要赔”而不给出理由,缺乏说服力。
复杂逻辑判断(如带有多个前提和结论的逻辑谜题)也类似,可让模型逐条列出前提,然后一步步推出结论,最后得出答案。思维链保证了逻辑的严谨和透明,非常契合这些任务的需求。
其他任务与综合应用¶
思维链方法在其他许多任务中也有应用价值。例如:
代码调试与复杂计算:让模型先列出解题步骤或伪代码,再正式生成代码,可提高代码正确性。这相当于一种CoT,引导模型先“想清楚”再行动。
规划与决策:在需要决策的任务(如游戏策略、路线规划)中,可采用ToT这种树搜索形式的CoT方法,模型尝试不同策略路径,评估后选择最佳路线。
创造性写作:对于需要满足多个约束的写作任务,也可以用思维链让模型先列出要满足的条件,再逐步形成故事情节,确保不遗漏要求。
总之,根据任务特点挑选合适的CoT方法,是充分发挥链式思维优势的关键。经验上:
任务复杂但有明确评价标准(如解谜、优化问题):可以考虑三思后行类方法,让模型搜索解空间。
任务注重结果正确性(如算题、问答):集思广益类的自洽性可作为增强措施。
大多数典型任务:直接采用逐步推理提示(按部就班型)往往即可见效,是简单有效的首选方案。
实践中,不妨从最简单的Zero-Shot CoT尝试起,然后再决定是否需要更复杂的方案。在许多公开评测中,一个恰当的CoT提示往往能让模型成绩突飞猛进,足见其威力。
思维链如何提升复杂推理任务表现¶
从原理上分析,为什么思维链能够提升大型语言模型在复杂推理任务中的表现?这要从LLM的推理机制和局限谈起。
首先,语言模型本质上是下一个词的预测器。在没有CoT时,模型面对复杂问题,往往尝试直接生成最终答案。这其实要求模型在内部一蹴而就完成所有推理,再输出答案。这对模型来说难度很大,容易在中间环节出错但无法显示式校正。而引入CoT提示后,我们等于改变了模型的输出格式——模型需要把中间推理步骤也当作输出内容的一部分。这有几点好处:
减轻了单次生成的认知负荷:模型可以将困难的问题拆解,逐步生成。这类似人类做长算术时要列草稿计算,比一脑子心算到底可靠得多。通过逐步输出,模型每一步只需关注局部逻辑,避免了一步到位带来的长程依赖问题。这让模型在推理时犯错的概率大大降低。例如,直接让模型计算“1234×5678”可能难以一次正确,但让它分步骤聚会稳妥很多。
提供了错误检查的机会:当模型输出思维链时,人类或后续流程可以看到每一步。如果某步明显错误,我们可以截断或引导模型纠正。这种互动在模型直接给答案时是无法实现的。此外,有些高级CoT方法(如ToT)内置了评估,模型自己也能检查前面分支是否有前提矛盾。总之,显式的推理链提供了审视和纠偏的接口,使最终答案可靠性提高。
利用了模型的训练分布:值得注意的是,大型语言模型在训练语料中实际上看过许多“思考过程”的文本,例如数学习题解答、解释性说明、编程注释等。因此,当我们要求模型产出推理过程时,它可以调动这些分布特征来更好地回答问题。这也是为什么简单一句“让我们一步步推理”能触发巨大性能提升——因为模型联想到了训练中类似表述常伴随详细解释,于是进入“解释模式”。可以说,CoT提示激发了模型已有的推理知识,而不仅仅是辅助结构。很多研究者把这种性能飞跃称为“涌现能力” $ ^{**} $的一例,即当模型参数足够大时,链式推理能力会突然出现并被提示语解锁。
增强了结果的可解释性和用户信任:虽然这不直接提高准确率,但对于复杂任务来说,输出推理步骤让用户更容易理解模型的答案来源。在实际应用中,如果模型能说“因为A所以B,因为B所以C,因此答案是D”,用户会更愿意相信其结论。这反过来也促使模型倾向于产生合乎逻辑的结论而非随意应对。因此CoT在一定程度上引导模型更严谨,避免胡乱猜测,因为每一步都得“摊开”给人看。
具体实验证据也佐证了CoT对性能的提升:在算术、推理等基准上,加了思维链prompt的模型准确率远超不加时。例如,原本GPT-3在多步算术(MultiArith)只有不到20%正确率,加上“一步步思考”提示后跃升至80%左右。类似地,在更难的GSM8K数学集上,PaLM 540B模型用few-shot CoT达到了惊人的75%准确率,而不用CoT时惨不忍睹。这些量化结果显示,CoT极大地拓展了模型能够解决的问题范围,一些先前被认为模型无力胜任的任务,通过CoT突然变得可解。
CoT对复杂推理的作用可以类比为:在黑箱模型前加了一层“白板演算”。模型不再憋在脑中算完,而是边算边写出来,这自然降低了出错率。另外,CoT还有助于分配计算资源:模型在不同步骤可以“花”不同的算力预测下个词。例如简单任务不需要多步骤,自然很快给出答案;难题则会生成很长的推理,这实际上让模型对难题投入了更多计算步骤,效果上类似动态调整计算量。
当然,思维链也并非万能,它有一些已知局限:
依赖模型规模:小模型往往无法产生有意义的思维链,甚至步骤全是瞎编。CoT在100亿参数以下模型上效果很有限,必须较大型(数百亿参数以上)模型才会表现出连续的逻辑推理能力。这意味着CoT是与大模型“相辅相成”的——大模型提供潜在推理能力,CoT将其引出。
可能出现虚假但看似合理的推理:模型生成的思维链不保证与其真实内部计算一致,可能只是编造一个看似合理的解释。有时模型的最终答案对了,但中间步骤错了;或者步骤看起来都有道理,但最后答案其实错了。这样“表面自洽、实际谬误”的情况是需要注意的。因此,虽然思维链增加了透明度,我们也不能盲目信任每一步,需要在关键任务上进行验证。
提高了响应时间和长度:输出详尽推理必然比直接答案更长、更慢。这在交互要求实时的场景下可能不利。另外,在有限上下文窗口中,长推理链会占用更多token,可能减少可用于输入资料的空间。
尽管如此,总的来说,思维链对复杂推理任务的正面作用是巨大的。通过引入显式的中间推理,CoT突破了模型“一步问答”能力的天花板,让模型在推理深度和准确性上都上了新台阶。这也是为什么自2022年以来,Chain-of-Thought Prompting成为大型模型领域最受关注的技术之一,并催生出众多改进变体的原因所在。
指令微调模型何以无需显式 CoT 提示?¶
有趣的是,随着ChatGPT、GPT-4等指令微调模型(Instruction-tuned LLM)的出现,研究者发现这些模型在某些任务上不需要显式的思维链提示,也能表现出类似CoT的多步推理能力。这是为什么呢?我们从训练和行为两个角度来分析。
首先,指令微调模型指的是经过人类指令强化训练的LLM,例如GPT-3.5/GPT-4系列,Claude,以及其他通过监督微调和人类反馈强化的对话模型。这些模型在训练过程中看过大量命令及解析,对“如何遵循人类指示”进行了专门优化。其中不少训练数据本身就包含了解释性回答和思维过程。例如,OpenAI在训练InstructGPT时,可能提供了示范:当用户问复杂问题时,理想回答应当分步骤解释。久而久之,模型学到了一个隐含策略:“当遇到复杂问题,自动给出逐步推理”。因此,我们观察到ChatGPT等模型经常自发地输出分步骤的答案,即便用户并未要求它“一步步想”。模型似乎已经将这种推理模式内化为完成任务的一种手段。
一个直接证据来自 Chen 等人在2023年的研究:【“ChatGPT 何时还需要思维链提示?”】。他们比较了 GPT-3和ChatGPT 在有无CoT提示时的表现。结果显示:GPT-3必须有显式提示才能做好算术推理,否则正确率很低;而ChatGPT 即使没有提示,很多算术题也能自行先算后答,加入提示反而没有明显提升。这说明 ChatGPT 已经“记住”了思维链提示,即使用户不说,它在某些熟悉的问题上也会自动沿用类似策略。这背后的原因很可能是 ChatGPT 在指令微调时见过类似的任务和提示,比如训练集中有“算术题解析过程”,导致模型在看到算术题时即便没有CoT指令,也倾向于自己列步骤计算。换言之,指令微调让模型将CoT行为内嵌。
另一个因素是,指令微调模型被优化得更符合人类预期。人类预期一个复杂问题的答案往往应该包含解释,所以模型习惯提供多句详尽回答。于是,它自然就倾向产出某种程度的推理过程作为答案的一部分,而不只是简单一句。这种倾向在功能上和CoT提示达到了类似效果。因此,像GPT-4这样强大的模型,即使不明说“请详细推理”,它也可能主动给出分步骤的回答。这可以看成模型本身已经具备了“自发CoT”的能力。
然而,需要指出的是,指令微调模型并非在所有情况下都不需要显式CoT提示。研究发现,ChatGPT等在某些类型的推理上(例如更复杂的常识题)加入“让我们一步步思考”仍然有额外的提升,说明隐式的CoT没有完全取代显式提示。另外,有时这些模型会因为遵循简洁礼貌的准则,给出简短答案而跳过详细推理。这种情况下,显式提示依然有用,可强制模型展现推理过程。
那么,为什么指令微调模型有时不需要CoT提示还能做好?总结如下:
训练涵盖:指令微调阶段模型可能已学习了在某些任务上自动执行多步推理。
内在激活:强大的模型在解决问题时,本身就会进行某种内部链式推理,并能直接利用结果;微调强化了这种能力的外显。
回答风格:微调模型倾向于详尽、有条理地回答,这和CoT要求不谋而合,自然产生类似效果。
在实践中,这意味着对于GPT-4这样高级的模型,我们有时无需特别提示,它也会给出解释过程。但为了保险和让模型更稳定地进入推理状态,添加显式的CoT提示仍是常用手段,尤其针对非常复杂或模型没见过的问题。经验表明,尽管顶尖模型内置了很强的推理能力,但在某些棘手场景下,明确要求其先推理再答仍可提高成功率。所以,我们可以根据模型和任务决定是否需要显式CoT:对于像GPT-4、Claude这样的模型,简单问题可以直接问即可,复杂问题最好加句“请详细说明推理过程”;对于普通未微调的大模型,显式CoT几乎总是需要的。
值得一提的是,指令微调模型隐式CoT现象也提醒我们:未来模型可能将越来越不依赖人为提示就能自行展开推理。这当然是一件好事,表示模型智能水平的提升。不过在当前阶段,掌握并运用CoT提示仍是我们控制模型输出、提高准确率的重要方法。
不同模型在 CoT 上的表现对比¶
随着思维链技术的普及,不同的大型语言模型在CoT方面的能力和表现也出现了一些差异。这里我们对几种具有代表性的模型(如GPT-4、Anthropic的Claude、Google的Gemini等)进行比较,看看它们在链式推理上的水平如何,以及各自的特点。
OpenAI GPT-4:作为目前广泛认可的顶尖通用模型,GPT-4在各类推理任务上都表现出色。GPT-4拥有极强的链式推理能力,在很多场景下即使不特别提示也能多步思考。据公开评测,GPT-4在数学推理基准 GSM8K 上可达到约92%的高准确率(使用链式思维提示并结合少量示例时),几乎与人类专家相当。它在常识推理、逻辑谜题、法律问答等方面也取得了极高的分数。GPT-4对CoT提示的响应非常好:给出“逐步推理”的指示后,往往能列出详尽且正确的推理过程。与前代模型相比,GPT-4在长链推理中的一致性和正确率都有显著提高,很少出现前后矛盾的情况。如果说GPT-3需要CoT才能勉强完成多步任务,那么GPT-4则几乎把CoT问题变成了拿手好戏。值得注意的是,GPT-4因为参数巨大且训练良好,即使不加显式CoT提示,也常在内部执行了推理。但在非常复杂的问题上,明示CoT依然对GPT-4有助益,比如让它解一道奥数题时说“请给出详细步骤”,可以确保它输出完整的证明而不仅是结果。总体而言,GPT-4在CoT能力上处于业界领先:它能胜任长达数十步的推理链,正确率高,稳定性强,是当前复杂推理任务的首选模型。
Anthropic Claude:Claude是Anthropic推出的系列模型,以安全性和详尽性见长。Claude在链式推理上的表现也非常优秀,接近GPT-4的水平。在数学和逻辑任务上,Claude-v2据报道在GSM8K上的准确率达到88%左右,仅略低于GPT-4。而在某些常识推理或生成任务上,Claude有时甚至能够给出比GPT-4更长、更详细的解释(这与Anthropic采用“宪法AI”训练,鼓励模型提供详细且有依据的回答有关)。Claude非常善于遵循指令,所以当我们提示它进行思维链推理时,它往往有条理地逐步论证。例如在法律分析问题上,Claude可能会产出长篇的多步推理,比GPT-4更啰嗦一些,但也相当准确。不过在极为复杂的数学推理上,Claude可能稍逊GPT-4一筹,容易在某步计算上出错。总体上,Claude的CoT能力强劲,特别是在解释性回答和多轮推理方面表现可靠。而且Claude对上下文的使用
(Anthropic的模型可以有非常长的上下文窗口)也使它能处理链条较长的推理。可以说,Claude是目前除GPT-4外链式推理表现最好的模型之一,对于那些需要详细解释的应用,Claude给出的思维链往往条理清晰、近乎类人。
Google Gemini:Gemini是谷歌DeepMind在2023-2024年研发的新一代多模态大模型家族,目标直指GPT-4。据公开消息和有限测试,Gemini的高配版本在很多基准上已经超越GPT-4。例如,在数学基准GSM8K上,某版本的Gemini(代号Ultra)取得了约94.4%的准确率,略高于GPT-4的92%。这意味着Gemini在链式数学推理上可能表现出更强的能力。此外,谷歌官方在2025年初宣称的“Gemini 2.5是具有思考能力的模型”也表明,他们在模型中融入了CoT推理机制。Gemini据称能够在回答前自主地进行内部多步推理,从而提高准确率和可靠性。换句话说,Gemini系列模型可能已内置某种“思维链”模块,使得即便用户不提示,模型也会在内部展开推理。这和前面讨论的指令微调模型有类似之处,但Gemini可能将其作为模型架构或推理过程的一部分。这一点还有待更多公开资料证实。就目前的对比来看,Gemini顶级版本在逻辑推理、数学解题等方面应该不亚于GPT-4,甚至有所超越;在常识问答、编程等任务上据传也达到同类顶尖水平。如果这些都属实,那么Gemini的CoT推理能力无疑也是顶尖的。同时,Gemini强调多模态,这意味未来可能在视觉+语言推理方面也应用思维链,让模型解释图像或视频内容时逐步推理。不过现阶段,以文本任务为例,Gemini作为新秀,尚需通过更多公开评测来全面比较。但可以预见,在CoT技术上,Gemini不会落后于GPT-4,而且谷歌还可能结合自家工具(如搜索等)丰富Gemini的推理手段。
开源模型与其他:除了以上大厂模型,近来也有一些开源的大模型具备一定的CoT能力。例如Meta的LLaMA系列在经过精调后(如LLaMA-2-chat),在中等复杂任务上也能配合思维链提示进行多步推理。但总体而言,开源模型(尤其参数规模在70B以下者)仍明显弱于GPT-4/Claude之类。在一些评测中,开源模型即使用CoT,其推理正确率也只能勉强及格或略胜随机。而超大规模的专有模型则能借助CoT达到90%以上正确率。这反映出模型规模和训练数据对于CoT能力影响巨大。此外,一些垂直领域模型(如医疗版ChatGPT、法律版模型Harvey等)因为专业微调,也能在特定领域展现强大的链式推理。不过这些模型往往没有通用模型那么全面的能力。
综合比较,可以这样总结: 在CoT方面,最强的依然是那些拥有万亿级参数并经过精细指令调教的顶级模型(GPT-4、Claude 2、Gemini等)。它们不仅能很好地执行思维链提示,甚至在很多情况下无需提示也会自己推理,表现出类人的解题过程。第二梯队如PaLM2、LLaMA2等大模型,在引导下也能进行多步推理,但准确率稍低、稳定性稍差,遇到很复杂的问题往往链子拉长了却没拉对。至于更小模型,可能基本不具备可靠的CoT能力。
值得一提的是,不同模型在 输出风格 上也有差别。例如GPT-4往往推理简洁凝练且准确,Claude则习惯详细阐述每一点,Gemini据称在保持准确的同时也会有清晰的组织。这些差异使得在某些应用中,选择合适的模型很重要。如果任务需要极高精度,GPT-4/Gemini这种性能王无疑最佳;如果需要长篇详解,Claude可能更适合。不过这些模型都是闭源的,需要通过API或平台使用。在开源界,一些团队也在训练接近这些能力的模型,也许不久的将来我们会看到开源模型在CoT任务上逼近商业模型的表现。
总之,目前在链式思维技术上,不同大模型间有高下之分,但都朝着一个方向提升:更强的推理深度,更准确的多步推理,更不依赖人为提示的内生推理能力。这也是大模型竞争的焦点之一。下一节,我们将通过一些代码示例,直观展示思维链的应用效果。
思维链应用实例:代码示例¶
为了更具体地感受思维链的用法和效果,本节通过几个简单的代码示例来演示如何在实际中调用大模型的CoT能力。我们将以Python伪代码的形式,使用一个假想的LLM接口(类似OpenAI的API),来解决一道典型任务,比较有无CoT提示时模型输出的区别,并展示如自洽性等策略的实现。
示例1:零样本 CoT 与直接答案对比¶
假设我们有这样一道题:“我有10个苹果,送给邻居2个,又送给修理工2个。然后我又买了5个苹果,自己吃掉1个。我最后还剩多少苹果?”这是一个涉及加减的简单算术问题,但步骤较多。我们用模型直接求解一次,再用CoT提示求解一次,观察结果。
代码块
假设我们有一个函数 llm_answer(prompt) 可以调用模型并返回结果字符串¶
2 3 question = "我有10个苹果,送给邻居2个,又送给修理工2个。然后我又买了5个苹果,自己吃掉1个。我最后还剩多少苹果?"
假如模型是一个未经过CoT提示的基础版本,可能输出如下:¶
代码块
1 直接回答:11 2 CoT回答: 3 首先有苹果10个,送出2个还剩8个,再送出2个还剩6个。 4 后来又买了5个苹果,加起来有6+5 = 11个。 5 最后自己吃掉1个,还剩11-1 = 10个。 6 因此我最后还剩下10个苹果。
可以看到,不使用CoT时模型直接给出了一个答案“11”,这是错误的(正确答案应该是10)。而使用CoT提示后,模型清晰地列出了每一步计算:10-2-2=6,6+5=11,11-1=10,最后得到答案10。显然,第二种方式既给出了正确答案,也展示了推理过程。这证明了思维链提示如何引导模型校正了原本容易出错的计算。
示例2:自洽性提升可靠性¶
接下来展示如何通过自洽性(Self-Consistency)策略,提高答案的可靠度。还是以上述苹果问题为例,我们让模型多次生成回答然后投票:
代码块
1 import collections 2 3 # 让模型思维链推理多次 4 answers = []
for i in range(5): ans = llm_answer(prompt_cot) # 使用和上面相同的CoT提示 # 提取最后的数字答案(假定答案中最后出现的数字为结果) final_number = int(''.join(filter(str.isdigit, ans.split()[ -1]))) answers.append(final_number)
统计各答案出现次数¶
freq = collections.Counter(answers) print("5次推理得到的答案:", answers) print("投票结果:", freq.most_common(1)[0][0])
假设模型在5次推理中,有4次算对了得到10,还有1次可能哪里算错得到11。输出可能是:
代码块 1 5次推理得到的答案:[10,10,11,10,10] 2 投票结果:10
可以看到,通过多次独立的链式推理,大多数结果是10,仅有少数杂音11。最终投票得出了正确的10。这说明,自洽性策略有效地消除了模型偶然错误的干扰,提高了答案的可靠性。如果我们只看单次模型输出,可能碰巧拿到那次错误的11,但通过集成5次,我们有很大把握得到正确结论。这在关键任务中非常实用。
示例3:树搜索(思维树)的伪代码¶
最后,我们以伪代码形式大致演示思维树(Tree of Thought)算法的流程。这将更偏算法思维一些。假设我们要用模型解决一个需要搜索的谜题,例如“在3步内将水壶A的水倒入水壶B使两壶水量相等”的问题(只是举例,具体过程略过)。ToT算法会:
代码块 def tree_of_thought_solve(initial_state): # 节点定义:每个节点包含当前状态和到达该状态的思维链 start_node = (initial_state, []) # 用队列或栈维护待探索节点(BFS或DFS搜索) frontier = [start_node] visited_states = set()
while frontier:
state, thought_chain = frontier.pop(0) # BFS: pop(0); DFS: pop()
# 判断是否达到目标状态
if is_goal(state):
print("找到解答路径:"
for step in thought_chain:
| 15 | print(step) |
| 16 | return get_answer_from_state(state) |
| 17 | |
| 18 | visited_states.add(state) |
| 19 | |
| 20 | # 利用模型扩展当前状态的下一步想法 |
上面函数中,我们反复让模型对当前局面输出可能的下一步想法 idea ,更新状态后进入队列。通过 is_promising 等启发,我们剪枝不良路线。最终找到目标就返回思维链。虽然这只是框架伪码,但反映了ToT的核心:模型与搜索算法结合,多路径探索。在真实实现中,我们需要精心设计 prompt,让模型输出结构化的想法列表,并对想法用判定函数评估优先级等。不过幸而许多ToT研究已经提供了参考实现,实践时可以调用他们的开源代码。
通过这些示例,可以发现无论是简单的逐步提示,还是复杂的搜索,思维链技术的使用都可以用程序化的方式实现。对于开发者来说,调用现成的大模型API并加上CoT提示,是最平易近人的做法;而像自洽性、多次采样这些,都可以很容易地在应用层实现(只需多调用几次模型即可)。更复杂的ToT/GoT也有开源项目可供集成。总的来说,思维链已经从论文走向实践,我们有工具将其应用在各种产品和系统中。
结语与未来展望¶
思维链(Chain of Thought)技术的出现,为大型语言模型破解复杂推理任务开辟了一条新路。从最初在GPT-3上实验出惊人的效果,到如今融入GPT-4、Claude、Gemini等顶级模型的“思维”机制,CoT已经成为大模型能力版图中不可或缺的一部分。通过让模型模仿人类的逐步推理,我们显著提升了模型在数学、逻辑、常识等领域的表现,也让模型的决策过程更加透明、可监控。
回顾发展,我们看到了几股清晰的趋势:一是提示工程层面的创新(如Zero-Shot CoT、自洽性等)大大降低了使用门槛,让无需重新训练模型也能获得更好效果;二是推理框架层面的探索(如思维树、思维图)将语言模型与经典搜索算法相结合,赋予模型更强的“规划和搜索”能力;三是模型自身的进化,最新模型已在训练中融入了对推理过程的学习,使它们越来越不需要显式指令就能自行展开思维链。这些进展相辅相成,共同造就了当代大模型令人瞩目的推理能力。
展望未来,思维链技术还有许多值得探索和改进之处:
更广泛的领域应用:目前CoT主要用于文本推理,但未来多模态模型可以把CoT拓展到视觉和决策领域。例如,让模型在分析一张复杂图片时,也分步骤描述它如何理解场景;在机器人控制中,用思维链列出规划步骤等。这将需要将语言推理与其他模态信息融合的新方法。
更高效的推理:链式思维有时会产生冗长的输出,未来模型可能会学会隐式思维链,即内部展开多步推理但对用户仅输出简洁结论,从而兼顾效率和可解释性。同时,研究者也在探索训练模型直接产生可靠结论的方法,例如通过大规模训练模型“内置”推理能力,或者用知识蒸馏将思维链的过程压缩到模型参数中。这些都可能减少对长链输出的依赖。
自动化提示与策略:尽管CoT提示很有效,但为不同任务设计最佳提示仍需要一些尝试。未来或许会有智能提示算法,能够根据任务自动决定是否使用CoT、多大程度的CoT,甚至自动调整提示词语。例
如,开发一个上层Agent,它先判断这是计算题,那就加上CoT提示;若是直观问题则直接回答。这种自适应提示能让模型既发挥推理能力又不过度啰嗦。
推理结果的验证:让模型会思考是一方面,如何确保它思考的每一步都是正确的又是另一方面。未来可能出现专门的推理检查模型或模块,与主模型配合使用。比如,一个模型生成思维链,另一个模型逐步审核,有错则反馈修改,直到推理链自洽无误。这样的多模型协作可以进一步提高最终答案的可靠性。在一些关键场景(医疗诊断、法律咨询),这种“双人检查”式的方法可能成为标配。
更好的用户交互:思维链输出对普通用户来说可能太长或者专业。未来应用可能会根据用户需求裁剪和呈现推理过程。例如,对于专业用户显示完整推理,对于普通用户只摘要关键步骤。这需要在生成和展示环节做更多工作,让CoT既服务模型推理又服务用户理解。
忌的米看,思维链技术有望与大模型的发展深度融合,成为其解决复杂任务的“思想中枢”。我们正在见证AI从“会答”走向“会想”的过程。或许再过若干年,随着模型规模和架构的演进,机器的推理能力将进一步接近乃至超越人类,在科学发现、复杂决策等领域发挥巨大作用。届时,今天所探讨的各种CoT技巧可能被更高级的AI思维所取代。但可以确定的是,让AI学会多步骤、可解释的思考这一追求将持续推动着人工智能向更高智能形态迈进。