想象这样一个场景:你在森林里寻找一处藏在深处的宝藏。普通旅人只会挑一条看起来最顺眼的小路,一路闷头走下去——运气好能到,运气不好就掉进沼泽、撞上悬崖。但如果是一位老练的探险队长,他会怎么做?他会在每个岔路口停下来,先试探几条岔路各自的前景,用树叶的密度、泥土的湿度判断哪条路更有希望;选了一条走,发现前面是断崖,就果断折返,换另一条路再试。他手里还握着一张不断丰富的路线图——走过的每一条路、每一个死胡同都被记录、评估、取舍。 这就是思维树(Tree of Thought,简称ToT)的核心智慧。它不是让大模型一口气从头想到尾,而是引导模型像这位探险队长一样:先把复杂任务切成多个阶段,在每个阶段生成多个候选思路,让模型像侦察兵一样评估每条思路的价值,最后沿着得分最高的路径前进。走不通就回溯重来,目标明确就提前收网。
学会思维树提示技巧,你就掌握了一把撬动大模型复杂推理能力的杠杆。它能让AI在数学题、逻辑谜题、策略规划等场景下大幅提升准确率,是Prompt工程从入门走向进阶的关键一步。
目录
可视化演示
展示ToT将问题分解为树状思维分支、评估各分支得分并选择最优推理路径的过程,逐步查看三个阶段。
本节配有交互动效(进入视口后自动加载,约 3KB)。
问题分解为思维分支 根节点Q为原始问题 生成多个候选思维分支A1-A4 Branch = Decompose(Q) ToT将线性推理扩展为树状搜索
思维树概述 —— 从单行道的短视到岔路口的权衡
还记得前面那位森林探险队长吗?一个固执的旅人只会挑一条路走到底,而探险队长却会在每个岔路口停下来,摊开路线图,评估多条岔路的前景再继续。普通Prompt是前者,思维链CoT(Chain of Thought)也只是让旅人“走得更稳的单行道”,而思维树ToT则是那个真正的探险队长——它把一条路的思考升级为一片树林的规划。
思维树最早由普林斯顿大学与谷歌DeepMind的团队在2023年提出,核心思想非常朴素:既然大模型在复杂推理时经常“一条路走到黑”,那我们就主动让它在每个关键节点生成多个候选思路,自己评估这些思路的价值,再选择性地继续深入。这样,模型就有了“退路”和“备选方案”,不再害怕走错路。
从技术上讲,ToT将推理过程抽象为一棵搜索树:树的根节点是原始问题,叶子节点是最终答案,中间节点是部分解(中间思维)。每个节点存储一个“状态”——即到目前为止已经得出的结论。模型的推理任务,变成了在这棵树上寻找一条从根到叶的价值最高的路径。
1. Tree(p):从问题 $p$ 出发能展开的全部思维路径集合,等价于探险队长画出的整张路线示意图。
2. π(路径):一条从根节点走到叶子节点的连续思维链,代表一种完整的解题方案。
3. V(s):每个思维节点的评分,表示走到这一步的把握有多大,分数越高这条路越有希望。
4. argmax:在所有候选路径中挑出累计分数最高的一条,这就是最终采用的推理路线。
所以ToT的本质,不是让模型“多想想”,而是让它“多想几条路、比较后选一条”。这就像探险家不需要每条路都走完,但至少要在岔路口认真观望过、比较过。这种“生成—评估—搜索”的循环,才是思维树与普通Prompt最大的分野。
思维节点定义 —— 探险地图上的路标
探险队长在森林里做记号时,不会只写“走到哪了”,而是会记录“我是怎么走到这里的”——比如“先绕过巨石,再跨过溪流”。思维树中的思维节点(Thought)正是这样的路标:它不是孤立的结论,而是包含了原始问题与所有已采取步骤的完整状态。
一个思维节点 $s_t$ 本质上是一个状态表示:原始问题加上已经走过的中间步骤。比如在解数学应用题时,模型先设未知数、再列方程、再化简,每一步都是一个新节点。节点的粒度(granularity)非常关键:如果粒度太粗,比如“再想想下一步怎么做”,模型等于没有引导;如果粒度太细,比如“把 2+3 的每一位拆开分析”,又会造成大量无效计算。好的节点粒度应该像探险路线上的关键地标——既不会太稀疏让人迷路,也不会太密集让人疲惫。
1. s_t:第 $t$ 个思维节点,代表当前推理进行到哪一步,等价于地图上的第 $t$ 个路标。
2. p:原始问题,始终不变的问题起点,是路标的“锚点”。
3. a_i(中间步骤):前 $t-1$ 步已经采取的具体动作,记录路径历史。
4. 组合关系:完整状态 = 问题 + 全部历史。不同走法导致不同状态,这就是为什么同一个“位置”会存在多个不同节点。
理解了节点的定义,就能理解为什么ToT可以支持“回溯”:因为每个节点都保存了完整的历史,探险队长可以随时沿着路标退回上一个岔路口,选择另一条候选路重走,而不至于在茫茫森林里彻底迷路。
多分支生成 —— 岔路口伸出多条候选路
探险队长不会在岔路口只朝一个方向迈步,他会先向几个方向各探几步再决定。思维树也一样:在每个节点上,模型不能只生成一个“下一步”,而要主动生成多个候选分支。这些分支就像是岔路口伸向不同方向的若干条路。
生成分支的方式通常有两种:一种是“采样式生成”,让模型基于当前状态,用较高的温度(temperature)采样 $K$ 个不同的中间思维;另一种是“建议式生成”,直接让模型扮演提议者,一口气提出 $K$ 种可能的下一步方案。为了保持分支间的多样性,还可以在提示词中要求“给出思路差异较大的候选方案”,避免模型生成三个换汤不换药的相似版本。
1. LLM_θ:大语言模型本身,参数为 θ。它在这里扮演“候选思路生成器”的角色。
2. 条件概率:模型生成下一个思维的前提条件是当前状态 $s_t$——不同的路标位置,看到的岔路自然不同。
3. g(生成指令):提示词中明确要求“生成多个候选”的部分,例如“请给出3种不同的解法思路”。
4. K(分支数):每个节点生成的候选数量。通常 3-5 个为宜,太少缺乏选择空间,太多增加评估负担。
分支生成的本质,是给推理过程注入“自由度”。模型不再被逼着在每一步做唯一的选择,而是可以保留多个可能性。这就像探险家在不确定时不会急着锁定一条路,而是先让多条路线都保留在候选名单上,交给下一步的评估环节去裁决。
节点状态评估 —— 侦察兵的望远镜
有了多条候选路线,探险队长就需要一个“侦察兵”去判断每条路的前景。思维树里的评估器就是这位侦察兵:它负责对每个思维节点打分,告诉搜索算法“这条路值得继续走,那条路最好尽早放弃”。
评估的实现方式非常灵活。最直接的是“LLM评估”:把当前状态发给大模型,让它给出一个 0 到 1 之间的分数并附带理由;也可以是“投票评估”:让多个独立模型分别对状态进行二分类判断,再统计乐观比例作为得分;还可以是“规则评估”:用确定性的规则检查状态的性质,比如在24点游戏中检查中间结果是否是24的因子。选择哪种评估方式,取决于任务是否拥有可量化的中间反馈。
1. V(s):状态 $s$ 的最终价值分数,越高代表该节点的前景越好。
2. 每个评估者打分:第 $j$ 个评估者对状态 $s$ 给出一个信任或成功概率。
3. 平均汇总:所有评估者的分数取平均,消除单一评估者的随机噪声。
评估的好坏直接决定了搜索的方向。如果侦察兵看走了眼,把好路标成废路、把死路标成捷径,整个搜索就会南辕北辙。所以在实际使用中,评估器的设计往往比分支生成更关键——它决定了“眼光”的准确度。
搜索策略 —— 遍历探险地图的方法
探险队长拿到了路线图和各路的情报,接下来就要制定遍历策略:先走哪条路?走到多深?什么时候换路?思维树中最常用的两种策略是广度优先搜索(BFS)和深度优先搜索(DFS)。
BFS的思路是:逐层推进——先把第1层的所有候选分支都生成并评估一遍,保留得分较高的若干个,再进入第2层继续。这种策略适合深度较浅但分支规则明确的任务,比如24点游戏,每一步的候选有限,逐层铺开更稳妥。DFS的思路是:沿一条路径一直走到最深处,如果走不通就回溯到最近的岔路口换一条路。这种策略适合路径很深的推理任务,比如代码调试或数学证明,一条路深挖比漫山遍野乱逛更高效。
1. frontier(前沿集合):所有已生成但尚未继续扩展的节点,类似于探险队笔记本上“待勘察路线”的清单。
2. V(s):节点的评估分数,来自上一节的评估环节,是选路的首要依据。
3. α · depth(s):深度惩罚项。α 为正数时奖励深挖,为负数时鼓励先铺开。用来平衡“深度”与“广度”。
在实际的ToT实现中,BFS通常会设置一个“束宽”(beam width),每一层只保留分数最高的若干个节点继续扩展,这本身就是一种剪枝。DFS则更依赖回溯机制:当某条路径走到头或评估分过低时,回到最近的合法父节点换一个分支。剪枝和回溯并不是独立的技术,而是融入搜索策略中的天然组件——就像探险家既会规划路线,也会果断放弃死路。
终止条件 —— 何时收网
探险队长不会在森林里无限期地逛下去,他需要明确的收网标准。思维树的搜索同样需要终止条件:什么时候停止生成分支,宣布找到了答案?
最理想的终止条件是“目标达成”——存在某个叶子节点,其状态明确满足了问题的要求。比如24点游戏凑出了24,或数学题求出了最终解。但在很多开放任务中,“目标达成”本身不好判定,这时就需要备用条件。第二个常用条件是“深度上限”:预先设定最大步数,到达 $D_{\max}$ 就停止,选当前分数最高的路径作为答案。这样至少保证推理不会无限循环。第三个条件是“资源约束”:调用LLM的次数或token预算用完了就停止,这是工程实践中非常现实的约束。
1. τ(阈值):一个可接受的分数门槛。当某个节点的评分达到这个数值,就认为找到了满意的答案。
2. D_max(深度上限):允许展开的最大推理步数,防止搜索无限延伸。
3. 逻辑或(or):两个条件任一满足即触发停止。这是“尽早收网”原则的数学表达。
终止条件的设计体现了ToT的实用主义:既要足够灵敏以抓住正确解,又要足够保守以避免无限的资源消耗。这就像探险家的“黄昏原则”——太阳落山前无论如何都要回到营地,不论是否找到宝藏。
Prompt编写 —— 给探险家写攻略手册
前面讲了那么多理论,实际操作时,这些机制都需要通过一段精心设计的Prompt来激活。思维树的Prompt不是一段简单的指令,而是一份完整的“探险攻略”,通常包含四个模块:角色设定、步骤分解、分支生成指令和评估指令。
首先是角色设定:让模型扮演一个“善于分解问题的探险队长”,为后续的结构化思考定下基调。其次是步骤分解:明确要求模型把问题拆解为多个子阶段,每阶段只解决一个子问题。然后是分支生成指令:要求每一步给出多个候选方案,并强调方案之间要有足够的差异性。最后是评估指令:要求模型对每个候选方案打分,说明理由,再选择得分最高的继续。这四个模块可以组成一个可复用的Prompt模板。
1. 角色设定:把模型锚定成具有结构化思维习惯的角色,激活其规划能力。
2. 步骤分解:要求模型显式地列出子问题清单,而不是一口气给出最终答案。
3. 分支指令:明确规定每个节点生成多少个候选方案,并强调多样性。
4. 评估指令:要求对每个候选打分并附理由,然后依据分数做选择。
一个实际的ToT Prompt模板可以长这样:
这样一段Prompt,就把“探索多条路径、评估、择优、回溯”的完整流程内化到了模型的推理过程中。探险队长不再只是“想想”,而是有了明确的行动手册。
你是一位善于拆解复杂问题的资深探险队长。任务:{用户的问题}请遵循以下流程:1. 先把问题拆解为 3 个关键子步骤。2. 对当前子步骤,给出 3 个不同的候选解法。3. 对每个候选解法打分(0-1),评估可行性与风险。4. 选择最高分候选继续,若发现该路不可行,返回第 2 步换一个候选。5. 抵达最终答案后,简述你走过的路径。
实例应用 —— 丛林实战手册
理论说得再多,不如看一场实战。思维树最强的领域,是那些拥有明确搜索空间、可以分步验证中间结果的复杂任务。我们来看三个最典型的应用场景。
数学推理是最经典的应用场景。比如解一道多项式方程,模型每一步的化简结果都可以被验证是否等价。用ToT时,模型在每个化简步骤生成多个不同的变形思路,评估哪个方向离标准形更近,从而避免在错误的代数方向上越走越远。逻辑谜题同样适合ToT,比如经典的“狼羊菜过河”问题:每一步都有多种可行的运送方案,模型需要评估每种方案是否会让某个角色被吃,从而剪掉非法分支。策略规划任务,比如让AI在一个网格世界上规划一条从起点到终点的安全路线,每一步移动都涉及障碍和陷阱,ToT的多分支探索能力可以显著降低“碰壁”概率。
1. π*(最优路径):搜索完成后得到的累计价值最高的那条思维路径。
2. decode(解码):把路径上的节点序列转化为人类可读的形式,输出最终回答。
3. a_n(答案叶子):路径终点的叶子节点,承载着最终的解题结论。
可以说,凡是“中间步骤可以被评估、错误可以被发现、多条路可以比较”的任务,ToT都能派上用场。而如果一个任务没有可评估的中间状态、每一步也不存在明显分支,那么ToT的优势就无法发挥——这时候老老实实用CoT反而更高效。
AI 应用场景
智能教育辅导中的数学解题助手
阶段:推理增强 · Prompt设计 · 结果优化
解决的问题:传统AI解题助手在解答多步数学应用题时,经常在中间一步算错后就一路错到底,无法自我纠错。ToT通过多分支生成+评估,让模型在每一步保留多个可能的解题方向,并在计算错误时能及时回溯,大幅提升解题准确率。
具体案例:某在线教育平台接入ToT后,学生对AI数学辅导的满意度显著提升。当学生问“鸡兔同笼”类问题时,AI会先列出设未知数、列方程、化简等步骤,并在“设未知数”一步给出“设鸡为x只”“设兔为y只”“设总腿数为变量”三个候选方向,评估后择优继续。即便某条路解到一半发现矛盾,AI也会退回上一步重新选择,最终给出正确且步骤清晰的解答。
逻辑推理解谜游戏的NPC决策系统
阶段:推理增强 · 决策规划 · 状态评估
解决的问题:让游戏中的AI角色(NPC)在解谜任务中表现得像真人玩家一样会“试错”——而不是机械地执行预设脚本。ToT让NPC在迷宫中遇到岔路时,枚举多条路线并评估安全性与收益,选择最优路径,走不通能返回,极大提升游戏体验。
具体案例:在一款密室逃脱解谜游戏中,NPC需要找到开门的密码。传统实现只给NPC一条固定套路,玩家很快就能摸清规律。改用ToT后,NPC会同时评估“查看书架”“检查画像背后”“掀开地毯”三条线索分支,若“掀开地毯”发现是死路(无线索),NPC会自动回溯到书架继续搜索,给玩家带来更真实的解谜互动。
自动化代码Bug诊断与修复
阶段:推理增强 · 代码分析 · 多方案推荐
解决的问题:代码审查工具在定位复杂Bug时,往往只能给出单一猜测,缺乏对多种可能根因的权衡。ToT让AI诊断工具生成多个候选根因分支,评估每个分支与错误日志、代码片段的吻合度,最终输出最可能的修复方向。
具体案例:某DevOps平台的AI助手在收到一段内存泄漏的报错日志后,使用ToT风格Prompt,先拆解出“排查全局变量”“检查循环引用”“审查定时器未清理”三个分支,再结合代码扫描结果对各分支打分,最终锁定“定时器未清理”为高概率根因,并给出修复补丁。相比之前的单一路径诊断,误报率明显下降。
Python 演示
# -*- coding: utf-8 -*-"""迷你思维树ToT演示:24点游戏 + 分支生成 + 评估 + 束搜索""" class ThoughtNode: """思维树节点:记录数字状态、表达式与父节点""" def __init__(self, numbers, expr, parent=None): self.numbers = numbers self.expr = expr self.parent = parent self.score = 0.0 def trace(self): """从根到当前节点的完整表达式链路""" chain = [] node = self while node: chain.append(node.expr) node = node.parent return " -> ".join(reversed(chain)) def evaluate(numbers, target=24): """启发式评分:数字离目标越近分数越高""" if len(numbers) == 1: return 1.0 / (1.0 + abs(numbers[0] - target)) best = 0.0 n = len(numbers) for i in range(n): for j in range(i + 1, n): a, b = numbers[i], numbers[j] candidates = [a + b, abs(a - b), a * b] if abs(b) > 1e-9: candidates.append(a / b) if abs(a) > 1e-9: candidates.append(b / a) for v in candidates: best = max(best, 1.0 / (1.0 + abs(v - target))) return best def gen_thoughts(node, target): """分支生成:任选两个数字做四则运算,生成所有子思维""" children = [] n = len(node.numbers) for i in range(n): for j in range(i + 1, n): a, b = node.numbers[i], node.numbers[j] rest = [node.numbers[k] for k in range(n) if k != i and k != j] ops = [(a + b, "(%d+%d)" % (a, b)), (a - b, "(%d-%d)" % (a, b)), (a * b, "(%d*%d)" % (a, b))] if abs(b) > 1e-9: ops.append((a / b, "(%d/%d)" % (a, b))) for val, expr in ops: child = ThoughtNode(sorted(rest + [val]), expr, node) child.score = evaluate(child.numbers, target) children.append(child) return children def tree_search(numbers, target=24, max_depth=5, beam=4): """ToT主流程:生成分支 -> 评估 -> 束搜索保留Top-k -> 剪枝""" root = ThoughtNode(numbers, str(numbers)) root.score = evaluate(numbers, target) frontier = [root] for _depth in range(max_depth): next_frontier = [] for node in frontier: if len(node.numbers) == 1 and abs(node.numbers[0] - target) < 1e-9: return node.trace() next_frontier.extend(gen_thoughts(node, target)) # 评估剪枝:按分数保留前 beam 个节点 next_frontier.sort(key=lambda n: n.score, reverse=True) frontier = next_frontier[:beam] if frontier: return frontier[0].trace() return "未找到解法" if __name__ == "__main__": start_numbers = [1, 2, 3, 4] solution = tree_search(start_numbers, max_depth=5, beam=4) print("题目:", start_numbers) print("ToT搜索到的解法链路:", solution)
class ThoughtNode:思维树节点,相当于探险地图上的一个路标,记录到达该状态时的数字列表和表达式。def trace(self):从当前节点沿父指针回溯到根,拼出完整表达式链,还原整条思考路径。def evaluate(numbers, target=24):启发式评估器,扮演“侦察兵”角色:距离目标越近的中间状态分数越高。candidates = [a+b, abs(a-b), a*b]对每一对数字列举可能的四则运算结果,生成候选子思维。child.score = evaluate(child.numbers, target)每个新生成的分支节点立即被打分,为后续剪枝做准备。next_frontier.sort(key=lambda n: n.score, reverse=True)评估择优:对所有候选节点按分数从高到低排序。frontier = next_frontier[:beam]束搜索剪枝:只保留分数最高的 beam 个节点,其余分支被丢弃。for _depth in range(max_depth):设置了深度上限,防止搜索无限延伸,对应ToT的终止条件。return node.trace()找到目标状态后,沿链路回溯输出完整解法,如同探险家整理路线报告。
常见误区
误区“我只要把提示词写得很长,要求模型多想几步,把'让我们一步步思考'换成'请用思维树思考',这不就是ToT了吗?”
正解CoT与ToT的本质差异不是长度,而是结构。CoT是一条单链,模型沿着唯一的思路走下去;ToT则在每一步生成多个候选分支,通过评估和搜索择优,还支持回溯。就像森林探险:CoT是选一条路一直走,ToT是在岔路口画出多条候选路线,试错、剪枝、折返后再前进。要让模型真正变成“树”,提示语中必须显式要求它给出多个备选方案并评估打分,而不只是“多想几步”。
为何常见:因为两者都表现为“多思考几步”的提示词形态,使用者容易把提示词长度误当结构深度,忽略了树形分叉这一核心区别。
误区“既然ToT的核心是探索多个分支,那把分支数设为100,穷举所有可能的思路,答案肯定更准吧?”
正解分支无限膨胀会让评估开销爆炸式增长,就像森林里同时出现1000条岔道,探险家反而不知道该看哪条。更重要的是,过多的低质量候选会稀释评估器的注意力,让高分节点被淹没在噪音中。实践中的合理做法是每层保留 3-5 个高质量分支,配合剪枝阈值。好的ToT不是“路多必胜”,而是“路少质优”:用较低成本排除废路,把计算资源集中在有希望的分支上。
为何常见:人们默认“采样越多越好”,却忽略了评估和搜索本身也有成本,多路探索会带来指数级的中转开销,最终拖垮整个推理过程。
误区“思维树的评估环节必须是让大语言模型给每个节点打分,否则就不是标准的ToT。”
正解评估器是一个可替换的模块,多样化的评估方式完全可行。可以调用LLM打分,可以用确定性规则(例如24点游戏里检查中间结果是否靠近24),也可以用外部工具或人类反馈。就像探险家可以用向导判断路况,也可以自己踩一踩地面硬度、看一看坡度。关键是“评估”环节存在且可靠,而不是评估的具体实现。选哪种方式取决于任务是否具备可量化的中间信号。
为何常见:因为ToT论文和多数教程示例都使用LLM评估,读者容易把示例当规范,误以为“只有LLM打分才算评估”。
误区“ToT效果这么强,那我所有Prompt都用ToT模板,不管什么任务,准确率肯定都能提升。”
正解ToT擅长数学推理、逻辑谜题、策略规划等有明确搜索空间和可评估中间状态的任务。但对于“写摘要”“翻译一句话”“关键词提取”这类生成式或简单任务,直接Prompt或CoT更经济高效。ToT每次分支都要多次调用LLM,推理成本和延迟显著上升;硬套ToT不仅浪费,还可能因为过度结构化而损害生成流畅度。就像去家门口小卖部买牛奶,不需要画一张全城探险地图。选择方法要看任务复杂度,而不是一律堆上重武器。
为何常见:因为示例中ToT在复杂任务上表现亮眼,人们容易产生“方法越复杂越厉害”的慕强心理,忽略性价比与任务匹配度。
误区“思维树必须把DFS和剪枝绑定,先深度优先搜到底,再不断剪枝,不然探索不充分。”
正解剪枝是一种通用的优化策略,在BFS、DFS、贪心等不同搜索框架里都可以使用。ToT的核心是“生成-评估-搜索”循环,具体采用BFS还是DFS取决于问题结构:BFS适合深度较浅、分支规则清晰的任务;DFS适合需要深挖的长链推理。剪枝只是控制搜索规模的手段,它像探险家的背包减重法则,在任何路线选择中都能发挥作用,并不专属某一种遍历方式。
为何常见:因为许多ToT教程把DFS和剪枝组合在一起讲解,读者容易将特定实现误认为唯一范式,忽视了搜索策略与剪枝的解耦关系。
面试题
Q1. 思维树ToT与思维链CoT最核心的区别是什么?
- A.ToT一次性生成的token数量更多
- B.ToT将推理拆成树状分支并评估择优← 正确答案
- C.ToT需要用参数更大的模型
- D.ToT完全不需要使用Prompt
答案:B。ToT的本质是在每个推理节点生成多个候选分支,通过评估和搜索选出最优路径,而CoT是沿一条单链推理。A不是本质区别,C和D与事实不符。就像探险队长在岔路口比较多条路线再决定,而普通旅人只选一条路走到底。
Q2. 一个完整的ToT流程通常包含哪些关键组件?
- A.思维分支生成器← 正确答案
- B.节点状态评估器← 正确答案
- C.树搜索与剪枝算法← 正确答案
- D.模型微调与参数更新
答案:ABC。ToT三要素是生成器(多分支候选)、评估器(对状态打分)和搜索算法(BFS/DFS/剪枝)。模型微调不属于Prompt层面的ToT,它属于训练阶段的工作,因此D是错的。
Q3. 在思维树中,“思维节点”(Thought)指的是什么?
- A.一个完整的最终答案
- B.一个中间步骤或部分解状态← 正确答案
- C.一个模型超参数数值
- D.一个训练损失函数的取值
答案:B。思维节点是对中间推理状态的抽象,包含问题信息与已采取的步骤,相当于一张探险地图上的关键路标。A只在叶子节点成立,C和D与节点概念完全无关。
Q4. 以下哪些方式可以用来评估思维树中的节点状态?
- A.让大模型对状态打分← 正确答案
- B.使用确定性规则校验中间结果← 正确答案
- C.多个评估者投票取平均分← 正确答案
- D.对模型权重做反向传播
答案:ABC。评估器可以是LLM打分、规则校验或投票平均,这些都是ToT中合法的评估手段。反向传播属于模型训练范畴,与推理阶段的ToT评估无关。
Q5. 广度优先搜索(BFS)在思维树中是如何工作的?
- A.沿一条路径直奔最深的叶子节点
- B.先扩展同一深度的全部候选节点再进入下一层← 正确答案
- C.每次从待探索集合中随机挑一个节点
- D.只保留分数最高的一个节点继续搜索
答案:B。BFS按层级推进,先把当前层的所有候选分支都生成并评估完,再选优进入下一层。A是DFS的特征,C是随机搜索,D属于贪心策略,它们都不符合BFS的定义。
Q6. 在思维树中,“剪枝”动作的典型触发条件是什么?
- A.节点评估分数低于预设阈值← 正确答案
- B.节点生成速度太慢
- C.模型输出的语言不是英文
- D.节点的深度还太浅
答案:A。剪枝的本质是放弃低价值分支。当某个节点的评分低于阈值,意味着这条路前景渺茫,应当丢弃以节省资源。B、C、D都不是合理的剪枝依据。
Q7. 关于ToT搜索的终止条件,以下哪些说法是正确的?
- A.找到满足目标状态的叶子节点即可停止← 正确答案
- B.到达预设的最大深度时必须停止← 正确答案
- C.调用模型的token预算耗尽可以停止← 正确答案
- D.必须遍历所有叶子节点才能结束
答案:ABC。目标达成、深度上限和资源约束都是合法的终止条件。D是错误的,遍历全部叶子节点是穷举搜索,违背了ToT剪枝提效的初衷。
Q8. 以下哪种任务最适合使用ToT技巧?
- A.简单常识问答
- B.数学应用题与逻辑谜题← 正确答案
- C.一段文本的关键词提取
- D.情感分类判断
答案:B。ToT适合有明确搜索空间、中间步骤可评估的复杂推理任务。数学应用题和逻辑谜题正是典型场景。简单任务用直接Prompt或CoT更经济,因此A、C、D不是最佳选择。
Q9. 当ToT探索的分支数过大导致资源爆炸时,最合理的处理手段是什么?
- A.继续增大分支数以穷举所有可能
- B.提高剪枝阈值,更早放弃低分分支← 正确答案
- C.删除评估环节直接随机选择分支
- D.把每个节点拆成更多更小的子节点
答案:B。分支爆炸时应当提高剪枝阈值,让评估器更严格地过滤低质量候选,从而控制搜索规模。A会加剧资源消耗,C会失去评估带来的质量保障,D会让搜索深度翻倍而非收敛。
Q10. 关于ToT与CoT的关系,以下表述正确的是?
- A.ToT在搜索空间上比CoT更宽更灵活← 正确答案
- B.CoT可以看作分支数为1的ToT特例← 正确答案
- C.ToT一定比CoT运行得更快且更省token
- D.剪枝和回溯可以显著提升ToT的搜索效率← 正确答案
答案:ABD。ToT在每步生成多个分支,搜索空间远大于CoT单链;若分支数固定为1且不做评估,ToT退化为CoT。剪枝和回溯能减少无效探索,提升效率。C错误,ToT因多次调用LLM通常更慢更贵。