论文笔记:Tree of Thoughts: Deliberate Problem Solving with Large Language Models

607 阅读15分钟

导语

大模型推理领域的思维链是一个常用的优化技巧,本文将其进行了拓展和一般化,考虑树结构的思维树,在解决复杂推理任务时表现出了远超一般思维链的性能表现。

摘要

当前语言模型的推理过程仍局限于基于符号的自左向右决策,这使得它们在需要探索、战略前瞻或初始决策起关键作用的任务中表现不足。为解决这些挑战,本文提出了一种新的语言模型推理框架——“思维树”(Tree of Thoughts, ToT),该框架在流行的“思维链”方法的基础上进行了一般化,允许对作为问题解决中间步骤的连贯文本单元(“思维”)进行探索。ToT使语言模型能够进行深思熟虑的决策,考虑多条不同的推理路径,并自我评估选择,以决定下一步行动,同时在必要时进行前瞻或回溯,从而做出全局选择。实验表明,ToT显著提升了语言模型在三项需要复杂规划或搜索的新任务上的问题解决能力:24点游戏、创意写作和迷你填字游戏。例如,在24点游戏中,使用思维链提示的GPT-4仅解决了4%的任务,而ToT则达到了74%的成功率。

1 引言

自回归机制逐个符号地生成文本,且以自左向右的方式进行决策。这样简单的机制是否足以使语言模型成为通用问题解决者?如果不足以,那么当前范式面临哪些挑战,又应采用何种替代机制?

人类认知领域的研究表明,人们在决策时有两种模式:

  • 快速、自动、无意识的模式(“系统1”)和
  • 缓慢、深思熟虑、有意识的模式(“系统2”)。

这两种模式与机器学习中的各种数学模型之间存在关联。当前语言模型简单的从左到右自回归也类似于“系统1”,因此可能受益于更深思熟虑的“系统2”规划过程的增强,该过程(1)维护并探索当前选择的多样化替代方案,而不仅仅是选择一个,(2) 评估当前状态并主动进行前瞻或回溯以做出更全局的决策。

为了设计这样一个规划过程,本文从1950年代Newell、Shaw和Simon探索的规划过程中汲取灵感。Newell等人将问题解决描述为在组合问题空间中的搜索,该空间被表示为一棵树。因此,本文提出了“思维树”(Tree of Thoughts, ToT)框架,用于语言模型的通用问题解决。正如图1所示,现有方法在问题解决中采样连续的语言序列,而ToT主动维护一棵思维树,其中每个思维都是一个连贯的语言序列,作为问题解决的中间步骤。本文将这种基于语言的生成和评估多样化思维的能力与搜索算法(如广度优先搜索BFS和深度优先搜索DFS)结合,允许对思维树进行系统的探索,包括前瞻和回溯。

在实验方面,本文在三项GPT也吃力的24点游戏、创意写作和填字游戏任务上进行评估。这些任务需要推理、数学、常识和词汇推理能力,以及结合系统规划或搜索的能力。研究表明,ToT在这三项任务上都取得了优越的结果,展现出足够的通用性和灵活性,支持不同层次的思维、不同生成和评估思维的方式以及适应不同问题特性的搜索算法。本文还通过系统的消融分析探讨了这些选择对模型性能的影响,并讨论了未来更好地训练和使用语言模型的方向。

2 背景

本文首先形式化一些现有的方法,这些方法利用大型语言模型进行问题解决,本文的方法从中汲取灵感并进行比较。用 pθp_\theta 表示一个预训练的语言模型,小写字母 x,y,z,sx, y, z, s 表示语言序列,即 x=(x[1],,x[n])x = (x[1], \ldots, x[n]),其中每个 x[i]x[i] 是一个token,因此 pθ(x)=i=1npθ(x[i]x[1...i])p_\theta(x) = \prod_{i=1}^n p_\theta(x[i]|x[1...i])。用大写字母 S,S, \ldots 表示语言序列的集合。

image.png

输入输出(IO)提示是将问题输入xx 转换为输出 yy 的最常见方法:ypθ(ypromptIO(x))y \sim p_\theta(y|prompt_{IO}(x)),其中 promptIO(x)prompt_{IO}(x) 将输入 xx 与任务指令和/或少量输入输出示例结合。IO 提示可以表示为 ypθIO(yx)y \sim p^{IO}_{\theta}(y|x)

思维链(Chain-of-thought, CoT)提示被提出以解决输入 xx 到输出 yy 的映射并非简单的问题(例如,当 xx 是数学问题而 yy 是最终数值答案时)。其关键思想是引入一系列思维 z1,,znz_1, \ldots, z_n 来桥接 xxyy,其中每个 ziz_i 是一个连贯的语言序列,作为问题解决的有意义的中间步骤。在使用 CoT 解决问题时,每个思维 zipθCoT(zix,z1zi1)z_i \sim p^{CoT}_{\theta}(z_i | x, z_1 \ldots z_{i-1}) 是按顺序抽样的,最后输出 ypθCoT([z1zn,y]x)y \sim p^{CoT}_{\theta}([z_1 \ldots z_n, y] | x)。在此过程中,(z1zn,yx)(z_1 \ldots z_n, y | x) 被视为一个连续的语言序列,而思维的分解(例如,每个zi z_i 是一个短语、句子还是段落)则保持模糊。

思维链自一致性(CoT-SC) 是一种集成方法,通过抽样 kk 个独立同分布的思维链来实现:[z1n(i),y(i)]pθCoT(z1n,yx)(i=1k)[z^{(i)}_{1 \ldots n}, y^{(i)}] \sim p^{CoT}_{\theta}(z_{1 \ldots n}, y | x) \quad (i = 1 \ldots k),然后返回出现频率最高的输出:argmaxy#{iy(i)=y}\text{argmax}_y \#\{i | y^{(i)} = y\}。CoT-SC 相较于 CoT 有所改进,因为同一问题通常存在不同的思维过程(例如,证明同一定理的不同方法),而通过探索更丰富的思维集合,输出决策可以更加可靠。然而,在每个链内,并未对不同的思维步骤进行局部探索,而“最频繁”这一启发式方法仅适用于输出空间有限的情况(例如,多选问答)。

3 思维树:使用语言模型进行深思熟虑的问题解决

关于人类问题解决的研究表明,人们在组合问题空间中进行搜索——这是一棵树,节点代表部分解决方案,分支对应于修改这些解决方案的操作。选择哪一分支由启发式方法决定,帮助导航问题空间并指导问题解决者朝向解决方案。这一视角突出了现有使用语言模型解决一般问题方法的两个关键短板:

  1. 在局部上,它们没有探索思维过程中的不同延续——树的分支;
  2. 在整体上,它们未纳入任何类型的规划、前瞻或回溯,以帮助评估这些不同选项——这种启发式引导的搜索似乎是人类问题解决的特征。

为了解决这些不足,本文引入了思维树这一范式,允许语言模型在思维上探索多条推理路径。ToT 将任何问题框架化为对一棵树的搜索,其中每个节点是状态 s=[x,z1zi]s = [x, z_1 \ldots z_i],代表输入和迄今为止的思维序列所形成的部分解决方案。ToT 的具体实现涉及回答四个问题:

  1. 如何将中间过程分解为思维步骤;
  2. 如何从每个状态生成潜在思维;
  3. 如何对状态进行启发式评估;
  4. 使用什么搜索算法。

1. 思维分解

虽然思维链CoT在没有明确分解的情况下连贯地抽样思维,思维树(ToT)则利用问题特性设计和分解中间思维步骤。如表1所示,根据不同问题,思维可以是几个词(如填字游戏)、一行方程(如24点游戏)或一整段写作计划(如创意写作)。一般而言,思维应“足够小”,以便语言模型能够生成有希望且多样的样本(例如,生成一本书通常太“大”而无法连贯),同时又“足够大”,使语言模型能够评估其解决问题的前景(例如,生成一个符号通常太“小”以进行评估)。

2. 思维生成器 G(pθ,s,k)G(p_\theta, s, k)

给定树状态 s=[x,z1zi]s = [x, z_1 \ldots z_i],考虑两种策略为下一思维步骤生成 kk 个候选:

  • 从 CoT 提示中抽样独立同分布的思维(如创意写作,图4):z(j)pθCoT(zi+1s)=pθCoT(zi+1x,z1zi)(j=1k)z^{(j)} \sim p^{CoT}_{\theta}(z_{i+1}|s) = p^{CoT}_{\theta}(z_{i+1}|x, z_1 \ldots z_i) \quad (j = 1 \ldots k)。当思维空间丰富时(例如,每个思维是一段),这种方法效果更好,且独立同分布的样本能带来多样性;

  • 使用“提议提示”顺序提出思维(如24点游戏,图2;填字游戏,图6):[z(1),,z(k)]pθpropose(zi+1(1k)s)[z^{(1)}, \ldots, z^{(k)}] \sim p^{\text{propose}}_{\theta}(z_{i+1}^{(1 \ldots k)} | s)。当思维空间更加有限时(例如,每个思维仅是一个词或一行),在同一上下文中提出不同思维可以避免重复。

3. 状态评估器 V(pθ,S)V(p_\theta, S)

给定不同中间状态,状态评估器评估它们在解决问题方面的进展,从而作为启发式方法帮助搜索算法决定保留哪些状态以及以何种顺序进行探索。虽然启发式方法是解决搜索问题的标准方法,但它们通常是编程(如深蓝系统)或学习(如AlphaGo)来实现的。

本文提出第三种选择,利用语言模型对状态进行深思熟虑的推理。在适用的情况下,这种深思熟虑的启发式方法比编程规则更灵活,且比学习模型更有效。状态评估可以采用两种策略,独立或共同评估:

(a) 独立评估每个状态V(pθ,S)(s)pvalueθ(vs)sSV(p_\theta, S)(s) \sim p_{\text{value}}^{\theta}(v|s) \quad \forall s \in S,其中价值提示通过对状态 ss 进行推理生成一个标量值 vv(例如1-10)或分类(例如确定/可能/不可能),这些可以启发式地转化为值。这种评估推理的基础可能因问题和思维步骤而异。在本研究中,探索了通过少量前瞻模拟(例如,快速确认 5, 5, 14 可以通过 5 + 5 + 14 达到 24,或“hot l” 可以通过填充“e”变为“inn”)加上常识(例如,1 2 3 太小无法达到 24,或没有单词以“tzxc”开头)进行评估。前者可能促进“良好”状态,后者则有助于排除“糟糕”状态。这些评估不需要完美,仅需对决策过程大致有帮助。

(b) 跨状态投票V(pθ,S)(s)=1[s=s]V(p_\theta, S)(s) = 1[s = s^*],其中“良好”状态 spvote(sS)s^* \sim p_{\text{vote}}(s^*|S) 是通过在投票提示中仔细比较状态 SS 来选出的。当问题成功难以直接评估时(例如,段落连贯性),自然采用比较不同部分解决方案并为最有前景者投票。这类似于“逐步”自一致性策略,即将“探索哪个状态”视为多选问答,并使用语言模型样本进行投票。

对于这两种策略,可以多次提示语言模型,以汇总价值或投票结果,从而在更可靠的启发式方法与时间/资源/成本之间进行权衡。

image.png

4. 搜索算法

在ToT框架内,可以根据树结构灵活选择不同的搜索算法。本文探讨了两种相对简单的搜索算法,留待未来研究更高级的算法(例如A*、MCTS):

(a) 广度优先搜索(BFS)(算法1)在每一步维护一组最有前景的 bb 个状态。该算法适用于深度有限(T3T \leq 3)的“24点游戏”和创意写作,初始思维步骤可以评估并缩减为较小的集合(b5b \leq 5)。

(b) 深度优先搜索(DFS)(算法2)优先探索最有前景的状态,直到达到最终输出(t>Tt > T),或状态评估器认为当前状态 ss 不可能解决问题(V(pθ,{s})(s)vthV(p_\theta, \{s\})(s) \leq v_{\text{th}},其中 vthv_{\text{th}} 为价值阈值)。在后者情况下,将从 ss 开始的子树剪枝,以换取更深入的探索。在这两种情况下,DFS将回溯到状态 ss 的父状态以继续探索。

从概念上讲,ToT作为一种通用问题解决方法具有多个优势:

(1)通用性。输入输出提示、思维链、自一致性思维链和自精炼(self-refinement)都可以视为ToT的特例(即深度和广度有限的树)。

(2)模块化。基础语言模型、思维分解、生成、评估和搜索过程均可独立变化。

(3)适应性。能够适应不同问题特性、语言模型能力和资源限制。

(4)便利性。不需要额外训练,仅需预训练的语言模型即可。

4 实验

本文提出了三个即使在使用最先进的语言模型GPT-4时,采用标准输入输出提示或链式思维提示也很困难的任务。实验表明,通过在思维树中进行有意识的搜索(ToT),能够产生更好的结果,更重要的是,提供了有趣且有前景的新方法来利用语言模型解决需要搜索或规划的问题。除非另有说明,所有实验均使用采样温度为0.7的Chat Completion模式的GPT-4进行。

image.png

4.1 24点游戏

24点游戏是一个数学推理挑战,目标是使用四个数字和基本的算术运算(加、减、乘、除)来得到24。

image.png

图2展示了一个24点游戏的TOT流程,其中作者使用语言模型来作为思维生成器和状态评估器。LM在评估时接受当前的中间状态,并返回它认为当前中间状态能否实现24点,一共有三个等级“sure/maybe/impossible”。

实验结果如下图所示:

image.png

4.2 创意写作

创意写作任务的输入是四个随机句子,输出应为一个连贯的段落,包含四个段落,分别以这四个输入句子结尾。该任务是开放式和探索性的,挑战创造性思维和高水平的规划能力。

image.png

图4展示了一个创意写作任务的ToT示例,这个任务的深度为2,即第一步让LLM进行思考这几个句子该如何组织,第二步直接写出完整的文章。作者每次让LLM生成5个计划,然后使用投票的方式决定采用哪个计划,投票也是由LLM来完成(所以也是使用LM作为状态评估器)。

实验结果如图5所示,图5(a)展示的是GPT-4对连贯性的自动打分,图5(b)是人类打分情况。

4.3 小型交叉填词游戏

所谓交叉填词游戏就是给定一个大小的矩阵,往里面每个位置放字符,要求各个行、列字符组成的单词符合题目描述。作者使用DFS的搜索算法,同时也是使用LM作为状态评估器。实验结果如表3所示。

image.png

5 相关工作

6 讨论

局限性与未来方向
有意识的搜索方法如ToT可能并不适用于许多GPT-4已经表现出色的现有任务,作为初步步骤,本研究仅探讨了三个相对简单的任务,这些任务对GPT-4构成挑战。随着语言模型被用于更多现实世界决策应用(例如编码、数据分析、机器人等),可能会出现更复杂的任务,并为研究这些问题提供新的机会。此外,像ToT这样的搜索方法相比于采样方法需要更多资源(如GPT-4 API费用)来提高任务表现,但ToT的模块化灵活性允许用户自定义性能与成本之间的权衡,而持续的开源努力应能在不久的将来降低这些成本。最后,本文侧重于使用现成的语言模型,使用ToT风格的高层次反事实决策(例如针对下一个段落的潜在选择进行深思,而不是预测下一个token)对语言模型进行微调,可能会为增强其问题解决能力提供机会。

结论
语言模型的联想“系统1”可以通过基于搜索解决方案路径树的“系统2”进行有益的增强。思维树框架提供了一种将经典问题解决的见解转化为现代语言模型可操作方法的途径。同时,语言模型解决了这些经典方法的一个弱点,为解决不易形式化的复杂问题(如创意写作)提供了一种方法。我们认为语言模型与经典人工智能方法的交集是一个令人兴奋的研究方向。

更广泛的影响
思维树(ToT)是一种框架,使语言模型能够更自主和智能地做出决策和解决问题。虽然当前的任务仅限于推理和搜索问题,但未来涉及与外部环境或人类互动的应用可能带来潜在危险,例如促进语言模型的有害使用。另一方面,ToT还提高了模型决策的可解释性和人类对齐的机会,因为生成的表示是可读的高层次语言推理,而不是隐式的低层次token值。