思维链 (CoT), 思维树 (ToT), 思维图 (GoT) 等等……这些思维是什么?

在智能手机和智能家居的时代,想象一下一个不仅仅遵循指令,而且实际上像我们一样进行复杂逻辑处理的人工智能。听起来像科幻小说,不是吗?然而,如果你玩过 ChatGPT,你可能已经亲眼见证了这一惊人的能力。甚至 AI 推理领域的知名人物 Hector Levesque 也曾对 AI 传奇人物 Geoffrey Hinton 说过:“这么愚蠢的方法(指神经网络)怎么能处理推理?”
虽然这个故事凸显了人工智能的重大进步,但实际上这些进步的真正本质在于大型语言模型(LLMs)与推理的复杂交互。进入这种交互的起点是提示工程 —— 优化提供给 LLMs 的文本输入以引发期望输出的艺术和科学。在其核心,它涉及到了理解 ChatGPT、Bard、Claude、LLama 等语言模型如何对不同提示作出反应的复杂性,然后利用这些知识实现特定的结果。
把 LLMs 想象成一个巨大的知识库。你提出问题或陈述问题的方式(提示)决定了你如何利用这个知识库。就像人类可能会根据问题的提法给出不同的答案一样,LLMs 也可以根据输入给出不同的回答。
在本文中,你将获得各种优化 LLM 推理能力的提示工程框架的简明概述,包括:
- 思维链 (Chain-of-Thought)
- 思维链自一致性 (Chain-of-Thought-Self-Consistency)
- 思维树 (Tree-of-Thoughts)
- 思维图 (Graph-of-Thoughts)
- 思维算法 (Algorithm-of-Thoughts)
- 思维骨架 (Skeleton-of-Thought)
- 思维程序 (Program-of-Thoughts)
思维链 (CoT)
不直接输出答案,而是为语言模型提供中间推理示例来指导其回答。
思维链 (CoT) 提示被认为是一种开创性和最有影响力的提示工程技术之一,它增强了大型语言模型的决策过程。与强调直接的输入-输出交互的传统提示方法不同,CoT 强迫模型将其推理划分为中间步骤。这种方法类似于人类的认知过程,其中复杂的挑战被分解为更小、更可管理的组成部分。
举个例子,考虑一个数学问题:“Roger 拥有 5 个网球,然后购买了 2 罐网球,每罐含有 3 个网球。他现在有多少个网球?”一个人可能不会直接得出答案 11,而是会理智地解释:“起初,Roger 有 5 个网球。2 罐网球,每罐含有 3 个网球,总共是 6 个网球。将这些值相加,5 + 6,得到 11。”将这种逐步分析推理整合到输入提示中,不仅增加了模型回答的准确性,而且无需额外的训练数据集或对基本模型配置的修改。
思维链自一致性 (CoT-SC)
构建多个思维链,评估每个链,最终选择最有效和连贯的链。
思维链自一致性 (CoT-SC) 是思维链框架的一个后续进展。这种方法对查询做出多个并发推理路径,并在最终确定答案之前应用加权机制。这种方法类似于传统机器学习中观察到的集成技术,但应用于大型语言模型中的思维序列。
思维树(ToT)
以树形格式展开思维链条。这允许回溯,探索源于一个根本思想的多个推理分支。
思维树(ToT)通过将复杂问题分解为更易处理的部分,为LLM推理提供了一个更结构化的提示框架。与以链接链式推理的CoT不同,ToT以树形格式组织其解决问题的策略。每个节点被称为“思想”,是一系列连贯的语言序列,作为通向最终答案的一步。通过将问题划分为这些离散的“思想”单元——从填字游戏中的一系列单词到数学方程的一个组成部分——ToT确保系统地处理问题的每个阶段。

ToT的操作强度在于其有条不紊的组织方式。首先,系统将问题分解,并从当前状态生成潜在的推理步骤或“思想”候选列表。然后,评估这些思想,系统评估每个思想导致所需解决方案的可能性。标准的搜索算法,如广度优先搜索(BFS)和深度优先搜索(DFS),用于导航这棵树,帮助模型确定最有效的思想序列。
ToT的重要性源于其整体设计、适应性和效率。思维链式提示可以被视为ToT框架中的一个具体实例。其模块化特性表明,从问题的初始分解到使用的搜索算法,每个组件都可以独立运行。
思维图(GoT)
将树结构演化为有向无环图。这引入了自循环,可以巩固特定的思路或将多个思想聚合成一个连贯的思路。
思维图(GoT)框架是CoT和ToT方法的高级进展。GoT框架的核心是将思想概念化为有向无环图(DAG)中的顶点。在这个上下文中,每个顶点对应于由输入刺激引发的特定思想或解决方案,无论是初步的、中间的还是终端的。图中的有向边表示这些思想之间的相互依赖关系。具体而言,如果一条边从思想t1到t2延伸,表示t2是基于t1构思的。这种系统化允许多样化思考,因为节点可以被归类为不同的类别,如“计划”或“结果”。

GoT的创新在于其能够对这些思想应用转换,进一步完善推理过程。基本的转换包括聚合,允许将几个思想融合成一个统一的想法;细化,在一个单一的思想上进行持续迭代,改进其精确性;以及生成,促进从现有思想中产生新思想的构思。这些转换,强调推理路线的融合,相对于之前的模型如CoT或ToT,提供了一个更复杂的视角。
此外,GoT通过评分和排序引入了一个评估维度。每个个体思想,由一个顶点表示,根据其相关性和质量进行评估,由指定的评分函数实现。重要的是,该函数考虑到整个推理链,分配的分数可能与图中其他顶点相对化。该框架还使系统具备根据它们的得分对这些思想进行层次化的能力,这在确定哪些思想值得优先或实施时发挥了重要作用。
思维算法(AoT)
维护一个单一的不断演化的上下文链,消除了在思维树中冗余查询的需要。它探索了一条可变的推理路径。
虽然ToT和GoT通过基于搜索的机制解决了LLM推理挑战,产生了图形形式的众多推理路径。然而,它们对众多LLM查询的过度依赖,有时为一个特定问题的查询数量高达数百个,导致了计算效率低下。
思维算法(AoT)提供了一种创新的方法,具有动态和可变的推理路径。通过维护一个单一的不断演化的思维上下文链,AoT巩固了思维探索,提高了效率,减少了计算开销。

AoT的巧妙之处在于观察到,尽管LLM非常强大,但在面对新的但又熟悉的问题时,有时会回到先前的解决方案。为了克服这一问题,AoT吸收了上下文示例,借鉴了经过时间测试的搜索算法,如深度优先搜索(DFS)和广度优先搜索(BFS)。通过模拟算法行为,AoT强调了实现成功结果和从失败尝试中获取见解的重要性。
AoT的核心在于其四个主要组成部分:1)将复杂问题分解为可消化的子问题,考虑它们的相互关系以及它们可以单独解决的难易程度;2)为这些子问题提出连续而不间断的一致解决方案;3)直观地评估每个解决方案或子问题的可行性,而不依赖于显式的外部提示;4)根据上下文示例和算法指南确定要探索或回溯的最有前途的路径。
思维骨架(SoT)
在详细阐述之前,首先生成一个答案蓝图,缩短生成完整响应所需的时间。
思维骨架(SoT)范式的独特设计,主要不是为了增强大型语言模型(LLMs)的推理能力,而是为了解决最小化端到端生成延迟的关键挑战。该方法基于一个双阶段的方法,侧重于生成答案的初步蓝图,然后再进行全面扩展。

在初始的“骨架阶段”,模型并非生成全面的响应,而是被提示生成一个简洁的答案骨架。通过精心制作的骨架模板引发的这种简化表示,捕捉了潜在答案的核心要素,从而为后续阶段奠定了基础。
在随后的“点扩展阶段”,LLM系统地扩大了答案骨架中的每个组成部分。利用点扩展提示模板,模型同时详细说明了骨架的每个部分。这种二分法的方法将生成过程分为初步的骨架制定和并行的详细扩展,不仅加快了响应生成速度,而且努力保持输出的连贯性和精确性。
思维程序(PoT)
将问题回答的推理制定为可执行的程序,将程序解释器的输出作为最终答案的一部分。
思维程序(PoT)是一种独特的LLM推理方法,它不仅仅生成自然语言的答案,还要求创建一个可执行的程序,这意味着它可以在程序解释器(如Python)上运行以产生实际结果。这种方法与更直接的模型形成对比,强调将推理分解为顺序步骤并将语义含义与变量关联起来的能力。因此,PoT提供了一个更清晰、更表达和更具实际基础的答案推导模型,尤其适用于需要数值计算的数学型逻辑问题,提高了准确性和理解度。
需要注意的是,PoT的程序执行并不一定针对最终答案,而可以是最终答案的中间步骤之一。

在不断发展的人工智能领域中,像思维链这样的结构化推理框架已经极大地改变了我们对大型语言模型的认识和利用方式。它们象征着一种转变,不仅能够重复信息,还能进行复杂的推理,类似于人类的认知过程。展望未来,潜在的前景似乎是无限的。想象一下,一种能够生成准确答案、稳健可编程解决方案的人工智能,或者具有可视化思维过程的能力,使人工智能和人类的协作更加无缝。在探索本文中基础框架的基础上,这些进展预示着一种未来,其中大型语言模型成为问题解决、创造力和决策的必不可少的伴侣,催生了我们与技术的共生关系的范式转变。