进一步提升大型语言模型(LLM)解决复杂问题的能力,本文提出了思维图(GoT),其性能超过了思维链(CoT)、思维树(ToT)。思维图(GoT)的关键思想是能够将LLM生成的信息建模为任意图,其中信息单位是顶点,边代表顶点之间的依赖关系。这种方法优点能够将任意LLM的思维组合在一起,提炼出整个思维图内容。实验结果显示:相比目前的思维树(ToT)提高了62%。
我们介绍了一种名为“思维图”(GoT)的框架,该框架提升了大型语言模型(LLMs)的提示能力,超越了“思维链”或“思维树”(ToT)等范例所提供的能力。
GoT的关键思想和主要优势是能够将LLM生成的信息建模为任意图,其中信息单元(“LLM思维”)是顶点,边对应于这些顶点之间的依赖关系。这种方法使得能够将任意的LLM思维组合成协同的结果,提取整个思维网络的精髓,或使用反馈循环来增强思维。我们说明GoT在不同任务上提供了比现有技术更优的表现,例如将ToT的排序质量提高了62%,同时将成本降低了>31%。我们确保GoT可以扩展新的思维转化,因此可以用来引领新的提示方案。这项工作使LLM推理更接近人类思维或大脑机制,例如递归,两者都形成复杂的网络。 Website & code: https://github.com/spcl/graph-of-thoughts
大型语言模型(LLMs)正在接管人工智能世界。近年来,主要基于解码器仅变体的变换器[64],例如GPT[52, 51, 14, 13],PaLM[19]或LLaMA[62],的模型得到了迅速发展。提示工程是一种解决不同LLM任务的资源高效方法。简而言之,可以将任务描述包含在发送到LLM的输入中。如果适当地制定了此描述,则LLM将使用其自回归令牌基础机制生成文本来解冒任务。这样的提示可能包含带有解决方案的示例任务(少示例提示,也称为上下文学习(ICL)),或者根本不包含示例任务(零示例提示)。近年来的研究表明,该机制可用于解决一系列涉及数学、常识或符号推理的任务。
“思维链”(CoT) [70] 是一种提示方法,其中除了任务输入/输出之外,还在提示中包括推理的中间步骤(中间“思维”)。已经证明,CoT可以显著提高LLMs解决问题的能力,而不需要进行任何模型更新。相对于CoT的一个主要改进是CoT的自我一致性(CoT-SC)[66],这是一种方案,其中生成多个CoT,然后选择最佳的一个作为结果。更近期地,CoT和CoT-SC被扩展为“思维树”(ToT) [43, 76, 74],该方法使用树来模拟LLM的推理过程。这有助于使用不同的思维路径,并提供诸如从不乐观的结果中回溯等新功能。不幸的是,ToT方法仍然基本上限制了提示内的推理能力,因为它对思维过程施加了严格的树结构。
在这项工作中,我们认为,通过使LLM思维形成任意的图结构,可以实现更强大的提示。这是由诸如人类推理、大脑结构或算法执行等多种现象所激发的。当人类在研究一个新想法时,不仅会遵循一条思维链(如在CoT中),或尝试不同的独立思维(如在ToT中),而实际上会形成一个更复杂的思维网络。例如,人们可以探索一定的推理链,回溯并开始新的推理,然后意识到先前链中的某个想法可以与当前探索的思维相结合,并将它们合并为一个新的解决方案,发挥它们的优势,消除它们的弱点。同样,大脑形成复杂的网络,具有类似图的模式,如递归[28]。执行算法也暴露出网络化的模式,通常用有向无环图表示。相应的图启用的转换在应用于LLM思维时,带来了更强大的提示的希望,但这在CoT或ToT中不能自然地表达。
我们观察到,当将LLM的推理过程建模为图时,这些(以及许多其他)思维转换可以自然地启用。为此,我们提出了“思维图”(GoT),一种通过网络化推理来增强LLM能力的方法(贡献#1)。在GoT中,LLM的思维被建模为一个顶点,而边是这些思维之间的依赖关系。使用GoT,可以通过构造具有多个输入边的顶点来聚合任意思维。总的来说**,GoT所利用的图抽象无缝地将CoT和ToT泛化到更复杂的思维模式,而无需进行任何模型更新**。然而,将GoT付诸实践需要解冠几个设计挑战。例如,对于不同的任务,最佳的图结构是什么?如何最好地聚合思维以最大化准确性并最小化成本?为了回答这些和许多其他问题,我们精心设计了一个模块化的架构来实现GoT(贡献#2),带有两个设计亮点。首先,我们启用对单个思维的细粒度控制。这使我们能够完全控制与LLM的进行中的对话,并应用高级思维转换,例如将进行中的推理中最有希望的思维合并为一个新的思维。其次,我们确保我们的架构可以无缝地扩展新的思维转换、推理模式(即,思维图)和LLM模型。这使得能够使用GoT对新的提示想法进行快速原型制作,同时用不同的模型进行实验,例如GPT-3.5、GPT-4或Llama-2 [63]。
我们展示了GoT的几个用例(排序、汇总的关键字计数、集合操作、文档合并),并详细说明了如何使用基于图的范例来实现它们(贡献#3)。我们评估GoT,并展示了其相对于现有技术的优势(贡献#4)。总的来说,我们观察到,GoT特别适合那些可以自然分解为较小的子任务的任务,这些子任务分别解决,然后合并为最终解决方案。在这里,GoT优于其他方案,例如分别在排序质量方面,相对于CoT和ToT分别提高约70%和62%,同时将ToT的成本减少了>31%。我们在表1中定性地将GoT与其他提示方案进行比较。 GoT是唯一一个能够在提示中启用任意基于图的思维转换的方案,例如聚合,包括所有先前提出的方案。
最后,我们提出了一种新的评估提示策略的指标,即思维的体积(贡献#5)。通过这个指标,我们希望更好地理解提示方案之间的区别。对于给定的思维v,v的体积是可以通过有向边到达v的LLM思维的数量。直观地说,这些是所有有可能对v做出贡献的LLM思维。我们展示了,通过整合思维转换,例如聚合,GoT使得思维的体积比其他方案基本上更大。
思维图(GoT)
我们现在详细介绍GoT框架。我们在图1中展示它,并将其与其他提示策略进行比较。正式地,GoT可以被建模为一个四元组(G, T, E, R),其中G是“LLM推理过程”(即,上下文中的所有LLM思维及其关系),T是潜在的思维转换,E是用于获取思维得分的评估函数,R是用于选择最相关思维的排名函数。 GoT采用的方法如上图所示。LLM 的推理过程表示为(有向)图。该图中的每个节点对应于LLMs生成的单个想法,边代表想法之间的关系。也就是说,从思想a到b的边——或者图中的有向边 (a, b)——简单地告诉我们思想 b 是使用思想 a 作为输入生成的。与 ToT 提示类似,想法的确切定义取决于要解决的问题。更进一步,每个节点代表问题的(可能是中间的)解决方案,但我们可以在图中使用不同类型的节点来代表推理过程的不同方面(例如,计划与执行)。
思维图(GoT)实现
关于思维图(GoT) 我们应该如何实现呢?作者通过一系列不同的 LLM 驱动的模块来做到这一点。GoT架构包括一组相互交互的模块,参见图3(蓝色部分)。这些模块是Prompter(为LLM准备消息),Parser(从LLM的回复中提取信息),Scoring模块(验证并给LLM回复打分),和Controller(协调整个推理过程,并决定如何推进它)。Controller包含两个进一步重要的元素:操作图(GoO)和图推理状态(GRS)。GoO是一个静态结构,它指定了给定任务的图分解,即它规定了要应用于LLM思维的转换,以及它们的顺序和依赖关系。GRS是一个动态结构,维护着正在进行的LLM推理过程的状态(其思维的历史和它们的状态)。
上图中详细介绍的模块如下: 「提示器」:为 LLM 准备消息或提示。提示应包含图形结构的编码。 「解析器」:从LLM输出中提取相关信息,从而形成存储在每个想法中的状态。 「评分」:验证思想状态是否满足正确性条件并为其分配分数(来自LLMs或人类注释者)。 「控制器」:协调推理过程并决定如何进行。值得注意的是,控制器选择应应用于底层图的思维转换,将此信息传达给提示器,并根据评分器对生成的思维状态的输出来决定推理过程是否已完成或应继续前进。在整个过程中,控制器维护两条信息: 「操作图」:用户定义的静态结构,在推理过程之前创建,并捕获思维操作的执行计划。 「图推理状态」:跟踪LLM推理过程状态的动态结构,包括所有想法及其状态。
实验结果
1、与现有技术相比,在对排序任务进行评估时,可以发现与 CoT 、具有自洽性的 CoT 或 ToT 提示等技术相比,GoT 提示始终产生更少的错误。如下图所示:
2、GoT提示同样存在一个缺点:其导出解决方案的总成本高于Few-shot、CoT等更直接的方法。如下图所示:
结论
提示工程是大型语言模型(LLM)研究的中心新领域之一。它使得能够高效地使用LLM,无需任何模型更新。然而,设计有效的提示是一项具有挑战性的任务。在这项工作中,我们提出了“思维图”(GoT),一种新的范式,使LLM能够有效地解决不同的任务,而无需任何模型更新。关键的想法是将LLM推理建模为一个任意图,其中思维是顶点,思维之间的依赖关系是边。这使得能够进行新的思维转换,如聚合。人类的任务解决通常是非线性的,它涉及将中间解决方案合并为最终解决方案,或在发现新见解时改变推理的流程。GoT通过其图结构反映了这一点。GoT优于其他提示方案,例如确保相对于ToT,排序质量提高62%,同时将成本降低>31%。我们还提出了一个新的提示方案度量,思维的体积,用以表示给定LLM输出可能携带的信息范围,GoT在这方面也表现出色。这为更有原则的提示工程提供了一步。图抽象是过去几十年来计算和AI中几个成功设计的基础,例如AlphaFold的蛋白质预测。我们的工作在提示工程领域中利用了它。