外观
思维链变体与推理范式演进
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
1. 思维链 Chain-of-Thought(CoT):思维链的启蒙
论文名称:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
1.1 什么是思维链 Chain-of-Thought(CoT)?
思维链(Chain-of-thought)提示使大型语言模型能够处理复杂的算术、常识和符号推理任务,强调了 Chain-of-thought 推理过程。
该模型产生了一个思想链来解决一个数学问题,否则它会变得不正确。
1.2 思维链 CoT 的思路是什么?
思维链 CoT 类似于一个解决方案,它模仿了一个逐步思考的过程来得出答案(或者 solutions/explanations 通常在 final answer 之后)。
1.3 思维链 CoT 存在什么问题?
思维链 CoT 需要 LLM 的参数量级必须足够大。
示例:论文使用效果最好的是 PaLM 540B 的模型,看来模型越大对思维链的能力就越强。
2. 思维树 Tree of Thoughts(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
2.1 为什么需要思维树 ToT?
CoT 通常只有一条解决问题的路径,但有一些复杂问题的答案并不止有一条解决问题的路径,而是由多条解决问题的路径组成。
2.2 什么是思维树 ToT?
思维树 ToT 把一条 reasoning 路径拓展至多条 reasoning paths,这样模型可以综合多条 reasoning path 的结果得到最终的结论。
定义:LLM 解决问题的各种方法中,每个矩形框代表一个 thought,它是一个连贯的语言序列,是解决问题的中间步骤。ToT 将任何问题定义为在树上的搜索,其中每个节点都是一个状态
s = [x; z1i],表示到目前为止具有输入和 thought 序列的部分解决方案。
2.3 思维树 ToT 涉及哪些问题?
| 序号 | 模块 | 问题描述 | 实现方法 |
|---|---|---|---|
| 1 | Thought Decomposition | 如何将中间过程分解为思维步骤 | - |
| 2 | Thought Generator | 如何从每种状态中产生潜在的 thought | 采用采样和投票的方法,从 k 个候选项中决定下一个 step |
| 3 | State Evaluator | 如何启发式地评估状态 | value 类型的分类或打分、投票的形式 |
| 4 | Search algorithms | 使用什么搜索算法 | 可拔插式地使用不同的搜索算法 |
2.4 思维树 ToT 解决复杂任务实例
Example 1:LLMs to Game of 24
- 任务介绍:Game of 24 是数学推理游戏,目标是通过4个数,然后加减乘除得到24
- 思路:输入是
"4 9 10 13",最终得到的答案是"(10 - 4) * (13 - 9) = 24",产生3个 intermediate thoughts:13 - 9 = 4 (left: 4 4 10)10 - 4 = 6 (left: 4 6)4 * 6 = 24 (left: 24)
ToT 会产生很多这样的 intermediate steps,然后采用 BFS 来执行这些 steps。
Example 2:LLMs to Create Writing
- 任务介绍:给定四个句子,然后产生4个 paragraph,分别以这4个句子结尾
- 思路:
- 首先产生 k=5 个候选的 plan,投票选择最佳的 passage
- 基于最佳的 plan,产生5个 passage
- 然后选择其中产生的最佳 passage(投票的过程是一个 zero-shot 的过程)
Example 3:LLMs to 5x5 迷你填字游戏
- 思路:探索 LM 作为一个探索自己思想的一般问题解决者的极限,并以深思熟虑的推理作为启发法来指导自己的探索。
3. 思维图 Graph of Thoughts(GoT):图结构建模思维链
论文名称:Graph of Thoughts: Solving Elaborate Problems with Large Language Models
3.1 为什么需要思维图 GoT?
有时候解决问题的父级节点不只有一个,而是类似拓扑图的形式。
3.2 什么是思维图 GoT?
思维图 GoT 通过构建了一个有向图来解决问题。
3.3 思维图 GoT 的核心思想是什么?
GoT 系统结构包含一系列的交互模块:
| 模块 | 职责 |
|---|---|
| Prompter | 为 LLM 准备消息 |
| Parser | 从 LLM 的回复中提取信息 |
| Scoring module | 验证 LLM 回复并对其进行评分 |
| Controller | 协调整个推理过程,并决定如何进行推理 |
| Graph of Operations(GoO) | 一种静态结构,指定给定任务的图分解,规定应用于 LM 思想的转换及其顺序和依赖关系 |
| Graph Reasoning State(GRS) | 一个动态结构,保持正在进行的 LM 推理过程的状态(其思想及其状态的历史) |
结构对比:
- CoT 通常只有一条解决问题的路径
- ToT 解决问题的路径类似一颗树
- GoT 解决问题的路径类似有向图(拓扑图)
4. 思维算法 Algorithm of Thoughts(AoT):DFS/BFS 示例解决问题
论文名称:Algorithm of Thoughts: Enhancing Exploration of Ideas in Large Language Models
4.1 为什么需要思维算法 AoT?
AoT 将搜索过程集成到上下文示例中,通过模仿 DFS 或 BFS 的方式激发 LLM 的能力,在搜索空间中寻找最优解。
4.2 思维算法 AoT 的思路是什么?
AoT 的上下文示例与 CoT 不同,它集成了搜索过程,由标记 "1"、…、"3" 作为指导问题集子树探索的"第一次运算"。AoT 产生预期的搜索步骤(例如子树探索 "5. 11+1"),并评估任何进展的潜在后续步骤找到一个解决方案或返回到另一个可行的子树。
4.3 思维算法 AoT vs 其他 CoT 的区别?
| 对比 | 结构 | 特点 |
|---|---|---|
| Standard Prompting | 直接回答 | 旨在直接给出答案 |
| CoT | 链式结构 | 给出了最终解决方案的连续步骤,问题答案只能由一条固定路径得到 |
| ToT | 树结构 | 对节点进行剪枝,推理过程是一个树的结构 |
| AoT | 有向图结构 | 利用示例的方式模仿 DFS 或 BFS,能够激发 LLM 的能力,在有向图结构中寻找最优路径 |
注:论文说 AoT 在 GPT-4 上有很好的效果,估计对 LLM 本身的能力要求比较高。
5. 思维链 CoT 的应用场景
Task 1:复杂任务求解
从论文给的一些数学和算法的求解示例可以看出,这些复杂的思维链 prompts 工程是为了增强模型在复杂推理任务的准确性。后续一个很大的应用方向是:
- 解决复杂的数学问题
- 组合优化问题
- 能否求解 NP-hard 问题,找到一些启发式算法(有待探索)
Task 2:增强特定任务可靠性
除了解决 LLM 在复杂任务上的性能问题外,还有一个方向就是提升已有任务的准确性:
示例:现在检索+生成的问答方式只能达到 80% 的准确率,通过应用思维链的方式+限制条件,一下子能够提升准确率到 90%。这对于一些追求 LLM 稳定性结果输出的场景具有重要的作用。
6. 思维链 CoT 的局限性
CoT、AoT、ToT 都需要自己写 instructions 和 in-context examples,这些都属于 prompt 工程的范畴。但是人工的寻找某些任务的最佳 prompts 比较费脑子,因此:
未来方向:自动化 prompts 工程会是一个潜在的方向,来弥补现在对复杂任务需要这种细粒度 prompt 工程的弊端。