思维链 Chain-of-Thought (COT) 变体篇
📝通俗解释:思维链(Chain-of-Thought,简称CoT)是一种让大型语言模型(LLM)像人类一样"一步步思考"的技术。想象一下你做数学题时,会先写解题步骤而不是直接写答案——CoT就是让AI也这样做,这样它能解决更复杂的问题。
一、思维链 Chain-of-Thought (COT):思维链的启蒙
📝通俗解释:CoT是整个思维链系列的"祖师爷",它让AI不再直接给出答案,而是展示思考过程。这就像老师教学生时,不仅给出答案,还要讲解解题思路。
论文名称:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
1. 什么是思维链 Chain-of-Thought (COT)?
📝通俗解释:思维链是一种提示技术,它引导LLM在给出最终答案之前,先展示中间的推理步骤。就像我们在解数学应用题时,会先列出"解题步骤"再写答案一样。
思维链(Chain-of-Thought)提示使大型语言模型能够处理复杂的算术、常识和符号推理任务。思维链强调了推理过程的重要性。
示例对比:
| 标准提示 (Standard Prompting) | 思维链提示 (Chain-of-Thought Prompting) |
|---|---|
| 问题:Roger有5个网球。他又买了2罐网球,每罐有3个。他现在有多少个网球? 答案:11 | 问题:Roger有5个网球。他又买了2罐网球,每罐有3个。他现在有多少个网球? 推理:Roger一开始有5个球。2罐×3个=6个。5+6=11。 答案:11 ✅ |
📝通俗解释:从表格可以看到,标准提示直接给答案,而思维链会先展示"5+6=11"这样的中间步骤,就像小学生做题时写解题过程一样。这样AI更容易算对复杂题目。
2. 思维链 Chain-of-Thought (COT) 的思路是什么?
📝通俗解释:CoT的思路是"展示思考过程",模仿人类解决问题时的逐步推理。它不是直接跳到答案,而是把大问题拆成小步骤,一步步来。
思维链类似于一个解决方案,它模仿了一个逐步思考的过程来得出答案(解决方案或解释通常在最终答案之前展示)。
不同任务类型的示例:
| 任务类型 | 示例 |
|---|---|
| 数学应用题 | 问题:Roger有5个网球。买了2罐,每罐3个。共几个? 推理:5 + 2×3 = 5 + 6 = 11 答案:11 |
| 常识推理 | 问题:Sammy想去人多的地方,他应该去哪? 选项:赛道、沙漠、公寓、路障 推理:人多的地方是人口密集区,其他选项人都少 答案:人口密集区 (b) |
| 日期计算 | 问题:音乐会原定06/01/1943,延迟一天。今天是?10天前是? 推理:延迟一天→今天是06/02/1943。10天前→05/23/1943 答案:05/23/1943 |
| 状态追踪 | 问题:硬币正面朝上。Maybelle翻了一次,Shalonda没翻。还是正面吗? 推理:翻动1次是奇数,正面变反面 答案:不是(反面) |
📝通俗解释:这些例子说明CoT可以处理各种类型的推理题——从数学计算到生活常识,从日期计算到逻辑推理。关键是展示"思考过程"而不是直接给答案。
3. 思维链 Chain-of-Thought (COT) 存在什么问题?
📝通俗解释:CoT虽好,但有个"缺点"——它需要"大模型"才能发挥效果。就像大学生才能做复杂数学题,小学生用思维链可能也做不对。
主要局限性:
- 需要大参数模型:思维链需要LLM的参数量级足够大才能发挥效果
- 效果依赖模型规模:论文使用效果最好的是PaLM 540B的模型,模型越大,思维链的能力越强
📝通俗解释:这就好像让一个小学生用"解题步骤"去解大学数学题,他可能还是不会。但一个高中生用这种方法解初中数学题,就会更准确。所以CoT需要"聪明"的模型配合才能发挥作用。
二、思维树 Tree of Thoughts (TOT):用树结构解决复杂问题
📝通俗解释:如果CoT是"一条路走到底",那ToT就是"多条路一起走,看看哪条能到终点"。它像一棵树一样分叉探索,最后选择最好的结果。
论文名称:Tree of Thoughts: Deliberate Problem Solving with Large Language Models
论文地址:https://arxiv.org/abs/2305.10601
论文Github:https://github.com/princeton-nlp/tree-of-thought-llm
1. 为什么需要思维树 Tree of Thoughts (TOT)?
📝通俗解释:有些复杂问题不像数学题那样有唯一答案,而是可能有多种解法。CoT只探索一条路,可能会错过更好的答案。ToT同时探索多条路,就像"条条大路通罗马"。
CoT的局限:
- CoT通常只有一条解决问题的路径
- 复杂问题的答案可能不止一条解决路径,而是由多条路径组成
2. 什么是思维树 Tree of Thoughts (TOT)?
📝通俗解释:ToT把一条推理路径拓展成多条推理路径,这样模型可以综合多条路径的结果得到最终结论。就像考试时检查多份试卷,选出最正确的答案。
思维树(Tree of Thoughts)把一条推理路径拓展至多条推理路径,这样模型可以综合多条推理路径的结果得到最终结论。
四种LLM问题解决方法的对比:
(a) IO Prompting: Input → Output(直接输入输出)
(b) CoT: Input → 步骤1 → 步骤2 → Output(线性步骤)
(c) CoT-SC: Input → 分叉多条路径 → 多数投票 → Output(多路径+投票)
(d) ToT: Input → 树状分支 → 评估选择 → Output(树状搜索)📝通俗解释:想象你要找一个出口。IO是直接猜一个门;CoT是沿着一条路走;CoT-SC是同时走多条路,看哪个方向的人最多;ToT则是画一张地图,分头探索,最后选一条最好的路走。
3. 思维树 Tree of Thoughts (TOT) 涉及的问题有哪些?
ToT框架包含四个核心问题:
| 问题 | 描述 | 实现方法 |
|---|---|---|
| 思维分解 (Thought Decomposition) | 如何将中间过程分解为思维步骤 | 将复杂问题拆成小问题 |
| 思维生成器 (Thought Generator) | 如何从每种状态产生潜在的思维 | 采样和投票 |
| 状态评估器 (State Evaluator) | 如何启发式地评估状态 | 分类/打分或投票 |
| 搜索算法 (Search Algorithms) | 如何选择下一步探索 | 可插拔的BFS/DFS等 |
📝通俗解释:这就像一个探险队。思维分解是把大目标拆成小目标;思维生成器是提出各种可能的方向;状态评估器是判断哪个方向最有希望;搜索算法是决定怎么走(比如 breadth-first广度优先 或 depth-first深度优先)。
ToT解决复杂任务实例
Example 1: Game of 24(24点游戏)
📝通俗解释:24点游戏是经典的数学游戏,给你4个数字,用加减乘除算出24。ToT会尝试各种组合,就像同时尝试多把钥匙开锁。
- 任务介绍:Game of 24游戏是数学推理游戏,目标是通过4个数,用加减乘除得到24
- 思路:输入"4 9 10 13",ToT会尝试多种计算路径,例如:
- 步骤1:10 - 4 = 6(剩余:4, 6, 9)
- 步骤2:13 - 9 = 4(剩余:4, 4, 6)
- 步骤3:4 × 6 = 24(剩余:24)✅
📝通俗解释:ToT会生成很多这样的中间步骤,然后用BFS(广度优先搜索)来执行,就像同时尝试多种解题方法,哪个能算出24就用哪个。
Example 2: Creative Writing(创意写作)
📝通俗解释:这个任务是给定4个句子作为结尾,写4段话分别以这4个句子结尾。ToT会先规划再写作,像先画草图再画成品。
- 任务介绍:给定四个句子,然后产生四个段落,分别以这四个句子结尾
- 思路:
- 首先产生k=5个候选计划,投票选择最佳方案
- 基于最佳计划,产生5个段落
- 选择最佳段落
📝通俗解释:就像写作文前先列提纲,ToT会生成多个提纲让大家投票选最好的,然后根据提纲写文章,最后再选出最好的文章。
Example 3: 5×5 迷你填字游戏
📝通俗解释:填字游戏需要同时考虑横向和纵向的单词。ToT能像人类一样思考,尝试填入单词,如果发现冲突就退回重试。
- 任务介绍:探索LM作为一般问题解决者的极限,用深思熟虑的推理来指导探索
- 思路:使用DFS(深度优先搜索)+状态评估与剪枝
📝通俗解释:就像玩填字游戏时,填一个词会影响交叉的词。ToT会评估当前状态,如果发现某个词会导致后面的词无法填写,就"剪枝"(放弃这个分支),回溯到上一步尝试其他可能。
三、思维图 Graph of Thoughts (GoT):用图结构建模思维过程
📝通俗解释:ToT是"树",GoT是"图"。树的分支是独立的,但图的节点可以互相连接。这让GoT能处理更复杂的情况——一个问题的解决可能需要同时参考多个之前的思考结果。
论文名称:Graph of Thoughts: Deliberate Problem Solving with Large Language Models
论文地址:https://arxiv.org/abs/2308.09687
论文Github:https://github.com/spcl/graph-of-thoughts
1. 为什么需要思维图 Graph of Thoughts (GoT)?
📝通俗解释:CoT只有一条路,ToT像树一样分叉但各分支独立。但实际问题中,一个结论可能需要综合多个思考路径——就像做决定时要综合考虑多方面因素。
前代方案的局限:
- CoT:通常只有一条解决问题的路径
- ToT:解决问题的路径类似一颗树,但树的父级节点通常只有一个
GoT的优势:解决问题时,父级节点可以有多个,形成类似拓扑图的结构
2. 什么是思维图 Graph of Thoughts (GoT)?
📝通俗解释:GoT通过构建一个有向图来解决问题。图中每个节点是一个"思考",节点之间的边表示思考的先后顺序和依赖关系。这样可以更灵活地组合和复用思考结果。
思维图(Graph of Thoughts)通过构建一个有向图来解决问题。
3. 思维图 Graph of Thoughts (GoT) 核心思想是什么?
📝通俗解释:GoT有一个"控制器"协调整个推理过程,还有多个模块各司其职:提示器准备问题,解析器提取答案,评分模块打分,推理状态图保存思考历史。
GoT系统结构包含一系列交互模块:
| 模块 | 功能 |
|---|---|
| Prompter(提示器) | 为LLM准备消息 |
| Parser(解析器) | 从LLM的回复中提取信息 |
| Scoring module(评分模块) | 验证LLM回复并评分 |
| Controller(控制器) | 协调整个推理过程,决定如何进行推理 |
两个重要元素:
- Graph of Operations (GoO):静态结构,指定任务的图分解,规定应用于LLM思想的转换及其顺序和依赖关系
- Graph Reasoning State (GRS):动态结构,保持正在进行的LLM推理过程的状态(思想及其状态的历史)
📝通俗解释:GoO像是"施工图纸",GRS像是"实时进度表"。GoO规定好每一步要做什么,GRS记录现在做到哪了、结果如何。
四、思维算法 Algorithm of Thoughts (AoT):用DFS/BFS示例解决问题
📝通俗解释:AoT比ToT更"聪明"的地方在于,它模仿算法搜索过程(像DFS深度优先搜索),给LLM展示"探索-回溯-再探索"的过程,让LLM学会自己寻找最优解。
论文名称:Algorithm of Thoughts: Enhancing Exploration of Ideas in Large Language Models
论文地址:https://arxiv.org/abs/2308.10379
论文Github:https://github.com/kyegomez/Algorithm-Of-Thoughts
1. 为什么需要思维算法 Algorithm of Thoughts (AoT)?
📝通俗解释:Standard Prompting直接给答案,CoT给出解决步骤但不会"试错"。AoT让LLM学会像算法一样搜索——此路不通就退回,换条路再试。
现有方法的局限:
- Standard Prompting:旨在直接回答
- CoT:给出最终解决方案的连续步骤,但没有探索过程
2. 思维算法 Algorithm of Thoughts (AoT) 的思路是什么?
📝通俗解释:AoT的上下文示例和CoT不同,它集成了搜索过程,用标记如"1"、"2"、"3"来指导子树探索。AoT产生预期的搜索步骤,并评估任何进展的潜在后续步骤,找到解决方案或返回另一个可行的子树。
AoT vs CoT 在24点游戏中的对比:
| 方法 | 推理过程 |
|---|---|
| Standard Prompting | 直接给出答案:$(4 + (8 - 6)) \times 4 = 24$ |
| Chain-of-Thought | $8-6=2$, $4+2=6$, $6\times4=24$,给出完整步骤 |
| Algorithm of Thoughts | 尝试$4-4$→失败,尝试$8-6$→可行→继续探索$4+2$→成功找到答案 |
📝通俗解释:想象你在迷宫里。CoT像是有一条完美地图,直接告诉你怎么走;AoT则是让你"尝试走,遇到死胡同就退回,换个方向继续试"。这样即使地图不完美,也能找到出口。
3. 思维算法 Algorithm of Thoughts (AoT) vs 其他CoT的区别?
📝通俗解释:AoT把解决问题看作"在有向图中找最优路径"的过程,比CoT的"一条道走到黑"更灵活,比ToT的"广撒网"更高效。
AoT vs CoT:
| 方面 | CoT | AoT |
|---|---|---|
| 结构 | 链式结构,答案只能由一条固定路径得到 | 有向图结构,寻找最优路径的过程 |
| 特点 | 线性推理 | 搜索+回溯 |
AoT vs ToT:
| 方面 | ToT | AoT |
|---|---|---|
| 结构 | 树结构 | 有向图结构 |
| 方法 | 对节点进行剪枝 | 利用示例方式模仿DFS或BFS |
| 特点 | 广度优先探索 | 深度优先搜索+回溯 |
📝通俗解释:ToT像同时派出多支探险队走不同方向;AoT则像一支探险队先专注走一条路,发现走不通就退回换条路。AoT更能激发LLM本身的推理能力(在GPT-4上效果很好)。
五、思维链 Chain-of-Thought (COT) 的应用场景
📝通俗解释:了解了这么多"思维链变体",它们具体能做什么?主要有两大应用方向。
应用场景一:复杂任务求解
📝通俗解释:复杂数学题、组合优化问题等需要多步推理的任务,思维链能显著提高正确率。
典型应用:
- 复杂数学问题求解
- 组合优化问题
- 逻辑推理任务
- 启发式算法探索
📝通俗解释:就像请了一个"数学家教",不仅能给出答案,还能展示思考过程。对于NP-hard问题,虽然不一定能找到最优解,但可以找到不错的启发式解。
应用场景二:增强特定任务可靠性
📝通俗解释:除了解决新问题,还能提升现有任务的准确率。比如问答系统原本80%准确率,加上思维链可能提升到90%。
典型应用:
- 检索+生成的问答系统
- 需要高精度输出的场景
- 稳定性要求高的任务
📝通俗解释:这就像给一个"粗心大意"的学生加上"检查步骤"。原本马虎做对的题目,现在能稳定做对;原本容易出错的场景,现在更可靠。
六、思维链 Chain-of-Thought (COT) 的局限性
📝通俗解释:思维链虽好,但也有局限。最大的问题就是——需要人工设计好的提示词,这很费时费力。
主要局限:
- 依赖人工设计:CoT、AoT、ToT都需要自己写instructions和in-context examples,这些都属于prompt工程范畴
- 成本高:人工寻找某些任务的最佳prompt比较费时费力
- 依赖模型能力:效果很大程度上取决于LLM本身的能力
未来方向:
- 自动化Prompt工程:自动生成和优化思维链提示,减少人工干预
- 更高效的推理方法:在保证效果的同时降低计算成本
📝通俗解释:现在的思维链像是"手把手教AI做题",但每道题都要教一遍很累。未来可能是"AI自己学会怎么教自己",这就是自动化prompt工程的目标。
七、总结对比
| 方法 | 结构 | 特点 | 适用场景 |
|---|---|---|---|
| CoT | 链式 | 展示推理步骤 | 简单推理任务 |
| ToT | 树状 | 多路径探索+投票 | 复杂问题求解 |
| GoT | 图状 | 多节点互联 | 需要综合多思维的复杂任务 |
| AoT | 有向图 | 搜索+回溯 | 需要算法思维的推理任务 |
📝通俗解释:简单理解——CoT是"一步一步想",ToT是"多条路一起想",GoT是"连起来想",AoT是"试错着想想"。各有各的优势,要根据问题类型选择合适的方法。
参考来源:AiGC面试宝典 原文链接:https://articles.zsxq.com/id_thdljw9vgxt1.html