【阅读笔记】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是唯一一个在提示符内启用任意的基于图的思想转换的方法,比如聚合,包括所有以前提出的方案。

在这里插入图片描述

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

在这里插入图片描述

形式上,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中说明了聚合和生成的示例。

在这里插入图片描述

在形式上,每一个这样的转换都可以被建模为 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)。

在这里插入图片描述

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利用思想的聚合,使得它有可能从图分解中的任何其他中间思想达到最终思想。

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

在这里插入图片描述
在这里插入图片描述

分析结果见图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。本文的工作将它应用于快速工程领域。

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

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

相关文章

大数据Flink(七十一):SQL的时间属性

文章目录 SQL的时间属性 一、Flink三种时间属性简介

MPI之通信模式(标准,缓存,同步,就绪)

MPI缓冲区 由MPI自行维护的一块内存区域,也可由用户(MPI_Bsend)自行维护;发送方 维护一块发送缓冲区; 接收方 维护一块接收缓冲区。 数据收发过程: 当发送端将数据拷贝到自身的数据缓冲区后(注意这里是拷贝,即数据到…

Unity中Shader的帧缓存区Clear(color+Z+stencil)

文章目录 前言一、什么是帧缓冲区二、片段运算三、随机扫描显示器(可以按照自定义路径绘制帧)四、光栅扫描显示器(从左到右,从上到下,依次绘制)五、缓冲的方式:单缓冲 和 双缓冲1、单缓冲2、双缓…

oled--SSD1315驱动

OLED 接口方式(由硬件电路确定):6800、8080、spi、i2c. 常见的驱动芯片:ssd1306、ssd1315。 oled屏幕的发光原理不同于lcd,上电后无法直接显示,需要初始化后才能正常显示。 SSD1315手册资料 SSD1315是一款…

pom.xml配置文件失效,显示已忽略的pom.xml --- 解决方案

现象: 在 Maven 创建模块Moudle时,由于开始没有正确创建好,所以把它删掉了,然后接着又创建了与一个与之前被删除的Moudle同名的Moudle时,出现了 Ignore pom.xml,并且新创建的 Module 的 pom.xml配置文件失效&#xf…

OpenGL-入门-BMP像素图glReadPixels(1)实现读取屏幕中间的颜色和获取屏幕上鼠标点击位置的颜色

glReadPixels函数用于从帧缓冲区中读取像素数据。它可以用来获取屏幕上特定位置的像素颜色值或者获取一块区域内的像素数据。下面是该函数的基本语法: void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *da…

质谱技术对蛋白质进行鉴定

参考B站教学视频: 质谱如何鉴定蛋白质_哔哩哔哩_bilibili 针对该视频,别人的 笔记 质谱是一台体重秤,称的不是人,而是分子、原子的体重 不同分子有不同分子量是质谱仪工作的底层逻辑 图片来自:【蛋白组】蛋白质组定量技术的原理和…

【UE 材质】实现方形渐变、中心渐变材质

步骤 一、实现方形渐变 1. 新建一个材质,材质域选择“后期处理” 2. 通过“Mask”节点单独获取R、G通道,可以看到R通道是从左到右0~1之间的变化,对应U平铺 可以看到G通道是从上到下0~1之间的变化,对应V平铺 3. 完善如下节点 二、…

2023年高教社杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 最短时…

数据分析作业2

中国在 2020 年开展第七次全国人口普查,截止 2021 年 5 月 11 日普查结果公布,全国人口共1411778724人。单从数据表格看相关数据不够直观,需要进行数据可视化展示,方便查看数据结果。 任务一:链接 MySQL 数据库&#x…

npm报错sass

1.删除node模块 2.删除node-sass: npm uninstall node-sass 3.重新下载对应版本node-sass: npm i node-sass7.0.3(指定版本 控制台报错什么版本就写什么版本) 4.再运行项目 或者

jdk-8u371-linux-x64.tar.gz jdk-8u371-windows-x64.exe 【jdk-8u371】 全平台下载

jdk-8u371 全平台下载 jdk-8u371-windows-x64.exejdk-8u371-linux-x64.rpmjdk-8u371-linux-x64.tar.gzjdk-8u371-macosx-x64.dmgjdk-8u371-linux-aarch64.tar.gz 下载地址 迅雷云盘 链接:https://pan.xunlei.com/s/VNdLL3FtCnh45nIBHulh_MDjA1?pwdw4s6 百度…

基于Matlab实现生活中的图像信号分类(附上源码+数据集)

在我们的日常生活中,我们经常会遇到各种各样的图像信号,例如照片、视频、图标等等。对这些图像信号进行分类和识别对于我们来说是非常有用的。在本文中,我将介绍如何使用Matlab来实现生活中的图像信号分类。 文章目录 介绍源码数据集下载 介…

什么是伪类链(Pseudo-class Chaining)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Pseudo-class Chaining⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚…

(十九)大数据实战——Flume数据采集框架安装部署

前言 本节内容我们主要介绍一下大数据数据采集框架flume的安装部署,Flume 是一款流行的开源分布式系统,用于高效地采集、汇总和传输大规模数据。它主要用于处理大量产生的日志数据和事件流。Flume 支持从各种数据源(如日志文件、消息队列、数…

【计算机硬件CPU】

【计算机硬件CPU】 1、计算机硬件的五大单元2、一切设计的起点: CPU 的架构3、精简指令集 (Reduced Instruction Set Computer, RISC)4、复杂指令集(Complex Instruction Set Computer, CISC)5、例题:最新的…

Vue框架--Vue中el和data的两种写法

data与el的2种写法 1.el有2种写法 (1).new Vue时候配置el属性。 (2).先创建Vue实例,随后再通过vm.$mount(#root)指定el的值。 2.data有2种写法 (1).对象式 (2).函数式 如何选择:目前哪种写法都可以,以后学习到组件时&#xff…

一些测试知识

希望能起到帮助,博主主页: https://blog.csdn.net/qq_57785602/category_12023254.html?spm1001.2014.3001.5482 软件测试理论 测试的依据: 需求,规格说明,模型,用户需求等 什么是软件测试 描述一种来…

Python Opencv实践 - 矩形轮廓绘制(直边矩形,最小外接矩形)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) #通过cv.threshold转换为二值图 ret,thresh cv.threshold(img_gray,…

手写Mybatis:第5章-数据源的解析、创建和使用

文章目录 一、目标:数据源的解析、创建和使用二、设计:数据源的解析、创建和使用三、实现:数据源的解析、创建和使用3.1 引入依赖3.2 工程结构3.3 数据源解析、创建和使用关系图3.4 事务管理接口和事务工厂3.4.1 事务的隔离级别3.4.2 定义事务…