基于BERT_Att的机器阅读理解模型
2023-04-07吴燕婷
王 红 邸 帅 吴燕婷
(中国民航大学计算机科学与技术学院 天津 300300)
0 引 言
机器阅读理解(Machine Reading Comprehension,MRC)是让机器阅读并理解文本,进而对于给出的问题进行回答的技术[1]。学术界中,通过机器阅读理解来评估机器的理解能力是一项持久而又富有挑战的自然语言处理问题。工业界中,机器阅读理解是譬如智能问答、搜索等任务的关键技术。当机器具备相当水平的理解能力时,机器将便捷精准地从海量碎片化的信息流中获取人类所需的知识[2]。
传统的机器阅读理解模型大多采用基于规则的方法。Hirschman等[3]开发了Deep Read阅读理解系统,通过使用词袋法来表示句子信息并且借鉴了信息抽取的方法。Riloff等[4]通过启发式规则开发了一个基于规则的阅读理解系统Quarc,通过采用设定的规则来寻找文本和问题之间的词汇和语义线索。然而此系统针对不同的问题需要手工设定不同的规则,耗时费力。尽管在一些较为简单的数据集中,基于规则的方法可以取得一定的效果,但是,基于规则的方法过于依赖人工[5],系统的工程成本较高且很大程度上依赖现有的自然语言处理工具,如依存句法分析或是语义标注工具[6],较难获取到机器阅读理解任务所需的深层语义特征。同时,由于训练此法的数据集本身的局限性,导致其泛化能力大打折扣。此外,此法往往依赖于窗口进行匹配,因此难以解决句子之间的长距离依赖问题。
随着神经网络模型日趋成熟,研究者们将循环神经网络(Recurrent Neural Network,RNN)[7]、卷积神经网络(Convolutional Neural Networks,CNN)[8]、注意力机制等应用于机器阅读理解任务中。Yu等[9]首次提出采用二元CNN生成文本序列和问题序列的分布式语义表示,但是长距离依赖问题仍未有效解决。Hermann等[10]率先将注意力机制应用于机器阅读理解任务中,效果超越同期方法,但是未解决指代消解以及所采用的单向注意力机制未充分获取文本和问题之间的关联等问题。随着注意力机制的发展,Wang等[11]提出的Match-LSTM模型、Seo等[12]提出的BiDAF模型、谷歌提出的QANet[13]模型均结合使用了各类的注意力机制,较好地解决了文本序列与问题序列的语义融合问题,但是仍然解决不了一词多义等问题。随着谷歌BERT[14]的提出,预训练的语言模型极大地促进了机器阅读理解的发展。由于通过大规模的预训练样本进行训练,可以捕获更深层次的语义特征与句间关系,较好地提高了机器阅读理解的模型性能[15-16]。
基于以上分析,本文将预训练的BERT模型、注意力机制和自注意力机制相结合,针对机器阅读理解中的问答式任务,提出基于BERT_Att的机器阅读理解模型,旨在解决当前机器阅读理解模型中存在的上下文语义融合不够充分以及缺乏整体信息利用等问题。
1 基于BERT_Att的机器阅读理解模型
本文所构建的机器阅读理解模型BERT_Att自下而上共分为五个层次,模型框架如图1所示。
图1 基于BERT_Att的机器阅读理解模型框架
(1) 嵌入层。采用BERT将文本序列和问题序列映射进高维稠密的向量空间。
(2) 上下文编码层。采用Bi-LSTM针对文本序列和问题序列的向量分别进行编码,提取上下文信息。
(3) 注意力交互层。采用文本对问题和问题对文本的双向注意力机制对文本和问题进行语义融合,进一步采用自注意力机制突出整体信息的表达。
(4) 解析层。采用Bi-LSTM捕获伴随问题感知的文本中词与词之间的交互关系。
(5) 答案输出层。采用Softmax计算答案开始和结束位置的概率分布。
1.1 嵌入层
模型的输入为问题序列Q={q1,q2,…,qJ}和上下文的文本序列P={p1,p2,…,pT},嵌入层的作用是将问题序列和文本序列映射到高维稠密的向量空间中。BERT为谷歌2018年提出的预训练模型,模型框架如图2所示。其中:E代表输入的向量表示;T代表输出的向量表示;Trm为Transformer特征抽取器(BERT的BASE版本具有12层的Transformer;Embedding的维度为768;BERT的LARGE版本有24层的Transformer,Embedding的维度为1 024。本文使用的是BERT的BASE版本)。
图2 BERT模型框架
事实上在BERT之前,出现过GPT(Generative Pre-Training)预训练模型与ELMO(Embedding from Language Models)预训练模型。这三个模型均可以解决Word2Vec或者Glove这类静态模型遗留的一词多义问题(例如:“一天一苹果,医生远离我”和“苹果新款手机发布会”,两句中的“苹果”如果使用Word2Vec或者Glove将会生成完全相同的向量)。但是,由于ELMO使用LSTM而不是Transformer作为特征抽取,导致其获取特征能力偏弱。而GPT虽然使用了Transformer抽取特征,但是使用的是单向自回归的语言模型,在上下文特征的获取方面存在短板。反观BERT模型,其具有以下优势:
(1) 通过使用Masked双向语言模型,可以较好地抽取上下文相关的特征。
(2) 通过添加Next Sentence Prediction任务,可以处理句子相关的任务。
(3) 使用Transformer来抽取特征。
基于以上分析,本文采用BERT将Q和P分别映射进d维的向量空间中。该层的输出为:
文本表征矩阵:Ep∈Rd×T
问题表征矩阵:Eq∈Rd×J
式中:T表示的是文本序列的最大长度;J表示的是问题序列的最大长度;d则为向量的维度,d=768。
1.2 上下文编码层
为了进一步获取任务所需要的上下文信息。在本文模型中,上下文编码层以及解析层均采用了Bi-LSTM网络。Bi-LSTM是由LSTM(Long Short-Term Memory)网络发展而来。LSTM的单个单元的内部构造如图3所示。其是由输入门i、输出门o、遗忘门f、记忆单元ct所组成。LSTM网络可以有效解决训练过程中的梯度爆炸或者梯度消失的问题。
图3 LSTM单元内部构造
LSTM网络的计算过程如下:
X=[et,ht-1]
(1)
it=σ(Wi·X+bi)
(2)
ot=σ(Wo·X+bo)
(3)
ft=σ(Wf·X+bf)
(4)
ct=ft⊙ct-1+it⊙tanh(Wc·X+bc)
(5)
ht=ot⊙tanh(ct)
(6)
式中:⊙为点乘运算;et为文本序列(或问题序列)的t时刻向量表示;ht为第t时刻的隐藏层状态向量;σ为代表网络的激活函数为Sigmoid;W为隐藏层向量的权重矩阵;b为偏置向量;W和b均为网络的可训练参数。
尽管LSTM可以获取上文的信息,但是无法获取下文的信息,因此本文采用Bi-LSTM来对上下文信息进行捕获。Bi-LSTM网络如图4所示。
图4 Bi-LSTM模型框架
1.3 注意力交互层
注意力(Attention)机制最早应用于视觉图像领域,自然语言处理领域最早应用注意力机制的则是Bahdanau等[17]所做的机器翻译任务。注意力机制可以计算单词的权重,此权重可以理解为对任务的重要性大小。此层的目的是将问题中的词与文本中的词进行交互与融合,以突出模型所需要的重点部分。详细过程如下:
首先,本文从两个方向上计算注意力。计算文本与问题相似度矩阵S,计算公式如下:
S=α(H:t,U:t)∈RT×J
(7)
文本对问题的注意力表现为文本中的词与问题中的词的相关性,计算公式如下:
at=softmax(St:)
(9)
问题对文本的注意力表现为与问题最相关的文本序列的权重,计算公式如下:
b=softmax(maxcol(S))
(10)
(13)
式中:β是一个可被训练的多层感知机函数,这是其中一种效果较好的拼接方式。
最后,由于自注意力机制有助于学习文本自身内部信息的表达,因此本文模型又采用了自注意力机制即等效为连带着问题再遍历一遍上下文,计算公式如下:
uit=tanh(Wwgit+bw)
(16)
式中:git为包含问题感知的向量G的第i列中第t个位置的向量;uw为可训练参数矩阵。由此输出通过自注意力机制得到的向量G′∈R8d×T。
1.4 解析层
此层采用Bi-LSTM,用于捕获伴随问题感知的上下文序列中词之间的交互信息。具体过程为上层的输出G′先通过一层Bi-LSTM(每个方向上的输出维度为d)产生一个矩阵M1∈R2d×T,再将M1送入另外一层Bi-LSTM得到矩阵M2∈R2d×T。由上文分析可知,M1和M2均包含文本和问题的上下文感知信息。
1.5 答案生成层
此层通过定位答案起始位置和结束位置来获取最终的答案。通过式(17)和式(18)分别计算出答案在整个文本中起始位置和结束位置的概率分布。
2 实验与结果分析
2.1 数据集及评价指标
机器阅读理解的数据集中,英文的数据集有SQuAD[18]、MS MARCO[19]等,中文的有DuReader[20]、DRCD[21]等。本文所使用的数据集为百度2017年发表的中文机器阅读理解的数据集DuReader,基于TensorFlow1.10.0深度学习框架,采用NVIDIA GTX 1080显卡,16 GB内存的PC进行实验。依据问题类型划分,DuReader分为实体类(Entity)、描述类(Description)和是非类(YesNo)问题,此外,针对每一类问题,再次可以细分为事实类(Fact)和观点类(Opinion)。相比于其他的机器阅读理解数据集,DuReader具有以下特点:(1) 文本和问题均由百度知道与百度搜索引擎产生,符合现实的中文应用场景;(2) DuReader涵盖了之前较少涉及的观点类与是非类数据,数据类型多样;(3) 数据集包含的文本以及问题数量充足,每个文本的平均长度也长于以往的数据集。
为了评估模型性能,本文所采用的评价指标为BLEU- 4和ROUGE-L。计算公式如下:
式中:ly1为标准答案的长度;ly2为输出答案的长度;Pn表示N-gram的精度;N取4,Wn为1/N,BP为惩罚项,惩罚长于标准答案的结果。
式中:y1为标准答案;y2为输出答案;LCS(·,·)为求最长公共子序列长度;β一般设置较大的值,此处β取1.2。
2.2 模型训练及参数
模型训练的损失函数选择交叉熵损失函数,即为:
模型在训练过程中,由于DuReader数据量较大,文本一般较长,可能会影响模型的收敛,因此本文为了能让模型更好地处理,在训练时选取与正确答案重叠最多的段落,测试时选取与问题重叠最多的段落,并对数据集中的噪音(如乱码与URL等)进行清洗,进一步对是非类问题进行适当的筛选。模型的主要超参数设置如表1所示。
表1 主要超参数设置
模型在训练过程中使用Adam优化算法进行优化,加快模型的收敛速度。
2.3 实验结果分析
实验对比分析了机器阅读理解任务中主流的几个模型,实验结果如表2所示。
表2 不同模型实验对比(%)
通过对比模型的分析可知,总体而言,由于Match-LSTM模型在编码的部分使用的是LSTM网络,因此上下文信息的挖掘有所欠缺,而BiDAF模型的嵌入层无法解决一词多义问题,并且在注意力层可以进一步挖掘文本和问题的关联,单纯BERT模型正确率有所提升,证明了预训练有助于提升模型的性能表现。而本文模型BERT_Att性能表现较好,为了进一步验证模型中各个模块对总体性能的影响,本文进行了模块对比实验(表3中的“√”表示此模块沿用本文模型中所采用的),结果如表3所示。
表3 不同模块实验对比
通过分析表3可得:
(1) 在嵌入层中,相比于使用Word2vec,采用大规模语料预训练的BERT模型可以提升模型的整体性能。
(2) 在上下文编码层中,相比于使用只能获取上文信息的LSTM网络,采用能捕获上下文信息的Bi-LSTM网络更有助于提升模型的整体性能。
(3) 在交互层中,通过采用问题对文本的注意力和文本对问题的注意力并且联合自注意力机制更能有效地提高模型的整体性能。
此外,为了进一步研究DuReader中两个不同来源的数据子集对性能的影响,本文分别做了这两个子集的实验,结果如图5所示。
图5 百度搜索和百度知道实验对比
由图5分析可得,本文的阅读理解模型在百度知道上的性能要优于在百度搜索上的。这是由于百度知道是相对固定的问答数据,而百度搜索所构造的数据则类似于开放世界领域的数据,表明了针对机器阅读理解任务而言,开放领域数据的模型建模要更为复杂。
最后,为了分析不同的问题类型对模型性能的影响,本文对数据集中三类问题进行实验,结果如表4和表5所示。
表4 三类问题实验对比(%)
表5 三类问题结果示例
由表4可知,描述类问题的性能表现最好,实体类问题次之,是非类问题最差。再结合表5的结果示例可以得出,从数据集的角度来看,描述类问题的文本通常是相同中心思想的文段,它的正确答案往往也是一段话,更有助于模型进行归纳总结;实体类问题的文本则相对分散,正确答案也较为简短,需要模型对上下文进行较为精确的理解后进行简短归纳方可得出,相比于描述类问题较难学习;然而,是非类问题的文本,有的对于模型而言是“相互矛盾”的,有的则是过于简短的文本,比如只是简单的是否,因此模型更难学习。
3 结 语
本文提出的基于BERT、注意力机制与自注意力机制的机器阅读理解模型BERT_Att,通过在公共数据集DuReader上的实验结果表明,其BLEU- 4值和ROUGE-L值分别提升了3.2百分点与2.1百分点,较为有效地解决了机器阅读理解任务中上下文语义信息融合不充分以及整体信息利用缺乏的问题。未来可以引入外部知识库如知识图谱使模型更加适应开放领域数据或者领域内数据,可以考虑推理算法来突破是非类问题的性能瓶颈,并通过对抗训练与迁移学习提高模型在跨数据集上的性能。