Skip to content

Q12 · 什么是 Tree of Thoughts?它和 CoT 的区别是什么? ​

给你四个数 3、3、8、8,每个数用一次,只能做加、减、乘、除,怎样得到 24?如果一开始就把两个 8 相加,后面可能越算越别扭。人通常会停下来,看看还有没有别的第一步;单纯让模型“逐步思考”,却可能让它沿着刚选的步骤一直写到答案。

**Tree of Thoughts(ToT,思维树)**把这种“试几个下一步、判断哪条更有希望、走不通就换路”的过程组织成搜索。这里的“树”是多条解题路径组成的结构,不是模型内部天然长出来的一棵树。应用程序或明确的推理流程要规定怎样生成候选、怎样评价、保留哪些分支和何时停止。ToT 原论文正是按这几个设计问题介绍方法的。

先认清术语与符号 ​

词或记号直白解释24 点例子里的对应物
大语言模型(LLM)根据输入生成文本的模型提议下一步算式,或估计局面是否有希望
Chain of Thought(CoT,思维链)让模型写出从题目到答案的连续中间步骤从四个数开始,接着写第一、第二、第三步算式
Tree of Thoughts(ToT,思维树)把多个中间步骤当成可选择的分支,并对分支做评价与搜索的推理组织方法同时考虑 8+8 与 8÷3 等第一步
thought(思路单元)一次值得单独检查的中间动作;粒度由任务设计者规定8÷3=8/3 这一行算式
state(状态)走完当前路径后,题目进行到了哪里;至少要能继续生成下一步已用过哪两个数、剩余数和此前算式
候选从一个状态可以尝试的不同下一步8+8=16、8÷3=8/3
评价判断某个新状态是否合法、还有没有前景是否只用了剩余数;剩余数能否凑到 24
剪枝暂时或永久停止扩展一条分支,节约搜索量确认某条路无解后,不继续从那里生成算式
回退从走不通的路径返回先前的分叉处,改试其他候选回到四个数的起点,改试 8÷3
广度优先搜索(BFS)每一轮先看同样走了几步的候选,再挑一些进入下一轮先比较多种第一步,再比较被保留的第二步
深度优先搜索(DFS)先沿一条路往下试,失败后返回分叉处先试 8+8,失败后回到起点
自一致性(self-consistency)独立生成多条完整思维链,按最终答案投票得到多份完整算式后,统计哪个最终答案出现最多

“思路单元”和“状态”不能混用:一行新算式是动作;执行完这行后留下的局面才是状态。 状态还要保留路径记录。否则只看到剩余的 8/3,却不知道它由哪个 8 和哪个 3 算来,最后无法检查四个原数是否恰好各用一次。

用 3、3、8、8 真正走一遍 ​

本例采用通常的 24 点规则:每一步从当前剩余数中取两个,用一次加、减、乘或除,把结果放回去;允许分数、括号,不允许除以零。四个数各用一次,所以三步运算后应只剩一个数。下面的候选和分数只是教学示例,并非声称运行了论文中的模型。

第一步:确定思路的粒度和初始状态。 我们把“一次双数运算”定为一个 thought。起点状态记下原题、空的算式记录,以及剩余数 [3, 3, 8, 8]。每生成一行算式,就形成一个新状态。粒度如果粗到“一次给出整道题解”,中途无法比较分支;细到“每输出一个字符”,又很难判断这个字符是否有助于解题。原论文也强调要让一个 thought 既足够小、便于产生不同候选,又足够完整、便于评价。

第二步:生成候选。 在同一个起点,可以提出 8+8=16,形成剩余 [3, 3, 16];也可以提出 8÷3=8/3,形成剩余 [3, 8, 8/3]。这只是两条示意分支,实际系统可以生成更多。模型可以提出候选;对于 24 点这种规则明确的小问题,程序也可以枚举合法运算。无论谁生成,都不能把“模型写出一行算式”直接等同于“它算对了”。

第三步:评价新状态。 先做确定性检查:两个操作数是否来自当前剩余数、算式是否算对、有没有除以零。再估计“从剩余数继续算,达到 24 的可能性”。这种前景判断可以由模型给出“有希望/不确定/可能无解”,也可以由专门的规则或求解器完成;模型分数只是启发式估计,可能误判。本例里,[3, 3, 16] 可以通过穷举剩余两步确认为无解,于是剪掉这条分支。真实开放问题通常没有这么便宜的精确求解器,评价会更不可靠。

第四步:搜索并回退。 如果按 DFS 先走 8+8,发现它走不通,就回到起点改试 8÷3;回退的是搜索位置,已验证的题目条件没有被“撤销”。如果按 BFS,可以在第一轮保留几条有希望的状态,下一轮分别展开,再按评价保留少数候选。论文的 24 点实验使用 BFS,每轮保留最多 5 个状态;下面的回退图则专门用 DFS 的视角展示“换路”这件事。两种策略都属于 ToT 可选的搜索方式,并非同一次执行必须同时采用。

思维树在 24 点问题中分叉:一条路暂缓,回到起点后沿另一条路得到 24

第五步:继续好的分支并验算。 8÷3=8/3 后,剩余的是另一个 3、另一个 8 和 8/3。再算 3-8/3=1/3,剩余 [8, 1/3];最后 8÷(1/3)=24。组合成一式是:

text
8 ÷ (3 − 8 ÷ 3) = 24

这里外层的 8 与内层的 8 是原题中的两个不同的 8,两个 3 也各用一次。最终检查应重新解析整条算式,用精确分数运算核对数值与原数使用次数。搜索找到“看上去像答案”的文本,不等于验证成功。

四个环节怎样连成 ToT ​

上面的过程可以压缩成四个需要事先设计的问题,顺序不能省略:

  1. 思路怎样切步? 在 24 点里是一行算式;写文章时可以是一段大纲;填字游戏里可能是填一个词。切步决定树有多深、每步能否评价。
  2. 每步怎样生成多个候选? 可以让模型一次提出几条不同的下一步,也可以多次采样;有明确规则时还可以程序枚举。候选若重复或遗漏关键做法,后续搜索再聪明也找不到被遗漏的路。
  3. 怎样评价状态? 先排除违反硬规则的候选,再估计剩余局面的前景。模型自评可用,但会自信地犯错;能用程序验证的条件,应交给程序。
  4. 怎样搜索和停止? BFS 保留每层的若干候选,DFS 先深入再回退。还需设最大深度、每层保留数、总调用次数或耗时;找到可验证答案时提前结束。预算用完时应明确报告“未找到”,不能把当前最像答案的路径冒充正确答案。

因此 ToT 的关键不在于把提示词改成“请用树形思维”,而在于显式保存多个部分解,并用评价结果控制下一步要探索哪里。原论文把模型用于生成和评价,把 BFS/DFS 用于搜索;工程实现也可换用规则评价器或其他模型,但必须把这些步骤真正接起来。

和 CoT、自一致性按同一维度比较 ​

CoT 的原始思路是让模型通过中间步骤从题目走到答案;CoT 论文主要研究在提示中给出带推理步骤的示例。自一致性则在 CoT 上独立采样多条完整路径,再汇总最终答案,见自一致性论文。三者都会出现“多步思考”,但探索发生的位置不同。

比较维度单条 CoTCoT + 自一致性ToT
生成什么一条从题目走到答案的连续步骤多条彼此独立的完整步骤在同一个中间状态生成多个下一步
何时比较通常生成完才检查答案所有完整答案生成后投票每走一步就能评价部分解、选择分支
中途能否换路普通单条生成不显式保存其他分支各条链独立走完,通常不在链内回退搜索控制器可保留候选、剪枝、回退
输出怎样确定取该条链的结果并校验对可归一化的最终答案计数,并校验找到满足目标的路径后校验最终结果
主要额外成本一次较长的生成多次完整生成多轮候选生成、评价和搜索管理
更合适的情况路径较直接、低延迟优先同一题有多条独立解法,最终答案便于投票早期选择影响后续、需要探索与回退

自一致性虽然产生多条链,但每条链内部通常仍是从头走到尾;它没有因为第一个 8+8 局面不好,就把该链回退到第一步、接着试 8÷3。另一方面,ToT 不保证比 CoT 准:它可能漏掉好候选,也可能把好状态评成“无解”。把自一致性的“答案投票”直接用于文章创作这类开放输出,还会遇到不同答案难以归为同一类的问题。

什么时候值得付出搜索成本 ​

ToT 适合局部决策会显著影响后续结果、可以分成可检查的中间步骤、且有明确的成功条件或较可信评价标准的任务。例如 24 点和约束明确的填字。原论文在 100 道较难的 24 点题上,用当时的 GPT-4 设置报告 CoT 单次采样成功率 4%、ToT 在每层保留 5 个状态时为 74%。这是该论文特定题集、模型、提示和预算下的实验结果,不能外推为所有问题都能提升同样幅度。论文实验与设置

代价也具体:分支越多、层数越深,候选生成和评价就越多。论文的成本分析明确指出 ToT 通常比单条 CoT 需要更多计算;其写作实验中,ToT 约花了 5 倍输出 token 和费用。实际应用应先试简单 CoT 和程序校验,再看失败是否真来自“早期选错路”;必要时限制候选数、深度、总费用与时延,并在找到可验证结果后停止。论文成本分析

还有三条边界要守住。第一,搜索扩大的是尝试空间,不能创造缺失的事实:如果题目要求外部数据,就得先取得可靠数据。第二,评价器本身会错,过早剪枝可能永久丢掉正确路径;预算不够时,“没找到”也不代表“无解”。第三,今天某个模型即使被称为“推理模型”,也不能据此断言它在你的调用中实现了论文式 ToT。要确认是否有思路切分、候选保存、状态评价和搜索回退的可观察流程,不能从模型名称或一段长回答推断。

面试时可以这样说 ​

CoT 是让模型沿一条连续的中间步骤推到答案;ToT 则把一个可评价的中间步骤当作 thought,把题目和已走步骤组成 state,在同一状态下生成多个下一步,评价后用 BFS 或 DFS 搜索。以 3、3、8、8 的 24 点为例,8+8 和 8÷3 是不同分支;前者走不通可剪枝或回退,后者能继续得到 8÷(3-8÷3)=24,最后还要验算。自一致性也生成多条 CoT,但主要在完整答案层面投票,不在每个中间状态做分支搜索。ToT 适合需要试错和回退的问题,代价是更多调用与错误评价风险;使用推理模型本身不等于运行了 ToT。

如果追问“评价模型说某分支无解,就一定能剪掉吗”,应回答:不能。24 点可用精确程序检验的规则要程序检验;开放任务的模型评价只是启发式,最好保留少量备选、允许回退并设预算。若追问“为什么不直接多生成几条 CoT”,关键在于多条完整链只在终点比较;ToT 能在早期状态就比较和调整,把计算花在仍有希望的分支上,但这种调度只有评价足够可靠时才可能划算。

参考资料 ​

章节首页 · ← Q11

最后更新2026-09-26
难度P0
频率very-high
阅读22 min
主题tree-of-thoughts / chain-of-thought / self-consistency
觉得有帮助?把这个链接转给正在求职的朋友 · 用 Ctrl + K 全站搜索其它题