【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models

Graph of Thoughts: Solving Elaborate Problems with Large Language Models

Website & code: https://github.com/spcl/graph-of-thoughts

作者介绍了Graph of Thought (GoT):一个具备提高LLM提示能力,超越了思维链或思维树 (ToT) 等范式提供的能力的框架。GoT的关键思想和主要优势是能够将LLM生成的信息建模为任意图,其中信息单位(“LLM思想”)是顶点,而边对应于这些顶点之间的依赖关系。这种方法能够将任意的LLM思想组合成协同结果,提炼出整个思想网络的本质,或者使用反馈循环来增强思想。作者说明了GoT在不同的任务上提供了比现有技术更好的优势,例如比ToT提高了62%的排序质量,同时降低了大于31%成本。本文确保了GoT可以通过新的思维转换进行扩展,因此可以用于引领新的提示方案。这项工作使LLM推理更接近人类思维或大脑机制,如recurrence循环,两种机制都形成的复杂网络。

Introduction

LLM正在接管人工智能的世界。近年来,主要基于解码器变压器Transformer的模型快速发展。

Prompt engineering: 提示工程是解决不同LLM任务的一种资源高效的方法。简而言之,一个是在发送到LLM的输入中包含了任务描述。如果此描述表述适当,LLM使用其基于自回归的标记生成机制来解决任务。此类提示可能包含带有解决方案的示例任务(少镜头提示,也称为in-context learning (ICL),或者甚至根本没有示例任务 (zero-shot prompting) 。近年来,研究表明,这种机制可以用于解决一系列涉及数学、常识或符号推理的广泛任务。

Chain-of-Thought (CoT) : 思维链 (CoT) 是一种提示方法,其中除了任务输入/输出外,还包括提示(中间“思维”)中的中间推理步骤。CoT被证明可以显著提高LLM解决问题的能力,而无需采用任何模型更新。与CoT相比的一个主要改进,即 Self-Consistency with CoT (CoT-SC) ,是一个生成多个CoT的方案,然后选择最好的一个作为结果。最近,CoT和CoT-SC用思想树 (ToT) 进行了扩展,用树来建模LLM推理过程。这有助于使用不同的思维路径,并提供了新的功能,如从没有希望的结果中回溯。不幸的是,ToT方法仍然通过对思维过程强加刚性树状结构,从根本上限制了提示符内的推理能力。

在这项工作中,作者认为,通过使LLM思想形成一个任意的图结构,可以从根本上实现更强大的提示。这是由许多现象驱动的,如人类的推理、大脑的结构、或算法的执行。当研究一个新颖的想法时,人类不仅会遵循一连串的想法 (CoT) 或者尝试不同的想法 (ToT),而且实际上会形成一个更复杂的思想网络。例如,一个可以探索一定链的推理,回溯,开始一个新的,然后意识到一定的想法可以结合当前探索,并合并到一个新的解决方案,利用他们的优势,消除他们的弱点。类似地,大脑形成复杂的网络,具有类似图的模式,如循环。执行算法还暴露了网络模式,通常用有向无环图表示。当应用于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。

作者举例说明了GoT的几个用例(排序、关键字计数、设置操作、文档合并),并详细说明了如何使用基于图的范例来实现它们(贡献#3)。本文评估了GoT,并展示了它相对于最先进技术的优势(贡献#4)。总的来说,作者观察到GoT特别适合于可以自然分解为更小的子任务,这些任务单独解决,然后合并为最终解决方案。在这里,GoT优于其他方案,例如,在分类质量方面,比CoT和ToT分别提高了≈70%和≈62%,同时比ToT降低了大于31%的成本。

作者将GoT与表1中的其他提示方案进行了定性比较。GoT是唯一一个在提示符内启用任意的基于图的思想转换的方法,比如聚合,包括所有以前提出的方案。

【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models_第1张图片

2 Background & Notation

2.1 Language Models & In-Context Learning

与LLM的对话由用户消息 (prompts) 和LLM回复 (thoughts) 组成。作者遵循已建立的notation,将参数θ的预训练语言模型 (LM) 表示为 p θ p_θ pθ。小写字母,如 x , y , z , . . . x,y,z,... x,y,z,...表示LLM的想法。作者有意不规定什么是单一的“thought”,而是使它具有特定的用途。因此,单一的思想可以是段落(例如在文章摘要中),文档(例如在文档生成中),代码块(例如在代码调试或优化中)等等。

以下是具体提示方法的描述。

Input-Output (IO): 输入-输出(IO)提示是一种简单的方法,我们使用LLM将输入序列x直接转换为输出y,而不需要任何中间的想法。

Chain-of-Thought (CoT): 第二,在CoT中,作者引入了中间思想 a 1 , a 2 , . . . a_1,a_2,... a1,a2,... x x x y y y之间。在普通IO基线上,该策略可以显著提高各种LM任务,如数学谜题或一般数学推理。

Multiple CoTs: 第三,可以通过生成几个独立的 k k k个CoT,并返回输出最好的一个(根据一些规定的评分指标),将CoT推广到多个CoT,也就是Self-Consistency with CoT (CoT-SC)。这种方法增强了CoT,因为它提供了一个探索不同推理路径的机会。然而,它并没有提供一条路径中的“本地探索”,比如回溯。

Tree of Thoughts (ToT): 最后, Tree of Thought (ToT) 在一定程度上被其他方案隐式地使用,如思想分解thought decomposition。它通过将过程或推理建模为一个思想树来增强CoT-SC。一个树节点表示一个部分解决方案。基于一个给定的节点,思想生成器构造一个给定数量的k个新节点。然后,状态评估器为每个这样的新节点生成分数。根据用例,评估可以使用LLM本身进行,或者它可以利用人工分数。最后,扩展树的时间表由所使用的搜索算法(例如BFS或DFS)决定。

3 The GoT Framework

【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models_第2张图片

形式上,GoT可以被建模为一个元组 ( G , T , E , R ) (G,T,E,R) (G,T,E,R),其中 G G G是“LLM推理过程”(即,上下文中的所有LLM思想,以及它们的关系), T T T是潜在的思维转换, ε \varepsilon ε是一个用于获得大量思想的评价者函数,而 R R R是一个排序函数,用于选择最相关的思想。

3.1 Reasoning Process

作者将推理过程建模为一个有向图 G = ( V , E ) G =(V,E) G=(V,E) V V V是一组顶点, E ⊆ V × V E⊆V×V EV×V是一组边。 G G G是有向的,因此边是有序顶点对 E ⊆ V × V E⊆V×V EV×V的子集。顶点包含当前问题的解决方案(无论是初始问题、中间问题还是最终问题)。这种思想的具体形式取决于一个用例;它可以是一个段落(在写作任务中)或者一个数字序列(在排序中)。一个有向边(t1,t2)表示思想t2是使用t1作为“直接输入”来构造的,即通过显式地指示LLM使用t1来生成t2。

在某些用例中,图节点属于不同的类。例如,在writing任务中,一些顶点为writing段落的计划建模,而其他顶点对文本的实际段落建模。在这种情况下,GoT包含一个异构图heterogeneous graph G = ( V , E , c ) G = (V, E, c) G=(V,E,c) 来建模LLM推理,其中 c c c将顶点 V V V映射到它们各自的类 C C C(在上述情况下,它将是 C = { p l a n , p a r } C = \{plan,par\} C={planpar})。因此,任何顶点 v v v都可以建模推理的不同方面。

作者将 G G G与LLM推理过程联系起来。为了推进这一过程,作者将思想转换thought transformations应用于 G G G。这样的一个例子是将最佳得分(到目前为止)的思想合并为一个新的思想。另一个例子是循环思考一个想法,以增强它。请注意,这些转换严格地扩展了CoT、CoT-SC或ToT中可用的转换集。

3.2 Transformations of Thoughts

由于基于图的推理模型,GoT实现了新的思想转换,称为支持图的转换graph-enabled transformations。例如,在写作中,人们可以将几篇输入文章合并成一个连贯的摘要。在排序中,可以合并已排序的子数组为最后的已排序的数组,图2中说明了聚合和生成的示例。

【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models_第3张图片

在形式上,每一个这样的转换都可以被建模为 T ( G , p θ ) T(G,p_θ) T(G,pθ),其中 G = ( V , E ) G = (V,E) G=(V,E)是反映当前推理状态的图,而 p θ p_θ pθ是所使用的LLM。 T T T通常通过添加新的顶点及其进入的边来修改 G G G。我们有 G ′ = T ( G , p θ ) = ( V ′ , E ′ ) G'=T(G,p_θ)=(V', E') G=T(G,pθ)=(V,E),其中 V ′ = ( V ∪ V + ) \ V − V'=(V∪V^ +) \backslash V^− V=(VV+)\V E ′ = ( E ∪ E + ) \ E − E'=(E∪E^+) \backslash E^− E=(EE+)\E V + V^+ V+ E + E^+ E+分别是插入到 G G G中的新的顶点和边,以建模新的思想及其依赖关系。为了最大化GoT的表达性——作者还通过指定要删除的相应顶点和边(分别为 V − V^− V E − E^− E),允许用户显式地删除思想。在这里,用户有责任确保集合 V + , E + , V − V^+,E^+,V^− V+,E+,V E − E^− E具有一致的转换(例如,用户不会试图删除一个不存在的顶点)。这使得方案能够无缝地合并,为了在上下文中节省空间,人们可以删除不承诺改进的部分推理。

T T T的具体形式以及它如何影响 G G G取决于一个特定的转换。作者首先详细介绍了主要的支持图形的思想转换,然后继续描述GoT如何包含从早期方案中获得的转换。除非另有说明,否则 V − = E − = ∅ V^−=E^−=∅ V=E=

Aggregation Transformations: 首先,通过GoT,人们可以将任意的想法聚合成新的想法aggregate arbitrary thoughts,以结合和强化这些想法的优点,同时消除它们的缺点。在基本形式中,只创建一个新顶点, V + = { v + } V^+ = \{v^+\} V+={v+} E + = { ( v 1 , v + ) , . . . , ( v k , v + ) } E^+ =\{(v_1,v^+),...,(v_k,v^+)\} E+={(v1,v+),...,(vk,v+)},其中 v 1 , . . . , v k v_1,...,v_k v1,...,vk是合并的k思想。更普遍地说,这使得聚合推理路径,即更长的思维链,而不仅仅是个人的思维。在图模型中,它是否简单地通过添加来自顶点 v 1 , . . . , v k v_1,...,v_k v1,...,vk的输出边建模几个链的最终思想,到结合这些链的单一思想 v + v^+ v+中来实现。

**Refining Transformations:**另一个思想的转变是通过修改当前思想的内容来细化当前思想的 v v v V + = { } 和 E + = { ( v , v ) } V^+=\{ \}和E^+ = \{(v,v)\} V+={}E+={(v,v)}。图中的这个循环表示了与原始思想具有相同连接的迭代思想。

Generation Transformations: 最后,可以根据现有的单一thought v v v产生一个或多个新的thought。这个类包含了来自早期方案的类似推理步骤,如ToT或CoT-SC。形式上, V + = { v 1 + , . . . , v k + } 和 E + = { ( v , v 1 + ) , . . . , ( v , v k + ) } V^+ = \{v_1^+,...,v_k^ +\}和E^+ = \{(v,v_1^+),...,(v,v_k^ +)\} V+={v1+,...,vk+}E+={(v,v1+),...,(v,vk+)}

3.3 Scoring & Ranking Thoughts

通过思考来了解当前的解决方案是否足够好。一个分数被建模为一般函数 ε ( v , G , p θ ) \varepsilon (v,G,p_θ) ε(v,G,pθ),其中 v v v是一个被认为要评估的值。作者在 ε \varepsilon ε中使用整个推理过程( G G G)的状态来获得最大的一般性,因为,在某些评估场景中,分数可能与其他thought有关。

GOT也可以对这些thought进行排名。作者将其与函数 R ( G , p θ , h ) R(G, p_θ,h) R(G,pθ,h)进行建模, h h h是G中指定的排名最高的thought,其返回于 R R R。虽然 R R R的具体形式取决于一个用例,作者通常使用一个简单而有效的策略,其中 h h h thoughts是得分最高的返回结果,即 v 1 , . . . , v h = R ( G , p θ , h ) v_1,...,v_h = R(G, p_θ, h) v1,...,vh=R(G,pθ,h)

4 System Architecture & Extensibility

GoT体系结构由一组相互作用的模块组成,见图3(蓝色部分)。这些模块是提示器Prompter (为LLM准备消息)、解析器Parser(从LLM的回复中提取信息)、评分模块Scoring(验证LLM回复和评分)和控制器Controller(协调整个推理过程,并决定如何进行)。控制器还包含另外两个重要元素:操作图 (GoO) 和图形推理状态 (GRS)。GoO是一个静态结构,它指定了给定任务的图分解,也就是说,它规定了要应用于LLM思想的转换,以及它们的顺序和依赖关系。GRS是一个动态结构,它维持着正在进行的LLM推理过程的状态(其思想及其状态的历史)。

4.1 Prompter

提示器准备要发送到LLM的提示。这个模块负责在提示符中编码图形结构的具体内容。GoT体系结构允许用户通过提供对图结构的完全访问来实现特定于用例的图编码。

4.2 Parser

解析器从LLM的思想中提取信息。对于每一个这样的思想,解析器构建思想状态,其中包含这些提取的信息。然后使用思想状态来相应地更新GRS。

4.3 Scoring & Validation

在这里,作者验证一个给定的LLM的思想是否满足潜在的正确性条件,然后给它一个分数。根据分数的来源,该模块可以参考LLM。此外,根据用例的不同,分数也可以由人类来分配。最后,像排序这样的用例会使用简单的本地评分函数。

4.4 Controller

控制器实现了一种从其GRS结构中选择思想的特定策略。它还会选择应该应用于哪些思想的转换,然后将这些信息传递给提示器。它还决定是否应该完成整个过程,或者是否应该启动与LLM的下一轮交互。在作者当前的设计中,这是由GoO中指定的执行计划决定的。

4.5 GoO & GRS

用户构造了一个GoO实例,它规定了思想操作的执行计划。GoO是一个静态结构,在执行开始之前构造一次。每个操作对象都知道其前任操作和后续操作。然后,在执行过程中,GoO实例维护关于LLM推理过程的不断更新信息。这包括到目前为止已经执行了哪个操作、所有生成的LLM思想的状态、它们的有效性和分数,以及任何其他相关信息。上述元素提供了可扩展的api,支持直接实现不同的提示方案。这些api是图3的绿色部分中的概述,并在文档中详细说明。我们还提供了这些操作所使用的提示的示例,以及图3的红色部分中相应的GRS。

5 Example Use Cases

5.1 Sorting

由于空间的限制,作者详细介绍了一个用例(排序)。本文专注于它的分解和操作图,这是在GoT中实现和执行任何工作负载的核心。本文考虑对带有重复项的数字0-9进行排序。考虑的LLM无法对超过一定长度的这些数字序列进行正确排序,因为重复计数不匹配。

在GoT中,采用了基于合并的排序:首先,将数字的输入序列分解为子数组。然后,一个人将这些子数组单独排序,然后分别将它们合并为一个最终的解决方案。图4说明了这个用例及其图分解。在这里,LLM认为的是一个已排序的数字序列。

要对结果进行评分,请表示一个包含 [ a 1 , a 2 , . . . , a n ] [a_1, a_2,...,a_n] [a1,a2,...,an]的输入序列,以及一个包含 [ b 1 , b 2 , . . . , b m ] [b_1,b_2,...,b_m] [b1,b2,...,bm]的输出序列。使用以下分数来确定错误的“范围”:

error-scope = X + Y ,   w h e r e   p ∈ { 1 , . . . , m } ,   q ∈ { 1 , . . . , n } ,  and \text{error-scope}=X+Y,\ where\ p \in \{1,...,m\},\ q \in \{1,...,n\},\ \text{and} error-scope=X+Y, where p{1,...,m}, q{1,...,n}, and

X = ∑ i = 1 m − 1 sgn ( max ⁡ ( b i − b i + 1 , 0 ) ) , X=\sum_{i=1}^{m-1} \text{sgn}(\max(b_i-b_{i+1},0)), X=i=1m1sgn(max(bibi+1,0)),

Y = ∑ i = 0 9 ∣ ∣ { b p : b p = i } ∣ − ∣ { a q : a = i } ∣ ∣ Y=\sum_{i=0}^9||\{b_p:b_p=i\}|-|\{a_q:a=i\}|| Y=i=09∣∣{bp:bp=i}{aq:a=i}∣∣

这里, X X X表示有多少个连续的数字对被错误地排序。如果两个数字 i i i i + 1 i + 1 i+1被错误地排序(即, b i > b i + 1 b_i > b_{i+1} bi>bi+1),那么求和内的表达式返回1,将错误分数增加1。对于正确排序的两个数字,此表达式总计为0。然后,Y确定一个给定的输出序列保持输出数频率的程度。具体来说,对于每个考虑的数字 x ( x ∈ { 0 , . . . , 9 } ) x(x∈\{0,...,9\}) x(x{0,...,9}),得到了等于 x x x的输入元素的计数与等于 x x x的输出元素的计数之间的差值。对于一个完全保留 x x x频率的输出序列,这将等于0。在这个计数中的任何一个“偏差”,都会增加“误差范围”1)。然后把它和所有考虑过的 x x x的值相加。在绘制这个分数时,为了提高图的清晰度,作者另外应用了剪切最小值(误差范围, n n n),因为一些基线 ( I O , C o T ) (IO, CoT) (IO,CoT)会导致大量具有高误差范围的异常值。最后,要使用描述“正确排序的范围”元素的“正分数”,可以使用max值(n个−错误范围,0)。

【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models_第4张图片

5.2 Set Operations

此外,作者还考虑了集合操作,重点关注集合的交集。它们在从基因组或文档比较到模式匹配的问题上有许多应用(特别是集合交集)。两个集合的集合交集的实现方式类似于排序。第二个输入集被分割成多个子集,并通过LLM确定这些子集与第一个输入集的交集。然后,将聚合生成的交集集,以得到最终的结果。对于评估,我们使用了32、64和128个元素的不同集合大小,并且我们将在两个集合中发现的元素的数量改变为在25%到75%之间

分数表示在最终的交集中缺失或错误包含的元素的总数。具体来说,表示两个输入集 [ a 1 , a 2 , . . . , a n ] [a_1,a_2,...,a_n] [a1,a2,...,an] B = [ b 1 , b 2 , . . . , b n ] B=[b_1,b_2,...,b_n] B=[b1,b2,...,bn],输出集为 C = [ c 1 , c 2 , . . . , c m ] C = [c_1,c_2,...,c_m] C=[c1,c2,...,cm]。然后

error-scope = X 1 + X 2 + X 3 \text{error-scope} = X_1 + X_2 + X_3 error-scope=X1+X2+X3

其中 X 1 = ∣ C \ ( A ∩ B ) ∣ X1 = |C \backslash(A∩B)| X1=C\AB是C中不应该存在的元素数量, X 2 = ∣ ( A ∩ B ) \ C ∣ X2=|(A∩B) \backslash C| X2=(AB)\C C C C中缺少的元素数量, X d X_d Xd C C C中重复的数量(因为LLM以自然语言表示为列表)。最后,要使用描述“正确计算的范围”元素的“正分数”,可以使用最大值(n个−误差范围,0)。

5.3 Keyword Counting

关键字计数在输入文本中查找给定类别(在示例实现中的国家)中的关键字的频率。GoT将输入文本分割成多个段落,计算每一个段落中的关键字,并聚合子结果。段落的数量是可配置的,也可以留给LLM,这使得将每个句子作为一个单独的段落来处理成为可能。在这里,为了给一个想法评分,首先对每个关键字计算出计算计数和正确计数之间的绝对差异。然后将所有这些差异相加,得到最终的分数。

5.4 Document Merging

最后,作者还提供了文档合并。在这里,目标是生成一个新的保密协议(NDA)文档。其目标是确保最少的重复量,同时最大限度地保留信息。文档合并广泛适用于,例如,法律程序,即必须将多个信息源合并成单个文档或文章。为了给一个解决方案评分,我们查询LLM的两个值(每个值3次,并取平均值)。第一个值对应于解决方案冗余(10表示没有冗余,0表示至少一半的信息冗余),第二个值表示信息保留(10表示所有信息保留,0表示没有信息保留)。作者计算这些值的调和平均值。

6 The Latency-Volume Tradeoff

本文表明,GoT在延迟(达到给定的最终thought的跳跃数)和体积之间的权衡方面改进了之前的提示方案。对于一个给定的thought t t t,将体积定义为之前可能影响 t t t的LLM思想的数量。形式上, t t t的体积是在思想图中存在一条到 t t t的路径的thought的数量。假设输出一个思维需要花费 O ( 1 ) O (1) O(1)个时间,并将每个提示方案的总成本固定为 Θ ( n ) Θ(n) Θ(n)

该方案的结构如下。CoT-SC由k个源自单一起始思维的独立链组成。ToT是一个完整的k-ary树。最后,在GoT中,一个完整的k-ary树在它的叶子处与一个相同大小的“镜像”k-ary树连接,但其边缘被反转。

分析结果详见表2。CoT提供了高达N的大量体积,但以N的高延迟为代价。CoTSC减少了延迟k倍(对应于其分支因子),但同时也减少了体积k。ToT提供了logk N的延迟,但体积也很小。GoT是唯一一个同时延迟logk N和高容量N的方案。这是由于GoT利用思想的聚合,使得它有可能从图分解中的任何其他中间思想达到最终思想。

【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models_第5张图片

7 Evaluation

作者展示了GoT比现有技术水平的优势。本文专注于比较GoT和ToT,因为它被证明始终优于其他方案。不过,为了进行广泛的比较,本文也用IO、CoT和CoT-SC进行了实验。由于分析结果在一个很大的评估空间中,呈现了具有代表性的结果,并省略了没有带来相关见解的数据(例如,CoT-SC)。

7.1 Evaluation Methodology

我们为每个任务和比较基线使用100个输入样本。我们将温度设置为1.0,并使用4k上下文。对于每个实验,我们在各自的方案中固定思想的数量,以在每个实验中实现相似的成本。

**Parameters:**作者对分支因子k和级别的数量L进行了广泛的实验,以确保作者将GoT与成本有效和有利的配置进行比较。本文绘制了ToT的两个变体:一种是较高的k和较低的深度(ToT),另一种是较低的k,但较高的L(ToT2)。本文的目标是在更稀疏的生成轮(较低的k)和更多的生成轮(较大的L)之间的权衡中实现一个平衡点。通常每轮更多的回复更昂贵(例如,图7的总响应为80个对60个,但成本为6美元对3美元)。作者还尝试了不同的问题大小P(例如,在排序中,P表示要排序多少个数字)。

**Used LLMs:**由于预算限制,作者重点关注GPT- 3.5,使用GPT-4。本文也实验了Llama-2,但它通常比GPT-3.5更差,而且运行速度也要慢得多,因此无法获得足够的样本。

7.2 Analysis of GoT’s Advantages

【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models_第6张图片
【阅读笔记】Graph of Thoughts: Solving Elaborate Problems with Large Language Models_第7张图片

分析结果见图5(排序)、6(集合交叉)、7(关键字计数)和8(文档合并);具体用例说明请参见第5节。总的来说,GoT提高了所有考虑的基线的结果质量,与ToT相比,它降低了推理成本。

GoT vs. ToT: 在考虑的所有问题实例中,GoT比ToT和ToT2大大改进。ToT通常比ToT2的质量要高一些,但同时成本也要高得多。GoT的成本总是低于ToT,并且比ToT2相当(在某些情况下更低,在其他情况下更高)。例如,与ToT相比,P = 128减少了62%的≈中值误差,从而实现了更高的排序质量,同时确保了>31%的成本降低。这些优势是由于GoT能够将复杂的任务分解为更简单的子任务,独立地解决这些子任务,然后逐步地将这些结果合并到最终的结果中

**GoT vs. IO and CoT:**GoT始终比IO/CoT提供更高质量的结果。例如,对于排序(P = 64),GoT的中值误差分别比CoT和IO低≈65%和≈83%。然而,GoT和ToT的成本远远高于IO和CoT。这主要是由于作者对CoT的配置,如果这不能改善结果,作者就不会人为地夸大推理链的长度。GoT和ToT的成本较高,是由为每个生成操作建立的k个新思想所驱动的;这些多种想法是GoT在质量上具有优势的原因之一。

**Increasing Complexity of Tackled Problems:**最重要的是,目标的优势的质量增加所有基线的大小问题p。例如,在排序,而P = 32只有只能忽略地改善ToT2,其平均错误计数变低P = 64≈61%,P=128≈69%。四分位数也分别变得更好。其他方案的结果也遵循直觉;例如,随着P的增加,IO持续变得更差,这是由于一个单一的想法不太可能解决一个大的问题实例。总的来说,这个分析说明了GoT确实非常适合于复杂的问题案例,因为随着问题规模的增长,执行时间表通常会变得更加复杂。

7.3 Discussion on Task Decomposition

当将一个任务划分为子任务,然后解决这些子任务时,响应和输入的大小(以标记中)会根据任务分解的程度成比例地减少。然而,提示符的“静态”部分(即少镜头的示例)可能会成为一个重要的开销(参见图7中的GoT4到GoT8)。作者观察到这些很少的例子通常也可以减少大小(例如,段落用于演示关键字计数也可以变小,仍然表明实际输入大小),因此积极努力降低成本(例如,看到GoT8和GoTx之间的区别在图7)。

在进行图分解时,总体目标是将任务分解到一个点,LLM可以使用单个提示(或使用一些额外的改进步骤)在大多数时间内正确地解决它。这大大降低了在图形探索的后期阶段所需的改进/细化步骤的数量。此外,正如我们的结果所表明的那样,组合或连接子结果通常比从头开始解决大型任务实例更容易。因此,LLM在聚合最终解决方案时通常是成功的。

8 Conclusion

提示工程是LLM研究的核心新领域之一。它允许有效地使用llm,而不需要进行任何模型更新。然而,设计有效的提示是一项具有挑战性的任务。在这项工作中,本文提出了GoT,这是一种新的范式,使LLM能够在没有任何模型更新的情况下有效地解决不同的任务。关键的思想是将LLM推理建模为一个任意的图,其中思想是顶点,思想之间的依赖关系是边。这使得思想的新转变成为可能,比如聚合。人类的任务解决通常是非线性的,它涉及到将中间的解决方案组合成最终的解决方案,或者在发现新的见解时改变推理的流程。GoT用其图形结构反映了这一点。GoT优于其他提示方案,例如确保对ToT的分类质量提高了62%,同时降低了31%的>成本。作者还提出了一种新的提示方案的度量方法,即思想的体积,以表明一个给定的LLM输出可以随身携带的信息范围,其中GoT也很突出。这为实现更有原则的及时工程提供了一步。在过去的几十年里,图形抽象一直是计算和人工智能领域的一些成功设计的基础,例如蛋白质预测的AlphaFold。本文的工作将它应用于快速工程领域。

你可能感兴趣的:(Paper,NLP,LLM,笔记,语言模型,人工智能)