摘要
随着语言模型(LMs)在自然语言处理(NLP)任务中的广泛应用,研究人员发现 Chain-of-Thought(CoT)能够通过生成中间推理步骤来辅助语言模型完成复杂的推理任务。然而,人类的思维过程往往是非线性的,而非简单的线性思维链。因此,我们提出 Graph-of-Thought(GoT)推理方法,该方法将人类思维过程建模为图结构而不仅仅是链结构。通过将思维单元表示为节点,将它们之间的联系表示为边,我们的方法捕捉了人类思维的非顺序特性,并允许更真实地建模思维过程。GoT 采用两阶段框架,引入额外的 GoT encoder 来表示思维图,并通过门控融合机制将图表示与原始输入表示融合。我们在文本推理任务(AQUA-RAT)和多模态推理任务(ScienceQA)上评估了 GoT 的性能。在 AQUA-RAT 测试集上,我们的方法相比强大的 CoT 基线显著提升了推理能力;在 ScienceQA 测试集中,使用 T5-base 模型,我们的方法将精度从最先进的 Multimodal-CoT(Zhang et al., 2023)的 85.19% 提升至 87.59%。我们的代码已公开,地址为:https://github.com/Zoeyyao27/Graphof-Thought
1 引言
在人类认知领域,早已有研究认识到人类的思维过程远比一个简单的线性思维链要复杂得多(Barsalou, 1999)。人类思维的一个典型特征是能够在看似无关的概念之间进行突跃式连接,这种能力常常促成新颖的见解与解决方案。这种非线性、跳跃式的思维过程是人类创造力、推理能力和解决问题能力的标志。然而,这种特性也给认知建模与理解带来了重大挑战。
近年来,大型语言模型(LLMs)取得了前所未有的进展。随着如 GPT-3(Brown et al., 2020)、PaLM(Chowdhery et al., 2022)和 GPT-4(OpenAI, 2023)等模型的突破,自然语言处理进入了一个全新的发展阶段。已有研究(Wei et al., 2022a;Wang et al., 2022;Zhang et al., 2022)表明,通过 Chain-of-Thought(CoT)提示可以激发 LLMs 的推理能力。CoT 提示指的是引导模型通过一系列自然语言中间推理步骤最终得到答案。此外,Zhang 等人(2023)提出了 Multimodal-CoT,将语言与视觉模态结合,从而突破纯文本信息的限制。更详细的相关工作可见附录 A。
此前关于 CoT 提示的研究主要局限于文本与视觉信息,通常将人类推理过程表示为线性思维链。这种方法忽视了人类思维中跳跃性过程的建模,也未能将复杂的推理思维结构信息融入模型中。与之同时进行的工作如 Tree-of-Thoughts(ToT)(Yao et al., 2023)将思维划分为若干思维单元,并将其建模为类树结构的搜索过程。
然而,人类认知不仅限于树状结构,而是呈现出更加复杂的图状结构。我们认为人类智能能够在线性思维的基础上构建复杂的思维图谱。因此,我们的目标是实现对线性与非线性认知过程的并行建模,超越仅仅生成分段式思维单元的方式。为了解决上述局限,与 ToT 不同,我们提出 Graph-of-Thought(GoT)这一新颖的思维建模方法,它不仅将人类思维过程建模为链,还建模为图。我们的方法基于以下假设:人类思维并非遵循严格的顺序链条,而是通过非顺序的图结构连接与重组概念。通过将思维单元表示为节点、将思维之间的联系表示为边,GoT 能够捕捉人类思维丰富、非线性的特征,从而实现更真实、更具逻辑性的推理建模。
图 1 展示了一个 GoT 推理的示例。受 Multimodal-CoT(Zhang et al., 2023)启发,我们采用了一个两阶段的推理框架。该框架首先生成推理过程中的 rationale(推理步骤),然后基于预测的 rationale 生成最终答案。除了文本特征外,GoT 的图特征也被融合进了 rationale 生成和答案推理两个阶段。
具体来说,GoT 首先通过一个 Extract-Cluster-Coreference(ECC)过程构建,该过程模拟了人类推理中的演绎过程。我们采用了预训练语言模型 T5(Raffel et al., 2020a)作为我们的主干模型。GoT 使用图注意力网络进行编码,并通过一个 gated fusion network(门控融合网络)与原始表示进行融合。
此外,我们还提出了一个多模态 GoT,融合了文本特征、GoT 特征以及视觉特征。在实验中,我们分别使用了 FLAN-Alpaca (T5)-base 和 FLAN-Alpaca (T5)-large 作为主干模型。
我们将 GoT 实现为一个两阶段的框架,通过对语言模型进行微调,并融合文本、思维图谱和视觉特征,实现更真实、更准确的推理过程。GoT 在文本任务 AQUA-RAT(Ling et al., 2017)和多模态任务 ScienceQA(Lu et al., 2022)上均展现了卓越的性能,不仅超过了在线系统 ChatGPT(OpenAI, 2023)9.28%的准确率,也比强基线 Multimodal-CoT(Zhang et al., 2023)高出2.40%,甚至超越了人类表现,在 ScienceQA 测试集上以更少的参数建立了新的 state-of-the-art。
2 Graph-of-Thought
我们提出的 GoT 概览如图 2 所示。受 Multimodal-CoT(Zhang et al., 2023)启发,GoT 同样采用了一个两阶段的框架。
(1)rationale 生成阶段:在第一阶段,模型基于输入文本(包括问题、上下文和选项)、视觉特征以及与输入文本对应的思维图谱,生成 rationale。对于多模态任务(Zhang et al., 2023;Zhang and Zhang, 2023;Huang et al., 2023;Peng et al., 2023),通常的做法是使用不同的 encoder 来处理来自不同模态的输入,一种直接且通用的方法是使用 encoder-decoder 模型。因此,GoT 为每种模态的输入数据采用独立的 encoder。我们使用 Transformer encoder 编码输入文本,使用视觉 encoder 编码图像,使用图注意力网络编码思维图谱。编码后的特征进一步通过 cross-attention 机制,使文本 token 与图像 patch 和图节点分别对齐。接着,我们使用 gated fusion layer(门控融合层)对这三种特征进行进一步融合,并将其传入 Transformer decoder 以预测目标 rationale。
(2)答案生成阶段:第二阶段旨在生成最终答案,整体流程与第一阶段大体相同。主要的区别在于,此阶段的输入文本会与第一阶段预测出的 rationale 进行拼接。需要注意的是,上述过程描述的是一个通用的多模态推理框架。然而,对于仅含文本的推理任务,不存在图像特征,因此可以省略图像编码和视觉特征融合的过程。
在下一节中,我们将对 GoT 推理框架中的两个关键步骤——GoT 构建与 GoT 编码及特征融合——进行详细阐述。
2.1 GoT Construction
GoT 使用思维图谱(thought graphs)来模拟人类的演绎推理过程,从而建模人类“跳跃性思维”的能力。我们的目标是通过构建思维图谱来体现最基本的演绎推理过程。如果我们已经有了 x → y x \rightarrow y x→y 且 y → z y \rightarrow z y→z 的证据,那么可以推出 x → z x \rightarrow z x→z。在图 3 中,这种演绎推理可以表示为:
Earthquake comes from → {earth, quake},
{earth, quake} means → {ground, shake}。
因此,很容易推理出:Earthquake → {ground, shake}。
我们提出了一种新颖的 Extract-Clustering-Coreference(ECC)过程来构建思维图谱。ECC 首先提取演绎三元组
T = { t i = ( t i x , t i y , t i z ) } T = \{t_i = (t_i^x, t_i^y, t_i^z)\} T={ti=(tix,tiy,tiz)} 作为离散的原始图,其中 t i x , t i y , t i z t_i^x, t_i^y, t_i^z tix,tiy,tiz 是第 i i i 个三元组中的思维单元,并且在 t i x t_i^x tix 与 t i y t_i^y tiy 之间存在一条边 e i x y e_i^{xy} eixy,在 t i y t_i^y tiy 与 t i z t_i^z tiz 之间存在一条边 e i y z e_i^{yz} eiyz。
随后,ECC 会将指代相同指称的节点进行聚类,以实现指代消解(coreference resolution)。具体地,我们将属于同一个指代聚类的所有图节点替换为该聚类中最具代表性的指称。通过采用这一技术,我们的模型能够构建更稠密的思维图谱,并增强其演绎推理能力。详细算法如算法 1 所示。
在 GoT 的构建过程中,于 rationale 生成阶段,输入文本由拼接的 question、context 和 choices 构成。在多模态 GoT 中,会将图像描述(image caption)(Lu et al., 2022)附加到输入文本中,以便 GoT 融合图像信息。在答案推理阶段,来自 rationale 生成阶段的预测 rationale 会进一步与输入文本拼接,用于相应的 GoT 构建。
在我们对 ECC 过程的实现中,受(Chen and Yang, 2021)启发,我们利用开放式信息抽取(OpenIE)系统²(Angeli et al., 2015)来提取主谓宾三元组作为 thought unit 节点。我们使用 Stanford CoreNLP 系统(Manning et al., 2014)对提取出的节点进行指代消解。构建出的 thought graph 记作 G(N, E),其中 N 表示由 OpenIE 提取的节点,E 表示邻接矩阵。矩阵的行和列对应于图中的节点,如果两个节点之间存在边,则对应的矩阵元素为 1;否则为 0。
2.2 GoT 编码与融合
GoT 推理使用不同的编码器对每种模态的输入数据进行编码。thought graph 使用图注意力网络进行编码,输入文本使用 Transformer 编码器进行编码。在多模态 GoT 推理中,图像则通过额外的视觉编码器进行编码。
2.2.1 基础编码器
文本编码器 为了表示文本,我们使用 Transformer 编码器(例如 T5(Raffel et al., 2020a))对输入文本进行编码。给定输入句子 S = w 0 , … , w l S = { w_0, \dots, w_l } S=w0,…,wl,我们从 Transformer 编码器的最后一层提取隐藏状态,获得文本表示 H T H^T HT
H T = { h 0 , h 1 , … , h l } = E n c o d e r t e x t ( S ) ( 1 ) H^T = \{ h_0, h_1, \dots, h_l \} = \mathbf{Encoder}_{\mathrm{text}}(S) \quad(1) HT={h0,h1,…,hl}=Encodertext(S)(1)
其中 $h_i$ 是 token 的隐藏表示,$l$ 表示文本输入的长度。
视觉编码器(可选) 对于包含视觉模态的多模态推理,遵循(Zhang et al., 2023),我们使用现成的视觉特征提取模型作为视觉编码器 E n c o d e r _ v i s i o n \mathbf{Encoder}\_{\mathrm{vision}} Encoder_vision 对图像 I I I 提取 patch 级别的特征,然后通过一个可训练的投影矩阵 W I W_I WI 将提取到的特征投影为与 H T H^T HT 形状相同的视觉表示 H I H^I HI
H I = W I E n c o d e r v i s i o n ( I ) ( 2 ) H^I = \mathbf{W_I} \mathbf{Encoder}_{\mathrm{vision}}(I) \quad(2) HI=WIEncodervision(I)(2)
2.2.2 GoT 编码器
节点嵌入 我们首先使用特殊 token \<s>
和 \</s>
来突出显示每个 thought graph 节点。具体来说,对于包含 j 个节点的节点集合 N = { n 0 , . . . n j } \mathcal { N } = \{ n _ { 0 } , . . . n _ { j } \} N={n0,...nj},我们将每个节点构造成输入 p p p,然后将 p p p 输入到相同的文本编码器中,并使用特殊 token <s>
的输出表示作为初始的节点表示。形式化地表示为:
p = [ < s > , n 0 , < / s > , . . . , l t s > , n j , < / s > ] ( 3 ) p = [ < \! \mathsf { s } \! > , n _ { 0 } , < \! / \! \mathsf { s } \! > , . . . , \mathsf { lt s } \! > , n _ { j } ,\ < \! / \! \mathsf { s } \! > ]\quad(3) p=[<s>,n0,</s>,...,lts>,nj, </s>](3)
[ h 0 s , h 0 n , h 0 e , . . . , h j s , h j n , h j e ] = E n c o d e r t e x t ( p ) ( 4 ) [ h _ { 0 } ^ { s } , h _ { 0 } ^ { n } , h _ { 0 } ^ { e } , . . . , h _ { j } ^ { s } , h _ { j } ^ { n } , h _ { j } ^ { e } ] = \mathbf { E n c o d e r } _ { \mathrm { t e x t } } ( p )\quad(4) [h0s,h0n,h0e,...,hjs,hjn,hje]=Encodertext(p)(4)
其中, h i s h _ { i } ^ { s } his 和 h i e ∈ R D h _ { i } ^ { e } \in \mathbb { R } ^ { D } hie∈RD 分别是节点 n i n_i ni 的 \<s>
和 \</s>
的表示, D D D 是节点嵌入的维度,而 h i n = { h i , 1 n , . . . , h i , m n } h _ { i } ^ { n } =\{ h _ { i , 1 } ^ { n } , . . . , h _ { i , m } ^ { n } \} hin={hi,1n,...,hi,mn} 是由 m m m 个 token 构成的节点 n i n_i ni 的表示。我们使用 h i s h^s_i his 作为节点 n i n_i ni 的节点表示。
温馨提示:
阅读全文请访问"AI深语解构" GoT:超越思维链:语言模型中的有效思维图推理