融合序列和图结构的机器阅读理解
2021-05-27任建坤袁浩瑞
陈 峥,任建坤,袁浩瑞
(电子科技大学 信息与软件工程学院,四川 成都 610054)
0 概述
让机器能够像人一样阅读文本,并基于所获取的信息回答问题,一直以来都是自然语言处理领域最具挑战性的任务之一。传统的机器阅读理解是分词、词性标注、命名实体识别、句法分析、指代消解等一系列技术所集成在一起的一套复杂系统。但是随着深度神经网络技术的发展,特别是大规模预训练模型的应用,当前的机器阅读理解转向了以深度神经网络为基础的端到端学习,在大量已标注的数据集上进行监督学习,从而让深度神经网络模型表现出语言理解和信息抽取的能力。但是,与人能够一次性阅读完一整篇长文章然后回答问题有所不同的是,端到端的机器阅读理解模型受限于计算能力和存储能力,必须将长文切片后,基于一个个相互独立的文本片段进行阅读理解,而无法对长文本整体进行理解和记忆,是现实意义上的“管中窥豹,时见一斑”。
本文针对机器阅读理解模型无法建模长距离语义关联的问题,在传统的序列结构之上引入了图结构,来构建命名实体共现关系图,利用基于空间的图卷积神经网络提取文本中最关键的命名实体的语义嵌入表示;并与传统的采用BERT所提取的序列结构文本语义嵌入表示相融合,最终实现了一套基于片段预测的机器阅读理解模型。接下来,我们首先介绍传统的基于神经网络的阅读理解模型,分析其存在的问题;然后给出本文模型的详细构建和训练过程;最后基于SQuAD数据集构建了对比实验,展示了本文模型相对于BERT模型的性能提升,并进行了具体的分析。
1 相关研究
1.1 机器阅读理解
机器阅读理解从形式上可以分为三大类:选择题、填空题和问答题。MCTest[1]作为早期的机器阅读理解数据集,是一个多项选择题的数据集。它的文本由真实的英文儿童读物构成,每篇文章大约150~300个词。MCTest的数据量较小,仅有几百篇文章,不足以训练端到端的神经网络模型,所以当时的解决方案大多数都基于特征工程。CNNDailyMail[2]是一个完形填空数据集,它给出新闻以及对应的问题,所填空的内容为问句中缺失的关键命名实体。由于这个命名实体一定是在新闻中出现过的,所以研究者们大多把此类阅读理解问题抽象成信息抽取任务,并延续至今成为机器阅读理解的普遍技术途径。即使是SQuAD[3]等问答题数据集也不例外,大多也是从原文中抽取一个较短的文本片段作为答案。尽管如此,基于问答的机器阅读理解任务在难度上仍然远超选择和填空,对模型的语义理解能力有更高的要求,所以成为了目前研究的热点,也是本文的重点研究对象。无论CNN/Daily Mail还是SQuAD,其训练数据量都达到了100 000条以上的规模,使得在其之上训练端到端的深度神经网络模型成为可能。
人们在进行阅读理解的时候,大多尝试过一个小技巧:先阅读问题,再按照问题去原文中找答案,较早的The Attentive Reader模型[4]就是这种阅读理解方式的机器实现,它首先将问题输入LSTM[5],编码为一个向量表示,再将这个问题向量通过注意力机制融合到文章中,实现对文章的答案片段抽取。随着机器性能的提高,研究者们大多不屑于使用这种笨拙的技巧,而是希望能够对文章和问题进行综合推理从而得到答案,BiDAF模型[6]就是此类思想的实践。BiDAF实现了从问题到文章以及从文章到问题的双向注意力交互模式,从而极大地提高了模型的理解能力,甚至具备一定的复杂问题推理能力。但是BiDAF的基础模型仍然是LSTM。之后出现的QANet模型[7]采用了多层卷积配合自注意力机制进行编码,并且还使用了两层的高速网络(highway network)进一步增强了其复杂推理能力,是在大规模预训练模型出现之前最优秀的阅读理解模型。
Transformer结构[8]和以BERT[9]为代表的大规模预训练模型的出现彻底改变了自然语言处理研究的面貌,机器阅读理解也不例外。Transformer的自注意力机制比LSTM的记忆/遗忘机制更能够建模长程依赖。而大规模预训练模型可以通过在海量文本上的无监督学习,构建起初步的语义认知,从而在下游任务上只需要进行很小的数据量学习,就能够获得出色的语义理解和推理能力。其中规模最大的GPT-3[10]甚至能够一定程度上进行小样本/零样本的机器阅读理解。我们后续的研究正是以BERT为基础模型来开展的。并且,本文研究成果理论上在其他的Transformer结构的预训练模型上也都适用。
1.2 图神经网络
深度神经网络兴起的一个重要原因是,它能够自动地从欧式空间数据中提取潜在的特征,从而把人从复杂且繁琐的特征工程中解放出来。而图神经网络则提供了对非欧空间数据的建模能力,从而进一步扩展了深度神经网络的应用范围[11]。按照其建模方式的不同,图神经网络也可以分为图卷积网络[12]、图注意力网络、图自编器、图生成网络和图时空网络,其中又以图卷积网络应用最为广泛。图卷积网络将卷积运算从传统欧式空间推广到图数据结构上,其核心思想是学习一个函数映射,使得节点可以聚合它邻居的特征,从而获得更好的嵌入表示。具体地,图卷积操作又可以分为两大类,基于谱(spectral-based)的方法[12]和基于空间(spatial-based)的方法[13]。基于谱的方法从信号处理的角度出发,将卷积定义为一个滤波器,从而实现去除图信号中的噪声信息。在基于空间的方法中,卷积操作被表示为来自邻域的特征信息的聚合,通过卷积层和池化层的交叉运行,从而抽象得到图的高级结构特征。本文所采用的图神经网络属于基于空间的图卷积网络。
近年来,图神经网络在自然语言处理任务中得到了较好的应用。自然语言处理领域常见的结构数据包括知识图谱、句法树、词共现网络、文档关系网络等,都可以利用图神经网络进行学习。其中词共现网络是指利用词共现关系所构建起来的网络,Peng[14]等人和Yao[15]等人将其应用在文本分类任务中,取得了较好的结果。本文工作正是受到了上述工作的直接启发,将词共现网络的构建方式进行改进后应用到了更复杂的阅读理解任务上。此外,Song[16]等人和Cao[17]等人也探索过基于图结构的阅读理解任务,但是他们所构建的图以段落或者文档为基本单位,主要解决的是阅读理解中的多跳语义关联问题,与本文工作有较大的差异。
2 算法模型
由于计算力和存储容量的限制,Transformer模型的长度不能无限增加。现有的预训练模型通常将这一参数设定为512。而在进行阅读理解的时候,通常需要将上下文联系在一起才能够获取文本的准确语义。关联上下文的距离很容易地就会超出Transformer长度参数的限制。针对这一问题,本文将图结构应用到了机器阅读理解中。利用图结构能够有效地建立非连续(non-consecutive)和长距离语义(long-distance semantics)的优势[17],辅助进行阅读理解任务。具体地,本文模型结构和整体工作流程如图1所示。
图1 模型整体处理流程
算法基本流程如下:将阅读理解的段落P和需要回答的问题Q合并在一起作为模型输入
;首先对其进行命名实体抽取;将所抽取的命名实体基于其共现关系构建为图;利用图卷积神经网络计算命名实体的嵌入表示;同时,也将
输入预训练模型BERT中提取嵌入表示;将通过图神经网络得到的图结构嵌入表示和通过BERT得到的序列结构嵌入表示进行特征融合;最后对融合得到的嵌入表示进行答案预测。
2.1 图结构嵌入表示的获取
本文的基本出发点是将图结构引入到机器阅读理解中,利用图结构所建立的长距离语义关联,更好地获取文本的语义信息,从而得到包含了更丰富语义信息的文本嵌入表示。
2.1.1 命名实体抽取
图结构嵌入表示获取的第一步是命名实体抽取。之所以要进行命名实体抽取,是因为命名实体对于机器阅读理解是非常重要的。在目前被广泛研究的机器阅读理解语料库中,大多数问题都是事实型问题。以SQuAD 2.0开发集中的第一篇文章“Normans”为例,其第一个段落的问题如下:
1.Q:In what country is Normandy located?
A:France
2.Q:When were the Normans in Normandy?
A:10th and 11th centuries
3.Q:From which countries did the Norse originate?
A:Denmark,Iceland and Norway
4.Q:Who was the Norse leader?
A:Rollo
5.Q:What century did the Normans first gain their separate identity?
A:10th century
6.Q:Who gave their name to Normandy in the 1000’s and 1100’s
A:No answer
7.Q:What is France a region of?
A:No answer
8.Q:Who did King Charles III swear fealty to?
A:No answer
9.Q:When did the Frankish identity emerge?
A:No answer
可以看到,上述每一个问题都包含了至少一个命名实体,而且,所有的答案也都包含了命名实体。虽然这只是一个随机选取的示例,但是也足以说明命名实体在阅读理解中的重要性。进一步地,我们进行了定量分析,在SQuAD2.0中,有96.5%的问题包含至少一个命名实体;所有答案中,同样有93.2%包含至少一个命名实体。
另一方面,命名实体是将全文语义进行串联的重要线索。仍然以文章“Normans”为例,其第一个段落如下:
TheNormans(Norman:Nourmands;French:Normands;Latin:Normanni)werethepeoplewhointhe10th and 11th centuries gave their name to Normandy,a region in France.They were descended from Norse("Norman"comes from "Norseman")raiders and pirates from Denmark,Iceland and Norway who,under their leader Rollo,agreed to swear fealty to King Charles III of West Francia.Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations,their descendants would gradually merge with the Carolingian-based cultures of West Francia.The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century,and it continued to evolve over the succeeding centuries.
可以看到,该段落的重要信息都是由命名实体所给出的,命名实体在段落的语义中占据了核心的地位。而且,命名实体存在着大量的重复,Norman和West Francia等命名实体都在相距较远的上下文中重复地出现,这给我们构造图结构以获取长距离语义带来了可能。
具体的命名实体抽取算法并不是本文的核心内容。关于命名实体抽取目前已经有了大量的研究成果。本文采用StanfordNLP项目所提供Stanza工具包[18]进行命名实体抽取。
值得一提的是,针对机器阅读理解任务的特点,本文中将命名实体的概念定义为实体类型、时间类型和数字类型的总合,比狭义的命名实体的概念略有扩大。其中实体类型即为人名、地名、组织机构名等狭义的命名实体;时间类型包含时间、日期;数字类型包含货币、百分比和一般性数值。
2.1.2 图构建
在抽取了命名实体后,将所抽取的命名实体构造为一个无向图。这个图中的顶点即为文中所有的命名实体,图中的边为命名实体之间的关联关系。在本文中,我们采用共现关系作为命名实体间的关联关系:如果两个命名实体在同一个文本片段中同时出现,则给这两个命名实体所对应的顶点上加上一条边。具体地,这里的“文本片段”有两种不同的定义方式,分别是句子和滑动窗口。
基于句子的共现关系,是指将段落以句子为单位划分成若干个不相交的文本片段,如果两个命名实体出现在同一个句子中,则认为它们之间存在共现关系。如果两个命名实体共同存在着n个句子中,则给它们之间的共现关系加上一个权重n。
基于滑动窗口的共现关系,是指以一个固定的窗口w和滑动步长s将段落划分成若干个文本片段,由于一般情况下s 我们仍然以SQuAD 2.0的文章“Normans”作为示例,构造了命名实体图,如图2所示。从图中可以看出,两种共现关系所构造的图结构有较大的区别。基于句子的共现关系由于以明确的标点符号作为分隔符,一定程度上更能够反映原文的语义。但是,由于句子的数量是确定的,有可能会导致图的稀疏性,甚至是无法构造得到一个连通图。另一方面,基于滑动窗口的共现关系更加灵活,可以根据算法的要求调整窗口和步长的大小,从而控制图的稀疏程度,同时也使得边上的权重分布更加合理。但其缺点在于没有能够利用句子这一天然的语义单元。下文会具体地对两种方法进行对比实验。 图2 命名实体图示例 在构建了命名实体图之后,就可以利用图结构无监督地学习每个节点的向量表示。研究人员提出过许多图表示学习方法,大致可以分为基于矩阵分解的方法、基于深度游走的方法和基于图神经网络的方法。具体地,本文采用基于空间的图卷积神经网络(spatial-based graph convolutional networks,SGCN)作为节点表示的学习算法。 基于空间的图卷积神经网络属于图神经网络的一种,其主要思想是基于节点的空间邻接关系来定义图卷积,从而实现类似于传统卷积神经网络的卷积运算。对于一个无向图G=(Ω,W),其中Ω表示图中节点的集合,|Ω|=m。W是一个m×m的非负矩阵,用来表示节点间的连接权重。对于其中的一个节点j,它的邻接节点集合如式(1)所示。 其中,δ>0,为边的权重阈值,可以用来控制图卷积神经网络的“稀疏程度”,从而在网络的计算开销和表示学习能力间寻找到一个平衡点。 有了邻接节点集合后,SGCN的卷积操作即为其邻接节点的加权求和,如式(2)所示。 更一般地,对于一个多层SGCN网络的第k层,拥有fk个卷积核,那么节点xj在该层的输出xk+1,j如式(3)所示。 (3) 其中,Fk,i,j是一个由邻接关系所决定的dk-1×dk-1的稀疏矩阵,也就是图卷积网络的卷积核,是该网络所需要学习的参数。Lk则是卷积神经网络上常见的池化操作,用于更好地提取特征。最终,对于每一个x,可以得到一个Eg(x)=TD的输出向量,其中D为向量的维度,是一个可以预先设置的参数。Eg则表示该向量是基于图(graph)结构的命名实体嵌入表示。 这里需要特别说明的是,对于图神经网络,一般而言,x0都会进行随机的初始化,但是为了保持图上的命名实体节点在不同的文章中的语义一致性,我们采用GloVe[19]对x0进行了初始化。而对于词表外的命名实体,我们使用全局统一的随机初始化向量。同样是为了保持语义的一致性,避免带来过大的语义偏差,我们去掉了图神经网络上常用的非线性激活函数的操作。 由于文本天然地具备序列结构,使用序列结构进行文本嵌入表示是自然语言处理和文本挖掘常用的做法。在早期的机器阅读理解模型中,最常使用的建模方法是循环神经网络及其变种,如LSTM和GRU等。随着Transformer和预训练模型的出现和普及,目前绝大多数的机器阅读理解模型都是基于BERT、XLNET、Roberta等基于自注意力机制的大规模预训练模型。不失一般性地,本文选择其中最常用的BERT作为序列结构嵌入学习模型。 BERT的输入input= BERT的输出为每个输入字符所对应的编码向量。令向量的维度为D,则整个输出可以表示为TN×D,其中N为序列的长度。那么对于序列中的每一个字符x,就可以其对应的得到向量Es(x)=TD,Es表示该向量是基于序列(sequence)结构的文本嵌入表示。 具体的表示方法则非常简单,将对应位置的嵌入表示向量相加即可,具体表示如式(4)所示。 (4) 其中,ai为需要进行嵌入表示的字符,ej为包含了该字符的命名实体。这时该字符的嵌入表示信息来自基于序列结构的嵌入表示和基于图结构的嵌入表示之和。而如果字符ai不属于任何一个命名实体,则其嵌入表示只来自于基于序列结构的文本嵌入表示。采用相加进行特征融合是参考了BERT等目前主流模型的通用做法。同时,考虑到一个命名实体ej会包含多个字符ai,分别与之相加能够更好地利用命名实体ej的语义,以及在反向传播中更好地进行学习。 特殊符号 接下来对答案进行预测。机器阅读理解的答案预测本质上是对答案片段的开始位置和结束位置进行判断。具体的做法是,将每个字符的嵌入向量输入到一个D×2的全连接层,该层的输出分别对应了该字符作为答案开始位置和结束位置的几率。最后将段落中所有字符的对应位置的几率经过一个Softmax运算,得到整体的概率,选择其中的最大值作为该段落中答案的起始和结束位置。对于段落整体语义嵌入也是同样操作,不过其输出结果为该段落包含答案的概率。最后对每个段落所抽取出的答案以该概率进行加权求和,取其中概率最大者为最终的答案。 我们采用SQuAD作为实验数据。SQuAD是公认的机器阅读理解领域的最权威的数据集。斯坦福大学NLP研究小组选取了超过500篇的维基百科文章,进行人工提问并标注答案。每个答案都是来自文章中的一个小文本片段。较早版本的SQuAD 1.1包含大约100 000个问题—答案对,而SQuAD 2.0新增了超过50 000个新的问题,其中还包含特别设计的无法回答的问题[20],从而进一步提高了阅读理解的难度。 我们采用SQuAD所提供的训练集对模型进行训练。但是由于SQuAD并没有公开其测试集的答案,所以我们只能以开发集作为实验的测试依据,这导致其测试结果与基于官方测试集所得到的测试结果有一定的出入。在下文中我们会将两个结果都同时列出,以供评估。 实验采用精准匹配(exact match,EM)和F1值作为定量评价指标。EM值计算模型输出的答案和参考答案是否完全一致,是一个相对严格的评估指标。F1值就要相对宽松一些,它在计算模型输出答案和参考答案之间按字符计算准确率和召回率,然后计算调和平均值。 我们基于Pytorch和DGL实现了本文所设计的深度神经网络算法,并且在一台8卡2080ti的服务器上进行了模型的训练。 我们采用的基础BERT模型是Google所提供的BERT-Large-Cased模型。这是一个24层、隐藏层维度1024、16头的模型,总计有约3.4亿个参数。选择Cased模型是由于在本文算法中命名实体起了相当重要的作用,而Cased模型能够更好地为命名实体进行建模。 在训练时,为了高效利用显存空间,我们将序列的长度设置为384,并且通过梯度累积将模型的batch size增加到256,从而获得更稳定的训练结果。训练采用Adam作为优化函数,学习率设定为3e-5,参数β1和β2的值分别为 β1= 0.9、β2 = 0.999。训练还采用学习率预热策略,预热的步数为1万步。另外,由于我们所设置的batch size比较大,所以还应用了线性缩放学习率的策略,以加快收敛速度。 如上文所述,我们分别基于两种图构建的方式实现了本文所提出的模型,其中滑动窗口模型采用的窗口和步长的参数分别是w=80、s=20。我们将两种模型以及作为对比的BERT模型都在训练集上训练了10个epoch,保存了每个epoch结束时的模型参数,并分别进行了测试。下文所给出的测试结果是所有10个模型中的最佳结果。为了进一步提升测试结果,我们还对两种图构建方式的20个模型进行了集成,模型集成方法采用的是最简单的相对多数投票法,即将20个答案中的得票最高的答案作为集成模型的答案。 实验结果的定量分析如表1所示。表中BERT-Large(ours)为我们基于BERT-Large所实现和测试得到的结果,BERT-Large(Google)是Google向SQuAD所提交的测试结果。由于训练过程和测试集的不同,两者略有差异。Our Model(sentence)和Our Model(sliding-window)是本文所提出的模型,分别基于句子共现关系和滑动窗口共现关系的实现,Our Model(ensemble)则是模型集成的结果。 表1 在SQuAD数据集上的实验结果 (单位:%) 从表1实验结果可以看出,本文所提出的模型相比起BERT有显著的提升,特别是经过模型集成之后,在两个数据集上都已经超过了人类的阅读理解水平。截止2020年8月,这个结果在所有的以BERT为基础的阅读理解模型中大约排名第4位,是一个非常有竞争力的结果。要特别指出的是,我们由于实验条件受限,仅仅使用了BERT-Large作为基础模型,但是该方法理论上也可以与其他的更大规模的预训练模型相结合,取得更好的结果。 具体对比基于句子共现关系和滑动窗口共现关系的两种图构建方法,在最终的效果上差距不大,基于滑动窗口共现关系的方法略微要稍好一点,我们认为这是因为其所构建的图连通性更好,度分布也更加均匀所导致的。 基于图结构的机器阅读理解能够利用图建立非连续和长距离语义关联,为了验证这一点,我们在表2中给出了文本长度对于结果的影响。我们设定了384和768两个长度阈值,分别统计针对三个长度区间内的文本的阅读理解的EM和F1值。要注意的是,这里文本长度是指文本经过BERT编码后的长度。由于BERT采用的是sub-word unit的方式进行编码,所以实际的文本长度要短得多。 表2 文本长度对于结果的影响 (单位:%) 实验结果基于SQuAD 2.0数据集。可以很明显地看到,在文本长度较短的时候,我们的方法比BERT有明显提升。我们认为,这是由于图结构能够帮助模型更好地对文本中的关键命名实体信息进行理解。随着文本长度的增加,两者差距迅速扩大。BERT随着文本的变长,表现下降得非常明显。而本文方法没有显著下降,保持在了一个相对比较高的水准上,我们认为这充分说明了图结构所学习到的长距离语义在这里起到了关键的作用。 机器阅读理解是考察机器自然语言理解能力的一项重要研究任务。由于目前计算能力和存储能力的限制,机器在进行阅读理解时仅仅能够根据一个文本片段进行理解,缺乏长距离语义关联的能力。本文将图结构和传统的序列结构结合起来,利用图结构所带来的非连续和长距离语义建模能力,提升传统序列结构文本语义理解水平。我们设计了基于命名实体的图结构来辅助构建文本语义,并设计了基于空间的图卷积神经网络来学习命名实体的语义嵌入,最后与文本语义嵌入进行融合,达到提升模型理解能力的目的。最后我们在SQuAD数据集上进行了对比实验,实验结果验证了本文算法的有效性。机器阅读理解作为一个热门研究领域,新的方法层出不穷,本文算法距离目前的最佳方法仍有差距。但是,本文算法作为一个融合型的方法,理论上可以和任何算法相容,具有良好的可用性和扩展性。2.2 基于图结构的嵌入表示
2.3 序列结构嵌入表示和获取
2.4 特征融合和答案预测
3 实验
3.1 数据
3.2 实验评估
3.3 实现细节
3.4 实验结果及分析
4 结束语