Tree of Thoughts (ToT)
思维树(ToT)让 LLM 提出多个后续推理步骤,为这些步骤评分并搜索生成的树,同时从死路回溯。
思维树(ToT)是一种提示工程框架,大型语言模型(LLM)通过搜索部分解构成的树来解决问题。每一步中,模型都会提出多个可能的后续步骤(称为思维),评估由此产生的每种状态有多大希望,再由搜索算法决定扩展、保留或放弃哪些分支。与从第一个 token 起就沿单一路径推理的思维链提示不同,ToT 可以前瞻并回溯。普林斯顿大学和 Google DeepMind 的 Shunyu Yao 及其同事在《思维树:使用大型语言模型进行审慎的问题求解》中介绍了 ToT,该论文发表于 NeurIPS 2023。同月,Jieyi Long 提出了一种类似的树搜索系统,用 LLM 解数独。在 24 点游戏中,ToT 将 GPT-4的成功率从使用思维链提示时的 4% 提高到 74%。
思维树如何工作#
Yao 等人从四个设计选择来定义 ToT:
- 思维分解:确定一个步骤具体是什么。在 24 点游戏中,一个思维是一条方程;在创意文本生成中,一个思维是文章的写作计划;在填字游戏中,一个思维是要填入的一个单词。
- 思维生成器:确定如何生成候选项。模型可以独立采样多个思维,适用于开放式步骤;也可以在一个提示中一次提出一组不同选项,在选择受限时可避免重复。
- 状态评估器:确定如何判断进度。模型会单独评估每个状态,例如将其评为“确定可行”“可能可行”或“不可能达到目标”;也可以从多个状态中投票选出最佳状态。这些评分充当搜索启发式函数;在经典搜索中,这一职责由手写评分函数承担。
- 搜索算法:确定如何探索这棵树。广度优先搜索会在每一层保留最好的 b 个状态;深度优先搜索会沿着最有希望的分支前进,剪除评估器判定不成立的状态,并在需要时回溯。
示例:24 点游戏#
24 点游戏给出四个数字,要求每个数字恰好使用一次,并通过 +、-、x 和 / 将它们组合成 24。ToT 会把解题过程分成三个步骤,每一步都是一条将两个数字合并的方程。对于输入 4 9 10 13,提议提示会列出以下候选项:
13 - 9 = 4 (left: 4 4 10)
10 - 4 = 6 (left: 6 9 13)
4 + 9 = 13 (left: 10 13 13)
4 x 13 = 52 (left: 9 10 52)随后,价值提示会判断每组剩余数字是否仍能得到 24。“4 4 10”确定可行,因为 (10 - 4) x 4 = 24;“6 9 13”也确定可行,因为 (13 - 9) x 6 = 24。而“10 13 13”和“9 10 52”都不可能,所以搜索只扩展前两个分支。沿第一个分支继续,得到 10 - 4 = 6(剩下:4 6),然后得到 4 x 6 = 24。
在论文对 100 道难题进行的实验中,广度优先搜索每一步保留 5 个最佳状态,并对每个状态评估三次。使用 GPT-4 的 ToT 解出了 74% 的题目;相比之下,直接提示的成功率为 7.3%,思维链为 4.0%,加入自一致性的思维链为 9.0%。即使从 100 条采样思维链中挑选最佳一条,成功率也只有 49%;而每一步只保留一个状态的 ToT,成功率则为 45%。
思维树的适用场景#
当问题的早期选择会限制后续步骤,且第一步出错后难以修正时,ToT 很有帮助;这类问题包括谜题、规划和多步骤数学题。在 5x5 迷你填字游戏中,带剪枝的深度优先 ToT 能正确填写 60% 的单词,并解出 20 个游戏中的 4 个。代价是计算量:树的每一层都需要多次生成和评估调用,因此单个答案可能需要数十次甚至更多模型调用,消耗的token也比单条思维链多得多,并带来相应的推理延迟。
相同的生成、评估和扩展循环也会以更粗粒度出现在自动化实验搜索中,例如超参数调优。在 Ultralytics Platform AutoTrain 中,Ask AI 可以训练多个只在一个设置上有所不同的 Ultralytics YOLO模型,例如图像尺寸分别为 640、800 和 960;然后按照验证集 mAP50-95比较已完成的训练运行,并根据最佳结果提出下一项实验。
思维树与相关方法的对比#
- 思维链提示:单一路径的推理,相当于每一层只有一个分支的树。
- ReAct 提示:在外部环境中交替进行推理和行动,例如搜索或调用工具,并根据这些操作返回的内容继续推进。ToT 搜索的是模型自身提出的候选思维。
- 自一致性:采样多条完整思维链,并对最终答案进行多数表决,而不评估中间步骤。
- 思维图:将树结构推广为图结构,其中的思路也可以合并和改进;据报告,其排序质量比 ToT 高 62%,成本低 31% 以上。
- 蒙特卡洛树搜索(MCTS):这是 AlphaGo 背后的搜索算法,它在探索新分支和利用优质分支之间取得平衡,可以取代对思路进行的广度优先或深度优先搜索。
- 推理模型:通过强化学习训练,在一次生成中写出很长的推理轨迹;ToT 则由外部搜索程序围绕普通模型进行分支扩展和回溯。










