P
Prompt Master

Prompt 大师

掌握和 AI 对话的艺术

ToT

Tree of Thoughts:用搜索探索解空间

对于需要探索或预判战略的复杂任务来说,传统或简单的提示技巧是不够的。最近,Yao et el. (2023) 提出了思维树(Tree of Thoughts,ToT)框架,该框架基于思维链提示进行了总结,引导语言模型探索把思维作为中间步骤来解决通用问题。

ToT 维护着一棵思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使用这种方法,LM 能够自己对严谨推理过程的中间思维进行评估。LM 将生成及评估思维的能力与搜索算法(如广度优先搜索和深度优先搜索)相结合,在系统性探索思维的时候可以向前验证和回溯。

ToT 框架原理如下:

TOT

图片援引自:Yao et el. (2023)

ToT 需要针对不同的任务定义思维/步骤的数量以及每步的候选项数量。例如,论文中的“算 24 游戏”是一种数学推理任务,需要分成 3 个思维步骤,每一步都需要一个中间方程。而每个步骤保留最优的(best) 5 个候选项。

ToT 完成算 24 的游戏任务要执行广度优先搜索(BFS),每步思维的候选项都要求 LM 给出能否得到 24 的评估:“sure/maybe/impossible”(一定能/可能/不可能) 。作者讲到:“目的是得到经过少量向前尝试就可以验证正确(sure)的局部解,基于‘太大/太小’的常识消除那些不可能(impossible)的局部解,其余的局部解作为‘maybe’保留。”每步思维都要抽样得到 3 个评估结果。整个过程如下图所示:

TOT2

图片援引自:Yao et el. (2023)

从下图中报告的结果来看,ToT 的表现大大超过了其他提示方法:

TOT3

图片援引自:Yao et el. (2023)

这里还有这里可以找到代码例子。

从大方向上来看,Yao et el. (2023)Long (2023) 的核心思路是类似的。两种方法都是以多轮对话搜索树的形式来增强 LLM 解决复杂问题的能力。主要区别在于 Yao et el. (2023) 采用了深度优先(DFS)/广度优先(BFS)/集束(beam)搜索,而 Long (2023) 则提出由强化学习(Reinforcement Learning)训练出的 “ToT 控制器”(ToT Controller)来驱动树的搜索策略(包括什么时候回退和搜索到哪一级回退等等)。深度优先/广度优先/集束搜索是通用搜索策略,并不针对具体问题。相比之下,由强化学习训练出的 ToT 控制器有可能从新的数据集学习,或是在自对弈(AlphaGo vs. 蛮力搜索)的过程中学习。因此,即使采用的是冻结的 LLM,基于强化学习构建的 ToT 系统仍然可以不断进化,学习新的知识。

Hulbert (2023) 提出了思维树(ToT)提示法,将 ToT 框架的主要概念概括成了一段简短的提示词,指导 LLM 在一次提示中对中间思维做出评估。ToT 提示词的例子如下:

Imagine three different experts are answering this question.
Each expert writes down the first step of their thinking, then shares it.
Then each expert writes down the next step of their thinking and shares it.
Continue until all experts have completed all their steps.
If any expert makes a mistake, remove that expert from the discussion.
Question: ...

📚 相关资源

❓ 常见问题

关于本章主题最常被搜索的问题,点击展开答案

Tree of Thoughts 和 CoT 区别是什么?

CoT 是一条线性推理链,错了就错到底;ToT(Yao 等人 2023)维护一棵思维树,每个节点都是中间步骤,LM 自己评估每个分支的好坏,再用 BFS / DFS / beam search 探索,可以前进也可以回溯。复杂推理任务(如算 24 游戏)这种允许试错的场景,ToT 大幅优于 CoT。

ToT 的「算 24 游戏」具体怎么跑?

论文把任务拆成 3 个思维步骤,每步生成一个中间方程;每步保留最优 5 个候选,BFS 探索。每个候选要求 LM 评估能否得到 24,输出 sure / maybe / impossible。基于「太大/太小」的常识剪掉 impossible,sure 优先尝试,maybe 留作备选。整体比 CoT 准确率高很多。

ToT 什么时候比 CoT 强?什么时候不值得用?

需要探索多条路径、允许回溯的复杂推理任务(数学拼图、规划、写作大纲生成)选 ToT。简单算术、信息抽取、单步推理用 CoT 就够了——ToT 一次要展开 N 倍候选 × M 步评估,token 成本和延迟都是 CoT 的几倍到几十倍,跑大批量任务前先掂量。

Hulbert 提出的 ToT 提示法是什么?

Hulbert (2023) 把 ToT 框架压成一段 prompt:让模型扮演 3 个专家,每人写下推理第一步并分享,然后写下下一步……如果有人犯错就把他从讨论中移除。这相当于在一次提示里做轻量级 ToT,不需要专门的搜索代码,适合普通 ChatGPT 用户。

Yao 2023 和 Long 2023 两版 ToT 有什么不一样?

核心思路一样——多轮对话搜索树解决复杂问题。区别在搜索策略:Yao 2023 用通用的 DFS / BFS / beam search;Long 2023 提出由强化学习训练的「ToT 控制器」驱动搜索,决定什么时候回退、回退到哪一级。控制器可以从新数据或自对弈中学习,所以即使 LLM 冻结,ToT 系统仍能不断进化。