思维树与思维图

N3
深入解析 · 推理与测试时计算

思维树与思维图就是搜索——而搜索的上限就是它的打分器。

思维树(Yao 等,2023)把问题拆成步骤,每步分叉若干候选续写,对部分状态打分,并带回溯地搜索。思维图把树推广为一张 DAG,思维不仅能分叉,还能合并与精化。两者都是在部分解之上的刻意搜索。本文讲清算法、乘性成本,以及决定这整个家族成败的那一个依赖:状态评估器。

STEP 1

泛化阶梯:IO ⊂ CoT ⊂ CoT-SC ⊂ ToT ⊂ GoT。

这些并非各自独立的想法,而是同一根"搜索结构"轴上的不同点。直接 IO 是单个点;CoT 是一条路径;自一致性是一组在叶子处投票的独立路径;ToT 增加了带状态评估器的中间分叉与回溯——你可以放弃一条糟糕的部分路线、转而探索它的兄弟;GoT 增加了聚合:不同的部分解可以合并成更强的一个,一个思维也可以原地精化。沿阶梯上行的代价,是算力的爆炸式增长,以及对"能给尚未完成之物打分"这一能力的依赖不断加深。

STEP 2

搜索的形状。

# Tree-of-thought, beam-search variant
frontier = [root(task)]
for depth in range(MAX_DEPTH):
    candidates = []
    for node in frontier:
        for thought in generator.expand(node, k=BRANCH):
            child = node.extend(thought)
            child.score = evaluate(child)      # the load-bearing call
            candidates.append(child)
    frontier = top_k(candidates, BEAM)      # prune; backtrack is implicit
    if any(c.is_solution for c in frontier): break
return best(frontier)

这个循环里住着两次 LLM 调用:expand(生成器)与 evaluate(打分器)。决定成本的是它们的乘积,而非它们的和。

STEP 3

打分器就是整个系统;其余都是管道。

搜索不创造正确性——它放大一个打分信号。质量被评估器封顶。由优到劣排序:作用于部分状态的真值核验器(测试、求解器、可校验的不变量)——搜索大放异彩,这是对着神谕做并行假设检验;具体的程序化启发式——若有区分力则尚可;LLM 自评——又弱又有偏,而且恰恰在那些催生搜索的难节点上最差。ToT/GoT 最难的地方在于你必须给部分工作打分——一段写到一半的推导——这严格地比评判一个已完成的答案更难,也正是 LLM 打分器最不可靠之处。

最主流的反模式:在一个没有外部检查的任务上,用 LLM 自评跑 ToT。你多花一个数量级的算力去探索一个你无法导航的空间,搜索还会自信地返回一个错误的叶子。架构放大信号,但造不出信号。在加入分叉之前,先证明你拥有一个有区分力的部分状态打分器。

STEP 4

成本是乘性的,并且会与打分器成本叠加。

生成器调用大致按 BRANCH × BEAM × MAX_DEPTH 增长,而每一个生成出来的节点还要再付一次 evaluate 调用。一棵不大的树(分叉 3、束宽 3、深度 4)为一个答案就有数十次生成器调用外加数十次打分器调用——轻松达到单次 CoT 的 20–50 倍,这还没算上 GoT 的合并/精化步骤。这不是调一个超参,而是另一个成本与延迟的量级。GoT 还是工程量最重的:状态表示、合并算子、避环、控制器都归你维护——这是单次方法不存在的运维面。

STEP 5

思维树/图何时真的胜过 best-of-N。

只有当问题具备真实的中间结构时,ToT/GoT 才配得上它相对简单得多的 best-of-N 的那个乘数:尽早剪掉一个注定失败的前缀能省下本会用来写完它的算力(24 点、约束谜题、多步规划、证明搜索),或者部分解是可组合的、合并优于重启(GoT 的甜区——排序/归并、含可调和片段的多文档综合)。如果任务没有可打分的部分状态,或独立样本本就收敛,那么树的回溯与聚合什么都买不到,best-of-N 在成本上胜出。

务实的阶梯:先 best-of-N(实现简单、极易并行,往往拿到 80% 的收益),自一致性只用于小的离散答案,ToT/GoT 只用在部分状态打分与回溯能在留出集上可度量地胜过独立样本之处。最后这个条件只对少数真实负载成立——发布搜索之前先让它通过。

STEP 6

诚实的取舍。

思维树/图以一个数量级的乘性成本,买到了"剪掉死路并组合部分解"的能力——而它的回报严格正比于你部分状态打分器的好坏。有一个作用于部分状态的真值核验器时,它是本节最强的杠杆之一;没有时,它是自信地犯错最昂贵的方式。