《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》中文翻译

《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》- 思维树:用大型语言模型有意识地解决问题

  • 论文信息
  • 摘要
  • 1. 介绍
  • 2. 背景
  • 3. 思想树:用 LM 有意识地解决问题
  • 4. 实验
    • 4.1 24 人游戏
    • 4.2 创意写作
    • 4.3 迷你填字游戏
  • 5. 相关工作
  • 6. 讨论

论文信息

  • 题目:《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》
  • 作者:Shunyu Yao and et al.
  • 期刊:Science
  • 发表时间:17 May 2023
  • 官方代码:https://github.com/princeton-nlp/tree-of-thought-llm;
  • 内容概述:论文引入了一种新的语言模型推理框架“思维树”(ToT),ToT 允许 LM 通过考虑多种不同的推理路径和自我评估选择来执行深思熟虑的决策,以决定下一步的行动方案,并在必要时向前看或回溯以做出全局选择。

摘要

语言模型越来越多地被部署用于解决各种任务中的一般问题,但在推理过程中仍然仅限于令牌级、从左到右的决策过程。这意味着他们可能无法完成需要探索、战略前瞻性或初始决策发挥关键作用的任务。为了克服这些挑战,我们引入了一种新的语言模型推理框架“思想树”(ToT),它概括了流行的“思想链”方法来提示语言模型,并能够探索连贯的文本单元(“想法”)作为解决问题的中间步骤。 ToT 允许 LM 通过考虑多种不同的推理路径和自我评估选择来执行深思熟虑的决策,以决定下一步的行动方案,并在必要时向前看或回溯以做出全局选择。我们的实验表明,ToT 显着增强了语言模型在三个需要重要规划或搜索的新任务上解决问题的能力:24 人游戏、创意写作和迷你填字游戏。例如,在 Game of 24 中,虽然具有思维链提示的 GPT-4 仅解决了 4% 的任务,但我们的方法取得了 74% 的成功率。代码仓库包含所有内容 https://github.com/princeton-nlp/tree-of-thought-llm。

1. 介绍

语言模型 (LM) 的扩展版本(例如 GPT [22,23,1,20] 和 PaLM [5])最初设计用于生成文本,现已证明能够越来越多地执行需要数学运算的更广泛任务。 、符号、常识和知识推理。也许令人惊讶的是,所有这些进步的基础仍然是生成文本的原始自回归机制,该机制以从左到右的方式逐一做出标记级决策。这样一个简单的机制足以让 LM 成为一个通用的问题解决器吗?如果不是,哪些问题会挑战当前的范式,以及替代机制应该是什么?

有关人类认知的文献为回答这些问题提供了一些线索。对“双重过程”模型的研究表明,人们有两种参与决策的模式——快速、自动、无意识模式(“系统1”)和缓慢、深思熟虑、有意识的模式(“系统2”)[27, 28、13、12]。这两种模式之前已与机器学习中使用的各种数学模型相关联。例如,对人类和其他动物强化学习的研究探索了它们进行联想“无模型”学习或更慎重的“基于模型”规划的情况[6]。LM 的简单关联代币级别选择也让人想起“系统 1”,因此可能会受益于更深思熟虑的“系统 2”规划过程的增强,该过程 (1) 维护和探索当前选择的多种替代方案,而不是仅仅选择 一,(2)评估其当前状况,并积极展望未来或回溯以做出更多的全球决策。
在这里插入图片描述

图 1:示意图说明了法学硕士解决问题的各种方法。每个矩形框代表一个思想,它是一个连贯的语言序列,作为解决问题的中间步骤。请参阅图 2、4、6 中关于如何生成、评估和搜索想法的具体示例。

为了设计这样的规划过程,我们回到人工智能(和认知科学)的起源,从 Newell、Shaw 和 Simon 从 20 世纪 50 年代开始探索的规划过程中汲取灵感 [18, 19]。 Newell 及其同事将问题解决 [18] 描述为通过组合问题空间(以树表示)的搜索。因此,我们提出了思想树(ToT)框架,用于使用语言模型解决一般问题。如图 1 所示,虽然现有方法(详细信息如下)对连续语言序列进行采样来解决问题,但 ToT 主动维护思想树,其中每个思想都是连贯的语言序列,充当解决问题的中间步骤(表 1)。这种高级语义单元允许 LM 通过深思熟虑的推理过程来自我评估不同的中间思想在解决问题方面所取得的进展,该推理过程也在语言中实例化(图 2、4、6)。这种通过 LM 自我评估和审议来实现搜索启发式方法是新颖的,因为之前的搜索启发式方法要么是编程的,要么是学习的。最后,我们将这种基于语言的功能与搜索算法相结合,生成和评估不同的想法,例如广度优先搜索(BFS)或深度优先搜索(DFS),这允许通过前瞻和回溯系统地探索思想树。

根据经验,我们提出了三个新问题,即使使用最先进的语言模型 GPT-4 [20],也挑战现有的 LM 推理方法:24 人游戏、创意写作和填字游戏(表 1)。这些任务需要演绎、数学、常识、词汇推理能力,以及整合系统规划或搜索的方法。我们表明,ToT 通过足够的通用性和灵活性来支持不同层次的思想、生成和评估思想的不同方式以及适应不同问题性质的不同搜索算法,从而在所有三项任务上获得了优异的结果。我们还分析了这些选择如何通过系统消融影响模型性能,并讨论更好地训练和使用 LM 的未来方向。

2. 背景

我们首先形式化一些使用大型语言模型来解决问题的现有方法,我们的方法受到启发并随后进行比较。我们用 pθ 表示预训练的 LM,参数为 θ,用小写字母 x、y、z、s、··· 表示语言序列,即 x = (x[1],···, x[n ]) 其中每个 x[i] 是一个标记,因此 pθ (x) = ∏n i=1 pθ (x[i]|x[1…i])。我们使用大写字母S,····来表示语言序列的集合。

输入输出 (IO) 提示是使用 LM 将问题输入 x 转换为输出 y 的最常见方法:y ∼ pθ (y|promptIO(x)),其中 PromptIO(x) 用任务指令包装输入 x 和/或少量输入输出示例。为了简单起见,我们将 pprompt θ (输出 | 输入) = pθ (输出 | 提示(输入)) 表示为 y ∼ pIO θ (y|x)。

提出思想链(CoT)提示[35]是为了解决输入 x 到输出 y 的映射不平凡的情况(例如,当 x 是数学问题而 y 是最终的数字答案时)。关键思想是引入一系列思想 z1,…,zn 来连接 x 和 y,其中每个 zi 是一个连贯的语言序列,作为解决问题的有意义的中间步骤(例如 zi 可以是数学质量保证)。为了解决 CoT 问题,每个思想 zi ∼ pCoT θ (zi | x, z1…i−1) 被顺序采样,然后输出 y ∼ pCoT θ (y|x, z1…n)。在实践中,[z1…n, y] ∼ pCoT θ (z1…n, y|x) 被采样为连续的语言序列,并且分解思想(例如每个 zi 是一个短语、一个句子、或一段)是不明确的。

CoT 自一致性 (CoT-SC) [33] 是一种对 k i.i.d 进行采样的集成方法。思路:[z(i) 1…n, y(i)] ∼ pCoT θ (z1…n, y|x) (i = 1 · · · k),然后返回最频繁的输出: arg maxy #{i | y(i) = y}。 CoT-SC在CoT的基础上进行了改进,因为同一问题通常有不同的思维过程(例如证明同一定理的不同方法),并且通过探索更丰富的思维,输出决策可以更加忠实。然而,在每个链中,没有对不同思维步骤的局部探索,并且“最频繁”启发式仅在输出空间有限时适用(例如多选 QA)。

3. 思想树:用 LM 有意识地解决问题

真正的解决问题的过程涉及重复使用现有信息来发起探索,进而揭示更多信息,直到最终找到解决问题的方法。——Newell et al. [18]

对人类解决问题的研究表明,人们通过组合问题空间进行搜索——一棵树,其中节点代表部分解决方案,分支对应于修改它们的运算符[18, 19]。采用哪个分支是由启发式决定的,这些启发式有助于导航问题空间并引导问题解决者找到解决方案。这种观点强调了使用语言模型解决一般问题的现有方法的两个主要缺点:1)局部地,它们没有探索思维过程中的不同延续——树的分支。 2) 在全球范围内,它们不包含任何类型的规划、前瞻或回溯来帮助评估这些不同的选项——这种启发式引导的搜索似乎是人类解决问题的特征。

为了解决这些缺点,我们引入了思想树 (ToT),这是一种允许 LM 探索思想的多种推理路径的范式(图 1©)。 ToT 将任何问题构建为树上的搜索,其中每个节点都是一个状态 s = [x, z1 …i

到目前为止的想法顺序。 ToT的具体实例涉及回答四个问题: 1.如何将中间过程分解为思维步骤; 2.如何从每个状态中产生潜在的想法; 3. 如何启发式评估状态; 4. 使用什么搜索算法。

1.思想分解。 CoT 连贯地对思想进行采样而无需显式分解,而 ToT 利用问题属性来设计和分解中间思想步骤。如表 1 所示,根据不同的问题,一个想法可以是几个单词(填字游戏)、一行方程(24 字游戏)或一整段写作计划(创意写作)。一般来说,一个想法应该足够“小”,以便 LM 可以生成有前途且多样化的样本(例如,生成整本书通常太大而无法连贯),但又应该“足够大”,以便 LM 可以评估其前景解决问题(例如,生成一个令牌通常太“小”而无法评估)。
在这里插入图片描述

表 1:任务概述。 输入、输出、思想示例为蓝色。

  1. 思想生成器 G(pθ , s, k)。给定一个树状态 s = [x, z1…i],我们考虑两种策略来生成下一步思考步骤的 k 个候选:

(a) 样品内径CoT 提示中的想法(创意写作,图 4): z(j) ∼ pCoT θ (zi+1|s) = pCoT θ (zi+1|x, z1…i) (j = 1 · · · k)。当思维空间丰富(例如每个想法都是一个段落)并且独立同分布时,这种方法效果更好。样本带来多样性;
(b) 使用“建议提示”依次提出想法(24 人游戏,图 2;填字游戏,图 6):[z(1), · · · , z(k)] ∼ ppropose θ (z(1···k) i+1 | s)。当思维空间受到更多限制(例如每个想法只是一个单词或一行)时,这种方法效果更好,因此在同一上下文中提出不同的想法可以避免重复。

  1. 状态评估器 V (pθ , S)。给定不同状态的边界,状态评估器评估它们在解决问题方面取得的进展,作为搜索算法的启发式方法来确定要继续探索哪些状态以及按什么顺序。虽然启发式方法是解决搜索问题的标准方法,但它们通常是编程的(例如 DeepBlue [3])或学习的(例如 AlphaGo [26])。我们提出了第三种替代方案,通过使用 LM 来故意推理状态。适用时,这种深思熟虑的启发式方法可以比编程规则更灵活,并且比学习模型更高效。与思想生成器类似,我们考虑两种独立或一起评估状态的策略:

(a) 独立评估每个状态:V (pθ , S)(s) ∼ pvalue θ (v|s) ∀s ∈ S,其中值提示对状态 s 进行推理以生成标量值 v(例如 1-10)或 a可以启发式地转化为值的分类(例如肯定/可能/不可能)。这种评估推理的基础可能因问题和思维步骤而异。在这项工作中,我们通过一些前瞻模拟来探索评估(例如,通过 5 + 5 + 14 快速确认 5、5、14 可以达到 24,或者通过在“ ”中填充“e”,“hot l”可以表示“inn”)加上常识(例如 1 2 3 太小而无法达到 24,或者没有单词可以以“tzxc”开头)。前者可能会促进“好”状态,而后者可能有助于消除“坏”状态。这种估值不需要是完美的,只需要近似即可
(b) 跨状态投票:V (pθ , S)(s) = 1[s = s*],其中“好”状态 s* ∼ pvote θ (s*|S) 基于故意比较 S 中的不同状态而被投票淘汰在投票提示中。当问题的成功很难直接评估时(例如段落一致性),很自然地会比较不同的部分解决方案并投票选出最有希望的解决方案。这在精神上类似于“逐步”自洽策略,即将“探索哪个状态”作为多选 QA,并使用 LM 样本对其进行投票。

对于这两种策略,我们可以多次提示 LM 聚合价值或投票结果,以时间/资源/成本换取更忠实/稳健的启发式方法。

  1. 搜索算法。最后,在 ToT 框架内,可以根据树结构即插即用不同的搜索算法。我们探索两种相对简单的搜索算法,并为未来的工作留下更高级的算法(例如 A* [9]、MCTS [2]):

(a) 广度优先搜索 (BFS)(算法 1)每步维护一组 b 个最有希望的状态。这用于 24 人游戏和创意写作,其中树深度受到限制 (T ≤ 3),并且可以评估初始思维步骤并将其修剪为一个小集合 (b ≤ 5)。
在这里插入图片描述
(b) 深度优先搜索(DFS)(算法2)首先探索最有希望的状态,直到达到最终输出(t > T),或者状态评估器认为从当前的s(V(pθ, {s})(s) ≤ vth(对于值阈值 vth)。在后一种情况下,s 的子树被修剪以交换探索以获取利用。在这两种情况下,DFS 都会回溯到 s 的父状态以继续探索。
在这里插入图片描述

从概念上讲,ToT 作为使用 LM 解决一般问题的方法有几个好处:(1)通用性。 IO、CoT、CoT-SC 和自我求精可以被视为 ToT 的特例(即深度和广度有限的树;图 1)。 (2)模块化。基础 LM 以及思想分解、生成、评估和搜索过程都可以独立变化。 (3)适应性。可以适应不同的问题属性、LM 功能和资源限制。 (4)方便。不需要额外的训练,只需预先训练的 LM 就足够了。下一节将展示这些概念上的好处如何转化为不同问题中强大的经验表现。

4. 实验

我们提出了三个任务,即使使用标准 IO 提示或思想链 (CoT) 提示从最先进的语言模型 GPT-4 [20] 中采样,这些任务也很困难。我们展示了思想树 (ToT) 中的有意搜索如何产生更好的结果,更重要的是,展示了使用语言模型来解决需要搜索或规划的问题的有趣且有前途的新方法。 除非另有说明,我们使用聊天完成模式 GPT-41 进行实验,采样温度为 0.7。

4.1 24 人游戏

24 游戏是一项数学推理挑战,目标是使用 4 个数字和基本算术运算 (±*/) 来获得 24。例如,给定输入“4 9 10 13”,解决方案输出可能是“( 10 - 4) * (13 - 9) = 24”。

任务设置。我们从 4nums.com 上抓取数据,该网站有 1,362 个游戏,按照人类解决时间从易到难排序,并使用索引为 901-1,000 的相对难游戏的子集进行测试。对于每个任务,如果输出是等于 24 的有效方程并且每个输入数字恰好使用一次,我们就认为输出成功。我们报告 100 场比赛的成功率作为指标。

基线。我们使用带有 5 个上下文示例的标准输入输出 (IO) 提示。对于思维链 (CoT) 提示,我们用 3 个中间方程来增强每个输入输出对,每个方程都对剩余的两个数字进行运算。例如,给定输入“4 9 10 13”,想法可能是“13 - 9 = 4(左:4 4 10); 10 - 4 = 6(左:4 6); 4 * 6 = 24(左:24)”。对于每个游戏,我们对 IO 和 CoT 提示进行 100 次采样以获得平均性能。我们还考虑了 CoT 自一致性基线,它从 100 个 CoT 样本中获取大部分输出,以及在 IO 样本之上进行最多 10 次迭代的迭代细化方法。在每次迭代中,LM 都会以所有先前的历史记录为条件,以便在输出不正确时“反思错误并生成精确的答案”。请注意,它使用有关方程正确性的真实反馈信号。
在这里插入图片描述

图 2:24 人游戏中的 ToT。LM 被提示进行 (a) 思想生成和 (b) 评估。

ToT 设置。为了将 24 人游戏构建为 ToT,很自然地将思想分解为 3 个步骤,每个步骤都有一个中间方程。如图 2(a) 所示,在每个树节点,我们精确计算“左边”的数字,并提示 LM 提出一些可能的后续步骤。尽管只有一个包含 4 个输入数字的示例,但所有 3 个思考步骤均使用相同的“提议提示”。我们在 ToT 中执行广度优先搜索 (BFS),在每一步中我们保留最好的 b = 5 个候选者。为了在 ToT 中执行有意的 BFS,如图 2(b) 所示,我们提示 LM 将每个候选思想评估为“确定/也许/不可能”,以达到 24。目的是促进可以判定的正确的部分解决方案在几次前瞻试验中,根据“太大/太小”的常识消除不可能的部分解决方案,并保留其余的“也许”。我们对每个想法的值进行 3 次采样。
在这里插入图片描述

图 3:24 个游戏 (a) 规模分析 & (b) 误差分析。

结果。如表 2 所示,IO、CoT 和 CoT-SC 提示方法在任务上表现不佳,仅取得 7.3%、4.0% 和 9.0% 的成功率。相比之下,宽度为b = 1的ToT已经达到了45%的成功率,而b = 5则达到了74%。我们还考虑了 IO/CoT 的预言机设置,通过使用 k 个样本中的最佳值 (1 ≤ k ≤ 100) 计算成功率。为了将 IO/CoT(最好的 k)与 ToT 进行比较,我们考虑计算 ToT 中每个任务在 b = 1 · · · 5 上访问的树节点,并在图 3(a) 中映射 5 个成功率,处理 IO/CoT (k 中的最佳)作为访问强盗中的 k 个节点。毫不奇怪,CoT 的扩展性比 IO 更好,并且 100 个 CoT 样本中最好的成功率达到 49%,但仍然比在 ToT 中探索更多节点 (b > 1) 差很多。
在这里插入图片描述

表 2:24 人游戏的结果。

误差分析图 3(b) 分解了 CoT 和 ToT 样本在哪一步未能完成任务,即想法(在 CoT 中)或所有 b 想法(在 ToT 中)无效或不可能达到 24。值得注意的是,大约 60% 的 CoT 样本已经生成第一步或前三个单词(例如“4 + 9”)后任务失败。这凸显了直接从左到右解码的问题。

4.2 创意写作

接下来,我们发明了一个创意写作任务,其中输入是 4 个随机句子,输出应该是一个连贯的段落,其中有 4 个段落,分别以 4 个输入句子结尾。这样的任务是开放式的、探索性的,挑战创造性思维和高层次的规划。

任务设置。我们从 randomwordgenerator.com 中随机抽取句子来形成 100 个输入,并且每个输入约束都没有真实段落。由于我们发现 GPT-4 在大多数情况下可以遵循输入约束,因此我们专注于通过两种方式评估段落一致性:使用 GPT-4 零样本提示提供 1-10 标量分数,或使用人类判断来评估段落一致性。比较不同方法的输出对。对于前者,我们对每个任务输出采样 5 个分数并对其进行平均,我们发现这 5 个分数通常是一致的,输出之间的平均标准差约为 0.56。对于后者,我们在一项盲研究中雇用了部分作者来比较 CoT 与 ToT 生成的段落对的一致性,其中段落的顺序是在 100 个输入上随机翻转的。

基线。考虑到任务的创造性,IO 和 CoT 提示都是零样本。前者促使语言模型在给定输入约束的情况下直接生成连贯的段落,而后者则促使语言模型首先制定一个简短的计划,然后编写该段落,即该计划作为中间的思考步骤。我们为每个任务生成 10 个 IO 和 CoT 样本。我们还考虑在每个任务的随机 IO 样本之上采用迭代细化(k ≤ 5)方法,其中 LM 以输入约束和最后生成的段落为条件,以决定该段落是否已经“完全连贯”,并且如果没有生成一个精炼的。
在这里插入图片描述

图 4:在随机挑选的创意写作任务中进行刻意搜索的步骤。给定输入,LM 会采样 5 个不同的计划,然后投票 5 次来决定哪个计划最好。多数选择用于通过相同的样本投票程序编写输出段落。

ToT 设置。我们构建一个深度为 2 的 ToT(只有 1 个中间思考步骤)——LM 首先生成 k = 5 个计划并投票选出最佳计划(图 4),然后类似地根据最佳计划生成 k = 5 个段落,然后投票选出最好的。这里的宽度限制 b = 1,因为每一步只保留一个选择。一个简单的零样本投票提示(“分析下面的选择,然后得出最有希望的指令”)用于在两个步骤中抽取 5 票样本。
在这里插入图片描述

图 5:创意写作结果。

结果。图 5(a) 显示了 100 个任务的平均 GPT-4 得分,其中平均而言,ToT (7.56) 被认为比 IO (6.19) 和 CoT (6.93) 生成更连贯的段落。虽然这样的自动度量可能有噪音,但图 5(b) 证实了这一发现,它显示,在 100 个段落对中,有 41 个段落对中,人类更喜欢 ToT,而不是 CoT,而只有 21 个段落对中,人类更喜欢 CoT,而不是 ToT(发现其他 38 对“同样连贯”) ”)。最后,iterative-refine 在这个自然语言任务上更加有效,它将 IO 一致性得分从 6.19 提高到 7.67,将 ToT 一致性得分从 7.56 提高到 7.91。 我们相信它可以被认为是 ToT 框架中思想生成的第三种方法,其中新思想可以通过提炼旧思想而不是独立同分布而产生。 或依次生成。

4.3 迷你填字游戏

在 24 人游戏和创意写作中,ToT 相对较浅——最多需要 3 个思考步骤才能达到最终输出。在这里,我们将 5 × 5 迷你填字游戏作为涉及自然语言的更难的搜索问题进行探索。同样,我们的目标不仅仅是解决任务,因为更通用的填字游戏可以通过专门的 NLP 管道 [31] 轻松解决,该管道利用大规模检索而不是 LM。相反,我们的目标是探索 LM 作为通用问题解决器的局限性,它探索自己的思想,并以启发式的刻意推理来指导自己的探索。

任务设置。我们从 GooBix 中抓取数据,其中包含 156 个 5 × 5 迷你填字游戏。由于我们观察到相邻游戏包含相似的线索,因此我们使用索引为1、6、····、91、96的20个游戏进行测试,并使用索引136、141、146、151、156的游戏进行提示。对于每个任务,输入描述 5 个水平线索和 5 个垂直线索,输出应该是一块 5 × 5 = 25 个字母的板来解决填字游戏。为了进行评估,我们考虑成功的三个级别:正确字母的比例(每场 25 个)、单词(每场 10 个)和游戏。

基线。我们在 IO 提示符中提供了 5 个示例输入输出对,并且在 CoT 提示符中另外包含顺序为 h1…5 然后 v1…5 的中间词。我们对 10 个样本运行每个提示并对结果进行平均。
在这里插入图片描述

图 6:在迷你填字游戏中,(a) 如何在深度优先搜索 (DFS) 的优先级队列中提出和聚合想法,以及 (b) 如何根据填充每个剩余单词线索的可能性来评估状态,如果 LM 认为任何剩余线索无法填写,则进行修剪。然后DFS回溯到父状态并探索下一个有希望的想法以寻找线索。

ToT 设置。我们利用深度优先搜索(算法 2),不断探索最有希望的后续单词线索,直到状态不再有希望,然后回溯到父状态以探索替代想法。为了使搜索易于处理,后续的想法被限制不更改任何填充的单词或字母,因此 ToT 最多有 10 个中间步骤。对于思想生成,在每个状态,我们将所有现有思想(例如图 6(a) 中的状态的“h2.motor; h1.tasks”)转换为剩余线索的字母约束(例如“v1.To heap: tm aproposal”)提示 5 次,提出下一个单词的填写位置和内容的候选者。重要的是,我们还提示 LM 为不同的想法给出置信度,并将这些建议汇总以获得下一个要探索的想法的排序列表(图 6(a))。对于状态评估,我们类似地将每个状态转换为剩余线索的字母约束,然后评估每个线索是否可以填充给定的约束。如果任何剩余的线索被认为“不可能”填写(例如“v1.To heap: tm s ”),那么对状态子树的探索将被修剪,并且 DFS 回溯到其父树以探索下一个有希望的想法。我们将 DFS 搜索步骤限制为 100,并简单地将最深的探索状态(如果有多个,则第一个探索状态)渲染到最终输出中。
在这里插入图片描述

表 3:迷你填字游戏结果。

结果。如表 3 所示,IO 和 CoT 提示方法表现不佳,单词级成功率低于 16%,而 ToT 显着改善了所有指标,实现了 60% 的单词级成功率,并解决了 20 个游戏中的 4 个。鉴于 IO 和 CoT 缺乏尝试不同线索、更改决策或回溯的机制,这样的改进并不令人意外。

甲骨文和消融研究。当从每个任务的 oracle 最佳 DFS 状态(而不是启发式确定的最佳状态)输出时,ToT 性能甚至更高,并且实际上解决了 7/20 游戏(表 3,“+最佳状态”),这表明我们的简单输出启发式可以是很容易得到改善。有趣的是,有时当填字游戏真正解决时,状态评估器可能仍然认为某些单词是“不可能的”并进行修剪——可能是因为 5 × 5 填字游戏在设计上有一些 GPT-4 无法识别的罕见或过时的单词。鉴于作为剪枝启发式的状态评估是不完善的,我们还探索了消融剪枝,并发现性能普遍较差(表 3,“-剪枝”)。然而,它实际上可以找到 4/20 个游戏的正确解(尽管通过启发式只输出 1 个),其中 3 个是 ToT+剪枝无法在 100 步内解决的游戏。因此,更好的 DFS 剪枝启发式对于解决这种情况下的问题至关重要。最后,我们通过运行消融来确认回溯的重要性,该消融在最多 20 个步骤中不断填充最有希望的线索,并允许覆盖。这类似于宽度限制为 b = 1 的“贪婪”BFS 搜索,并且表现不佳,单词级成功率仅为 20%(表 3,“-backtrack”)。

5. 相关工作

规划和决策。明智的规划和决策对于实现预定目标至关重要。由于他们接受了大量的世界知识和人类例子的训练,众所周知,LM已经吸收了丰富的常识,这使得他们可以根据问题设置和环境状态提出合理的计划[10,39,34,11,32,38 ,37]。我们提出的思想树方法通过在每个解决问题的步骤中同时考虑多个潜在可行的计划并继续执行最有希望的计划来扩展现有的规划制定。思想采样和价值反馈的融合,将规划和决策机制有机地结合起来,实现了解决方案树内部的有效搜索。另一方面,传统的决策过程通常需要训练专门的奖励和政策模型,如强化学习(例如 CHAI [30]),而我们使用 LM 本身来提供决策的价值估计。

自我反省。使用法学硕士来评估他们自己的预测的可行性正在成为解决问题中越来越重要的程序。 [25,17,21]引入了“自我反思”机制,LM向其生成候选者提供反馈。 [4] 通过注入 LM 本身根据其代码执行结果生成的反馈消息来提高 LM 代码生成的准确性。类似地,[14]还引入了对动作和状态的“批评”或审查步骤,决定解决计算机操作任务时要采取的下一步动作。最近与我们非常相关的另一项工作是“自我评估引导解码”[36]。与我们的方法类似,自评估解码也遵循树搜索过程,其中叶子是从随机波束搜索解码中采样的,然后由 LLM 本身使用精心准备的自评估提示进行评估。然而,他们的方法使用 PAL 公式 [7],将思想表示为代码,这使得解决具有挑战性的任务(例如我们在本文中考虑的创意写作)变得困难。因此,我们的思想树公式更加通用,可以处理具有挑战性的任务,而 GPT-4 在标准提示下只能达到非常低的准确度。

项目引导的LLM生成。我们的提案还与通过符号程序指导来组织 LM 行为的最新进展有关。例如,[24]将语言模型嵌入到算法搜索过程中,以帮助解决诸如逐步回答问题之类的问题,其中搜索树通过可能提供答案的相关段落进行扩展。然而,这种方法与我们的不同之处在于,树是通过采样外部段落而不是 LM 自己的想法来扩展的,并且没有反思或投票步骤。另一种方法 LLM+P [15] 更进一步,将实际的规划过程委托给经典规划者。

经典的搜索方法。最后但并非最不重要的一点是,我们的方法可以被视为解决问题的经典搜索方法的现代演绎。例如,它可以被认为是像A*[8]这样的启发式搜索算法,其中每个搜索节点的启发式由LM的自我评估提供。从这个角度来看,我们的方法也与[16]中提出的 NeuroLogic Aesque 解码相关,它受到 A 搜索的启发,但引入了前瞻启发式算法,可以有效地提高 LM 的波束搜索或 top-k 采样能力解码。然而,这种方法仅限于句子生成任务,而我们的框架是为复杂的、由价值反馈保护的多步骤问题解决而设计的。

6. 讨论

局限性和未来方向。对于 GPT-4 已经擅长的许多现有任务来说,诸如 ToT 之类的刻意搜索可能不是必需的,作为第一步,这项工作仅探索了三个挑战 GPT-4 的相对简单的任务,并呼吁将更好的搜索和规划能力与 LM 结合起来。然而,当我们开始为更现实的决策应用(例如编码、数据分析、机器人等)部署语言模型时,可能会出现更复杂的任务,并为研究这些研究问题提供新的机会。此外,为了提高任务性能,像 ToT 这样的搜索方法比采样方法需要更多的资源(例如 GPT-4 API 成本),但 ToT 的模块化灵活性允许用户自定义这种性能成本权衡,并且正在进行的开源工作[ 29]应该在不久的将来很容易降低此类成本。最后,这项工作的重点是使用现成的 LM,并使用 ToT 风格的高级反事实决策来微调 LM(例如,考虑下一段的潜在选择,而不是预测下一个标记)提供增强 LM 解决问题能力的机会。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/126178.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于大规模测量和多任务深度学习的电子鼻系统目标识别、浓度预测和状态判断

Target discrimination, concentration prediction, and status judgment of electronic nose system based on large-scale measurement and multi-task deep learning 摘要 为了实现响应特征的自动提取,简化模型的训练和应用过程,设计了一种双块知识…

【数据结构--二叉树】平衡二叉树

题目描述: 代码实现: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ int TreeHeight(struct TreeNode* root) {if(rootNULL)return 0;//左右子树中大的…

Linux 中的 chpasswd 命令及示例

chpasswd命令用于更改密码,尽管passwd命令也可以执行相同的操作。但它一次更改一个用户的密码,因此对于多个用户,使用chpasswd 。下图显示了passwd命令的使用。使用passwd我们正在更改来宾用户的密码。首先,您必须输入当前签名用户的密码,然后更改任何其他用户的密码。必须…

Java认识异常(超级详细)

目录 异常的概念和体系结构 异常的概念 异常的体系结构 异常的分类 1.编译时异常 2.运行时异常 异常的处理 防御式编程 LBYL EAFP 异常的抛出 异常的捕获 异常声明throws try-catch捕获并处理 finally 异常的处理流程 异常的概念和体系结构 异常的概念 在Java中…

RabbtiMQ的安装与在Springboot中的使用!!!

一、安装Erlang与Rabbitmq 安装教程本教程是在centos8下试验的,其实linux系统的都差不多RabbitMQ官方:Messaging that just works — RabbitMQRabbitMQ是开源AMQP实现,服务器端用Erlang语言编写,Python、Ruby、 NET、Java、JMS、c…

二十、MySQL多表关系

1、概述 在项目开发中,在进行数据库表结构设计时,会根据业务需求以及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种对应关系 2、多表关系分类 (1&#xff0…

你用过 Maven Shade 插件吗?

文章首发地址 Maven Shade插件是Maven构建工具的一个插件,用于构建可执行的、可独立运行的JAR包。它解决了依赖冲突的问题,将项目及其所有依赖(包括传递依赖)合并到一个JAR文件中。 下面是对Maven Shade插件的一些详解&#xff…

202330读书笔记|《中国百年文学经典桥梁书(全8册)》——故乡,匆匆,春,背影,白鹅,百草园

202330读书笔记|《中国百年文学经典桥梁书(全8册)》——故乡,匆匆,春,背影,白鹅,百草园 《中国百年文学经典桥梁书(全8册)》作者朱自清,鲁迅等。很多都是小学…

从软件工程师角度聊聊 Kubernetes

作为软件工程师,我们应该熟悉 K8s,尽管它有点像 DevOps,但它能让我们更好地了解幕后发生的事情,让我们与部署工作更密切相关,更有责任感。本文将从软件工程师的角度探讨 Kubernetes (K8s),我们将介绍其动机…

无涯教程-JavaScript - IMSECH函数

描述 IMSECH函数以x yi或x yj文本格式返回复数的双曲正割。复数的双曲正割被定义为双曲余弦的倒数,即 六(z) 1/cosh(z) 语法 IMSECH (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the hyperbolic secant.Required Notes Ex…

zookeeper/HA集群配置

1.zookeep配置 1.1 安装4台虚拟机 (1)按照如下设置准备四台虚拟机,其中三台作为zookeeper,配置每台机器相应的IP,hostname,下载vim,ntpdate配置定时器定时更新时间,psmisc&#xff…

linux 进程隔离Namespace 学习

一、linux namespace 介绍 1.1、概念 Linux Namespace是Linux内核提供的一种机制,它用于隔离不同进程的资源视图,使得每个进程都拥有独立的资源空间,从而实现进程之间的隔离和资源管理。 Linux Namespace的设计目标是为了解决多个进程之间…

Android Jetpack架构组件库:Hilt

一、开发者官网关于Hilt库使用链接如下 使用 Hilt 实现依赖项注入 Hilt版本说明 二、工程目录图 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:LearnJetpack-hilt:hilt版本2.48 代…

国标GB28181协议视频平台EasyGBS国标平台设备播放断流现象的排查分析及解决

EasyGBS平台基于GB28181国标协议,支持多路设备接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等多种格式的视频流。平台可为大数据等综合性监管平台提供极强的视频能力,已经在大量的项目中落地应用,如明厨亮灶、平安…

【C++心愿便利店】No.5---构造函数和析构函数

文章目录 前言一、类的6个默认成员函数二、构造函数三、析构函数 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C 心愿便利店 🔑本章内容:类…

20230904 QT客户端服务器搭建聊天室

Ser cpp#include "app.h" #include "ui_app.h"APP::APP(QWidget *parent):QWidget(parent),ui(new Ui::APP) {ui->setupUi(this);this->resize(550,400);ui->Line->setAlignment(Qt::AlignCenter);//标签文本对齐方式 居中ui->Line->se…

智能井盖传感器:高效守护城市道路安全

近年来,井盖出问题导致事故的报道时有发生,但却容易被公众所忽视。井盖作为城市基础设施的一部分,主要用于保护下方的供水管道、下水道以及电信线缆等。然而,由于长时间使用、缺乏维护、设计不合理等原因,井盖出现问题…

C语言——程序环境和预处理(再也不用担心会忘记预处理的知识)

了解程序环境和预处理 前言:一、程序环境二、编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 三、预处理3.1 预定义符号3.2. #define的使用3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##的用途3.2.5 带副作用的宏参数3.2.6…

MySQL卸载干净再重新安装【Windows】

家人们,谁懂啊? 上学期学的数据库,由于上学期不知道为什么抽风,过得十分的迷,上课跟老师步骤安装好了Mysql,但后面在使用的过程中出现了问题,而且还出现了忘记密码这么蠢的操作,后半…

vue 子组件向父组件传递参数 子传父

子组件中写: this.$emit(RowCount,res.data.RowCount); 父组件中写: getMFGLRowCount(val){ //父组件中的方法: 接收子组件传过来的参数值赋值给父组件的变量 //this.totalCount val; alert("这…