赞
踩
【引子】大模型的兴起, 使得读论文成为了学习中的一种常态。如果一篇论文没有读懂,不用担心,可以再读一篇该领域内容相近的论文,量变可能会产生质变。就像编程语言一样,你永远无法精通一门编程语言,除非,精通两种。
像思维链和思维树这样的提示技术,已经大大提高了大模型解决复杂的、基于推理的任务能力。从高层抽象来看,通过强制 LLM 构造对问题的逐步响应,我们可以大大提高其解决问题的能力。然而,这些技术都假设推理过程应该遵循从一个想法到下一个想法的线性模式。然而,人所遵循的推理过程往往是完全不同的,遵循多种不同的思维链,甚至将不同见解结合起来,得出最终的解决方案。将推理过程建模为图(而不是链或树) ,我们或许可以更好地捕捉在对问题进行推理时可能出现的各种非线性模式。
常见的提示技术包括基础方法和一些高级技巧。基础方法包括提示工程,上下文窗口,提示结构等。一些高级技巧包括思维链(CoT) ,思维树(ToT),自我一致性(self-consistency)等。除此之外,我们还需要了解Transformer结构和图卷积网络,它们适用于图结构数据的机器学习。
Transformer体系结构最初应用于 Seq2Seq 任务(例如,语言翻译)。然而,这个模型以及它的一些变体已经发展到能够捕获各种不同的用例,例如:
Vision transformer :用于图像的目标检测和分类
Encoder-only transformer :例如,区分性语言任务的仅编码器transformer
Decoder-only transformer :例如,语言建模的仅解码器transformer
过去在工程实践中往往会使用许多深度学习的体系结构,但是,transformer的独到之处在于,它是一个单一的体系结构,可以应用于大量各种各样的任务。
编码器-解码器 transformer由两个组成部分:
编码器: 每个块包含双向,多头自注意力和前馈变换(通常是一个两层前馈网络)。
解码器: 每个块包含掩码的自注意力,交叉注意,和前馈转换。
处理原始文本过程将文本转换为一系列向量,带有附加的位置信息,对应于输入中的每个标记。然后,这个向量序列被 transformer的编码器摄取,该模块的输出仅仅是一系列的令牌向量,这些令牌向量通过双向自注意和前馈神经网络进行了转换。我们可以获取通过编码器的所有块传递的结果序列,并将其用作解码器组件的输入。简单地说,编码器使用双向自注意形成整个输入序列的表示,这意味着在精心设计编码器的输出序列时,输入序列中的每个令牌都考虑序列中的所有其他令牌。
然后,解码器获取编码器的输出,并在生成输出时使用输入序列的这种表示作为上下文。transformer的解码部分与编码器相似,但有两个主要区别:
它用的是掩码自自注意力。
它有一个额外的交叉注意力机制。
掩码自注意力机制限制了解码器中的多头自注意力操作在序列中的“向前看”。换句话说,每个标记的表示只取决于它之前的标记。
因为解码器需要生成一个文本序列作为输出。如果解码器使用双向自我注意,模型就能够在训练期间通过查看目标序列中正确的下一个令牌并在预测下一个令牌时复制它来“作弊”。掩码自注意力避免了这个问题,可以有效地训练生成一致的文本通过下一个令牌预测。交叉注意力类似于任何其他注意力操作,但它融合了两个编码器和解码器独立的序列与一个单一的注意力操作。
标准编码器-解码器Transformer架构的一个广泛使用的示例是文本到文本Transformer(T5)模型。该模型主要用于自然语言的迁移学习任务,编译码transformer对于 Seq2Seq 任务和前缀语言建模任务都是有用的,这两种任务都是常见的实际问题。
两个重要的变体是仅编码器和仅解码器模型,纯编码器架构使用transformer的编码器部分,完全消除了解码器。这样的架构是由 BERT 推广的,当针对各种不同的区分性语言任务(例如,句子分类、命名实体识别、问题回答等)进行微调时,这种架构是非常有效的。
仅解码器的架构只是消除了transformer的编码器部分。这意味着还必须摆脱任何交叉注意力模块,因此,纯解码器变压器的每个块只执行掩码自注意力和前馈变换。目前被广泛研究的大多数生成型 LLM ,例如,GPT 系列、 Falcon、 LLaMA-2等,都依赖于仅解码器的transformer架构。
由于我们的目标是利用图数据结构对推理过程建模的提示技术,所以需要了解在机器学习应用中通常如何处理图结构数据。也就是说,大多数模型结构(例如,transformer或卷积神经网络)是为了处理欧几里得数据(例如,图像或文本) ,可以很容易地表示为一个矩阵。然而,并非所有的数据都可以线性表达的。事实上,许多真实世界的数据来源更适合建模为图(例如,社交网络、分子等)。对于这样的数据,一般使用一种称为图卷积网络(GCN)的特殊模型。
在核心组件中,GCN与典型的前馈神经网络没有太大的不同。给定一个图,我们将图中的每个节点与一个输入嵌入关联起来,这个输入嵌入可以来自多种数据源(例如,文档的嵌入,与用户对应的特性,等等)。然后,在 GCN 的每一层中,首先对每个节点的嵌入(和规范化)应用前馈转换。然后,通过聚合每个节点的相邻特征来合并底层图的结构,例如取所有相邻节点嵌入的平均值。通过向 GCN 添加多个层,我们可以学习丰富的节点表示,这些表示同时捕获每个节点的属性和图的结构。
GCN 架构已经获得了广泛的流行,并被广泛应用于各种强大的大型应用程序(例如,Google Maps),并且已经有了对 GCN 的几个扩展,一个值得关注的架构是图形注意力网络(GAT)。
GAT 体系结构在某种程度上与 GCN 相似,但是它不仅仅执行从邻近节点聚合特性的简单平均值。相反,使用一个加权平均数来接管相邻的节点特征,其中的权重是通过一种注意力机制计算出来的。所使用的注意力机制可能很简单,例如,只是将两个连接的节点嵌入作为输入,并执行前馈转换来计算分数。这种方法允许学习更多相邻特征的一般性聚合。
还有一种需要注意的一种提示技术, 即多模态思维链。这种方法,提出了一个两阶段的方法来解决文本和视觉输入的推理问题。在第一阶段,模型将文本和图像作为输入,并使用类似于思维链的解决问题的合理解释。然后,将这个合理解释与输入连接起来,再次通过模型(连同图像)得到最终答案。这种方法使用了 T5架构,并对它所解决的任务进行了微调。
尽管 CoT 提示具有令人难以置信的影响力,但它有着自己的局限性它的下一个令牌预测以从左到右的方式生成问题解决原理,这阻止了模型从推理过程的早期错误中恢复。这个问题的一个解决方案是思维树(ToT)提示 ,它支持对建模为树的中间推理步骤进行回溯和策略性的前瞻。尽管 ToT 具有实用性,但它仍然将推理和问题解决作为一个线性过程,在树中的单个节点路径上进行,这限制了提示技术的能力。
通过将思维单元表示为节点,将它们之间的联系表示为边缘,可以捕捉到人类思维的非顺序性质,并允许对思维过程进行更现实的建模。
GOTR是一个两阶段的推理框架,称为思维图推理,用于解决具有文本和视觉输入的推理任务。在第一阶段,语言模型被用来产生一个解决问题的合理解释。然后,第二阶段使用这个生成的合理解释得出最终的答案。这个两阶段的过程受到了多模态 CoT的启发。
GOTR框架在推理过程中依赖于三种不同的输入:
文本: 任何基于提示的推理任务中获得的正常的文本输入。
图像: 可以(可选地)摄取与推理任务相关的图像。
思想图: 生成一个图,其中包含文本输入中的所有命名实体及其作为输入的关系。
这些输入中的每一个都在架构中使用了单独的编码器。然后,将这些编码器生成的表示进行融合,并将其传递给能够生成输出的解码器模块,要么是合理解释,要么是最终答案。
GOTR 在两个阶段的框架中运行。在第一阶段,对于要解决问题的输入文本,并被期望产生一个解决问题的合理解释,类似于一个思维链。然后,在第一阶段生成的合理解释只是与输入文本连接在一起,然后我们再次生成输出。第一阶段和第二阶段的唯一区别是:
第二阶段的输入较长(即,输入文本和原理)。
第二阶段产生一个最终答案,而不是一个合理解释。
然而,除了输入和输出之外,这两个阶段的结构是相同的。下面描述了 GOTR 之后的两个阶段的过程,在每个阶段产生两种不同的输出。
如前所述,GOTR 采用三种数据源作为输入: 文本、图像和思维图。图像数据是完全可选的,GOTR 在没有它的情况下也可以正常工作。其中,思维图是基于输入文本构建的。示例如下:
具体而言,GOTR 的思维图表用于表示输入文本中的命名实体及其关系。为了生成这个图,需要使用工具(例如CoreNLP 框架)从文本中提取三元组,并执行共享引用解析来统一重复实体,从而形成输入文本的图表示。
为了从不同的输入模式(即文本、图像和图形)获取数据,需要对每个模式使用单独的编码器。对于图像和文本数据,可以只使用Transformer编码器,也可以对图像使用视觉Transformer进行编码,而文本使用T5模型的编码器进行编码。
与大多数LLM 相比,GOTR 框架使用了不同的模型架构,与典型的仅解码器架构不同,GOTR 使用基于前缀的语言建模方法,该方法使用多个编码器模型来摄取输入,然后将这些编码器的输出传递给解码器以生成输出。这类似于编码器-解码器的Transformer架构,但可以有多种不同类型的编码器。为了使用多个编码器,需要在解码器之前有几个学习层,这些层将它们的输出融合成一个单一的序列,然后传递给解码器。GOTR 使用完整编码器-解码器设置在所需任务上进行了微调。
GAT 是 GCN 体系结构的一种类型,它不是通过简单的求和/平均运算来聚集相邻节点的特征,而是使用注意力机制来聚集相邻节点之间的信息。
一旦对来自文本、图像和思维图输入的数据进行了编码,就需要在将这些特征传递给解码器之前将它们融合在一起以生成输出,可以首先使用一个简单的交叉注意力机制。这个初始的特征融合操作如下所示,其中文本特征与图像和思想图形的特征融合使用交叉注意。在这里,图像特征是可选的。
在交叉注意力之后,仍然有图像特征、文本特征和可能的图像特征,仍然需要将这些特征组合在一起,形成一个可以传递给解码器的单一特征表示。这可以通过门控熔合层完成的。这意味着:
取出我们的输入特征
将它们乘以一些可学习的权重矩阵
产生“掩码”(即,每个条目中值在0到1之间的矩阵) ,告诉使用每个特征的哪些部分保留或去除。
当把 GOTR 产生的解决问题的合理解释与其他框架相比较时,会发现 GOTR 在 ROUGE 得分方面产生了更高质量的合理解释,与多模态 CoT 和 UnifiedQA 方法相比,质量略有提高,这似乎表明将思维图纳入问题解决过程是有帮助的。
GOTR 可能并不是一个真正的提示技术,它必须经过微调或训练才能解决推理问题。CoT 或 提示类似的纯提示方法使用预先训练好的 LLM,不需要任何模型微调。“思维图”(GoT)提示,将 LLM 生成的每个办法建模为图中的一个节点,然后使用连接这些节点的顶点来表示依赖关系。
人类在解决问题时可能不会遵循严格的思维链,可能会尝试多种思维链,并将来自多个思想链的见解结合在一起。第一种情况可以通过 ToT 提示来处理,但是结合不同的思维链并不适合树形结构的思维模式。为此,一个图结构可以将多个推理路径可以合并在一起。此外,这样的结构能够捕获类似递归的模式,这对于解决各种不同的问题可能是有价值的。GoT可以扩展,使得不同大模型即插即用,提示技术也会变得容易。
GoT 框架将 LLM 的推理过程表示为一个(有向)图。图中的每个节点对应一个 LLM 生成的单个思想,边表示思想之间的关系。也就是说,图中从思想 a 到 b 的边或者有向边(a,b)只是告诉我们思想 b 是用思想 a 作为输入生成的。与 ToT 提示类似,思想的确切定义取决于正在解决的问题。更进一步,每个节点代表一个问题或者中间问题的解决方案,但是可以在图中有不同类型的节点,它们代表推理过程的不同方面(例如,计划与执行)。
假设,使用一个图来表示 LLM 执行的推理过程,对这个图的任何修改都表示对底层推理过程的修改,可以将这些修改称为思维变换,具体定义为向图中添加新的顶点或边。如上图所示,存在各种各样的思维转换,例如,合并或分割数组的数字,汇总一组文章,生成单篇文章的多个摘要,等等。总体上,有三种主要的思维变换类型:
聚合: 将任意的思想聚合成一个新的思想。
精炼: 通过自我连接精炼思想中的内容。
生成: 基于单一思想生成多种新思想。
每一种类型都可以任意地修改和推进 LLM 的推理过程。例如,聚合可以将多个不同思想链的结果合并在一起,而精炼可以递归地更新一个思想,直到得到最终的答案。这样的功能严格扩展了 CoT 和 ToT 的提示技术。
最后,GoT 提示使用评估函数为特定的想法分配分数,以及一个排名函数来选择最相关的想法。值得注意的是,排名和得分都考虑了整个图结构。排名通常只是返回得分最高的想法。
其中主要的模块如下:
Prompter: 为 LLM 准备消息或提示词,应该包含图结构的编码。
Parser: 从 LLM 输出中提取相关信息,从而形成存储在每个思想中的状态。
Scorer: 验证思维状态是否满足正确性条件,并给它们分配一个评分(从 LLM 或人工标注中获得)。
Controller: 协调推理过程并决定如何进行。
Controller会选择应该应用于底层图结构的思维变换,将这些信息传达给Prompter,并根据scorer对生成的思想状态的输出决定推理过程是否已经完成或应该继续向前。在整个过程中,Controller维护两种信息:
操作图: 在推理过程之前创建的用户定义的静态结构,它捕获思维操作的执行计划。
图推理状态: 一个跟踪 LLM 推理过程状态的动态结构,包括所有的思想及其状态。
GoT 提示技术的常见示例包括使用归并算法对数字列表(包含重复数字)进行排序,计算两个集合的交集,关键字计数以及文档合并等。与其他的提示技术相比,GoT 提示技术具有更少的延迟和更大的容量,而且GoT 提示持续产生的错误更少。这些结果如下图所示。
然而,GoT 和其他提示技术之间的性能差异在现实世界的任务中似乎不那么明显。例如,GoT 提示在文档合并任务方面提供了不太明显的改进。类似地,GoT 在关键字计数任务的性能方面提供了一个优势,但是基线技术ーー特别是 ToT 提示ーー相当具有竞争力。
在考虑是否在实践中使用 GoT 时,需要考虑两个个问题:
试图解决的问题是否可以很容易地分解成更小的、可解决的子问题,并合并成最终的解决方案?对于这类(基于合并的)问题,GoT 提示非常有效。
增加的成本是否会成为一个问题?是否可以用更便捷的技术(例如,CoT 提示)得到一个合理的解决方案吗?
从链到树再到图,是一个自然的演进过程,基于图的提示技术允许大模型将其推理过程构造成一个图结构。从线性推理过程转向更灵活的基于图结构的推理过程对某些任务是有益的, GOTR和 GoT提供了两种方式的参考示例, 可以看到图结构可以有利于推理过程。然而,由此产生的推理过程可能更加复杂和昂贵。
【参考资料与关联阅读】
“Beyond Chain-of-Thought, Effective Graph-of-Thought Reasoning in Large Language Models.” arXiv:2305.16582 (2023).
“Graph of Thoughts: Solving Elaborate Problems with Large Language Models.” arXiv:2308.09687 (2023).
“Multimodal chain-of-thought reasoning in language models.” arXiv:2302.00923 (2023).
“Tree of thoughts: Deliberate problem solving with large language models.” arXiv:2305.10601 (2023).
“Graph attention networks.”arXiv:1710.10903 (2017).
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。