林世平,陈 璐,陈开志,吴运兵,廖祥文
(福州大学数学与计算机科学学院, 福建 福州 350108)
机器阅读理解任务的目标是让机器阅读给定的原文和问题,得到正确的答案[1],现有研究工作可以分为两类. 1) 基于传统特征工程的方法. 依赖于人工特征,使用问题构建出相应的词袋向量,再通过滑窗算法计算出词袋向量的重叠分数用于评定答案[2],同时利用词距特征[2]以及综合多个不同大小的滑窗结果[3]来改进性能;或者通过任务特化的目标函数,训练出综合特征的隐变量模型来计算出答案的概率分布[4]. 但是,人工特征的定义会消耗大量的人力、 物力以及时间,并且得到的特征向量鲁棒性不够强. 2) 基于深度学习的方法. 将文本中的每个单词映射成向量形式,采用深度神经网络来获取有连续性的文本表示,并通过注意力机制的方式来使文章的表示能够考虑问题,再使用得到的表示向量算出答案的概率分布[5],最后在这个基础上通过双向注意力流[6]、 自注意力[7]等方式来考虑更多的信息. 基于深度学习的方法能获得连续并考虑上下文的特征,但是目前的工作大多数使用循环神经网络,在单词信息逐层传递的过程中,可能会丢失文本的整体信息,并且拼接上下文内容可能导致失去部分上下文信息.
有鉴于此,本研究提出基于时间卷积网络的机器阅读理解模型. 模型使用时间卷积网络来将问题和文章的每个单词表示融入上下文信息,使问题和文章表示能进一步地融合上下文,获得更加完整的信息.
在基于传统特征工程的一般方法中,模型通过提炼问题、 候选答案和相关文档中的词汇、 句法、 语义等特征进行文本的相似度匹配以获取答案. 文献[2]提出了基于词袋滑窗的方法和考虑了长范围依赖的基于词距的方法,都使用了简单的词汇特征. 此后,文献[3]通过设置不同大小的窗口长度来捕捉文章和问题之间更全面的相关信息,从而改进了基于词袋滑窗的方法. 然而,简单的滑窗模型并不能很好地回答拥有多个支持句(为问题提供回答线索的句子)的问题. 文献[4]使用了隐变量模型来选取出问题句的候选支持句,并额外考虑了话语关系特征.
虽然在一些简单的机器阅读理解任务中,基于传统特征工程的方法能够取得较为优秀的效果,但是依旧存在许多问题无法得到解决. 比如,传统特征难以考虑到表达的多样性问题. 大多数特征工程的方法使用窗口进行匹配,很难解决多句子间的长距离依赖问题. 同时,由于窗口和n-gram固定长度的特性,不是一个最有效的语义单元,故可能存在语义缺失或者噪声干扰等问题.
相较基于传统特征的方法,在深度神经网络中,语义单元被表示为连续的语义空间上的向量,这样能有效解决语义稀疏性的问题. 因此,近年来有很多基于深度神经网络的机器阅读理解模型被提出. 主流的想法是通过循环神经网络编码文本,利用注意力机制来进行问题和文章的交互,再利用循环神经网络获得答案. 文献[5]提出一个Match-LSTM模型来同时编码问题和文章,模型使用注意力机制计算文章对问题的注意力,生成文章对问题的交互向量并与文章表示拼接.
为了更好地进行文章和问题的交互,在注意力改进方面,最早的思路是堆叠注意力,文献[6]提出的双向注意力流方法不仅计算了文章对问题的交互向量,同时也计算了问题对文章的交互向量来提高交互程度. 而后,出现了自我匹配的注意力,文献[7]设计了一个门限注意力和自匹配注意力机制,过滤无关信息并对文章和问题一起进行编码.
在其他特征增加和融合方面,文献[8]采用一个细粒度的门限机制来对单词级和字符级的特征进行融合. 文献[9]设计出使用时间步模拟多步推理并综合每一步的结果得到答案的模型. 文献[10]通过卷积神经网络来统一处理所有匹配矩阵,同时综合考虑选项与篇章及问题的匹配,来得到最终答案.
如今基于深度学习的方法在机器阅读理解任务上取得了不错的效果,但是大多数此类方法使用循环神经网络,缺乏有效的上下文信息融合方式并无法考虑整体信息,因此对表现产生了影响.
一般阅读理解需要给出一篇文章来用于阅读,之后根据文章内容提出问题来让读者做答,所以问题的形式化定义如下:给定一篇文章P={p1,p2, … ,pn, … ,pT},pn为文章文本中的单词, 1 ≤n≤T; 一个对应的问题Q={q1,q2, … ,qm, … ,qu},qm为问题文本中的单词, 1 ≤m≤u;T和u分别为文章和问题的长度;目标是利用模型得到答案的上边界abegin和下边界aend, 其中1 ≤abegin≤aend≤T,最终得到答案A= {pabegin,pabegin+1, … ,paend}.
图1 基于时间卷积网络的机器阅读理解模型 Fig.1 The model of machine read comprehension based on temporal convolutional network
为了更好地考虑文本的整体信息,在多个阶段采用时间卷积网络[11]来对问题和文章进行上下文编码,并使用注意力机制来交互,最后使用多层GRU[12]来预测答案,同时综合所有时间步的结果来给出最终答案,具体模型结构如图 1 所示.
为了考虑不可回答的问题,将字符串NULL加入文章的尾部,无法回答的问题答案边界指针指向这个标记. 本研究的模型主要包含以下 5 个模块:
1) 基于GloVe的词嵌入模块. 将输入的文本中每个单词映射到词嵌入,并将附加的特征拼接在词嵌入末尾.
2) 基于时间卷积网络的上下文编码模块. 获取词嵌入模块得到的单词离散表示,将表示加入上下文信息.
3) 基于注意力机制的交互模块. 使用注意力机制将问题和文章的上下文表示进行交互,使文章表示能够考虑问题,之后将文章本身进行交互.
4) 基于多层GRU的答案预测模块. 根据问题表示和考虑过问题的文章表示来预测文章中每个单词是答案边界的概率.
5) 分类器模块. 用于判断问题是否无法回答.
2.2.1 基于GloVe的词嵌入模块
基于GloVe[13]的词嵌入模块主要对每个单词进行离散地编码将单词映射成数值型的向量,并加入单词的额外特征. 首先,采用预训练词嵌入GloVe分别将问题和文章中的每个单词映射成300维的向量. 之后使用拼接的方式加入额外的特征,额外特征如表1所示.
表1 额外特征
最后,使用两个独立的双层逐位置前向网络[9]将问题和文章编码映射成相同的维度. 这一层的输出是问题编码矩阵Q∈Rd×u和文章编码矩阵P∈Rd×T,d是映射后的维度.
2.2.2 基于时间卷积网络的上下文编码模块
对于一个文本来说,一个单词与前后文本的关系包含了大量的特征,有效利用这些特征能更好地提高模型的性能. 而时间卷积网络(TCN)被证明在不少序列建模任务上相比LSTM有更好的表现.
图2 无因果的时间卷积网络层次结构Fig.2 The structure of non-causal temporal convolutional network
因此在词嵌入模块的输出得到了拼接好的矩阵P和Q后,在上下文编码模块中,使用了2个相连的时间卷积网络对问题和文章的上下文信息进行编码,并在每一层的输入拼接上1个600维的CoVe[14]向量. 普通的时间卷积网络采用因果卷积,即当前状态的输出仅与之前状态的输入有关,而不考虑之后的输入. 因为机器阅读理解任务已经给出完整的文本,所以采用无因果的时间卷积网络,即当前状态与上文和下文的状态都相关,如图2所示.
输入是问题和文章词嵌入的序列,每一层使用2个相连的1维空洞卷积网络,每层之间采用残差的方法连接. 卷积核大小为3,即输出根据当前状态,以及之前和之后的各1个时间步的状态决定. 空洞卷积网络根据空洞值s决定卷积核的间隔大小,第1层的空洞值为1,即一般的1维卷积网络,之后的每一层使用的卷积层的空洞值逐渐增加. 随着空洞值的增加,每个单词表示能够考虑更广泛的信息. 同时卷积网络通过加权和的方式来汇总文本信息,高层时间卷积网络表示获得的文本信息更有整体性,而且卷积网络的卷积核能更自然地融合上下文信息.
两个相连的时间卷积网络在问题和文章之间共享参数,下层时间卷积网络的输出作为上层时间卷积网络的输入,在各层输出分别得到文章的上下文表示HP和HP′,以及问题的上下文表示HQ和HQ′. 其中‖是两个向量的拼接运算.
2.2.3 基于注意力机制的交互模块
从上下文编码模块分别获得了问题和文章独立的上下文表示,在交互模块中将问题和文章表示进行交互来考虑问题信息. 交互模块使用注意力机制来考虑问题信息,参与计算的问题和文章表示是GloVe、 CoVe,两层时间卷积网络输出的拼接分别得到问题和文章的表示为DQ和DP,采用点乘的方式来计算交互矩阵,并对交互矩阵使用逐行的 softmax 函数. 具体表达式如下所示:
G=(h(DP))Th(DQ)
(1)
R=softmax(G)
(2)
之后将R与问题表示点乘,并与文章的上下文表示进行拼接得到考虑问题的文章表示CP. 将获得的考虑问题的文章表示传入一个新的时间卷积网络来融入上下文信息,可得:
UP=TCN(CP)
(3)
同时,采用相似的方式对文章表示进行自注意力计算, 获得考虑本身信息之间关系的文章表示CP′. 将拼接的考虑问题和考虑自身的文章表示传入时间卷积网络,得到下面表达式:
(4)
2.2.4 基于多层GRU 的答案预测模块
在答案预测模块中,使用SAN模型[9]的思路,采用多层GRU网络来模拟多轮推理. 首先使用时间卷积网络获得问题的上下文表示:
(5)
(6)
最终答案的边界概率由所有时间步平均得到:
(7)
其中:K为时间步的长度. 在训练的时候,对每个时间步随机应用dropout使部分时间步不影响答案预测.
2.2.5 分类器模块
加入一个分类器更好地区分问题是否可答. 类似答案预测模块,不可回答的概率fU通过初始状态S0以及另一个文章表示加权和m0拼接起来得到:
(8)
预测答案将根据不可回答的概率与设定的阈值进行比较,当概率大于阈值时,判断问题为无法回答. 当概率小于阈值的时候,选择边界概率最高的单词作为答案的开始和结束边界.
为了同时训练出预测答案的模块和分类器,将答案预测和分类器的损失结合在一起,损失L主要由片段预测损失Lspan和分类器损失Lclassifier组成:
L=Lspan+Lclassifier
(9)
答案预测损失由正确答案的开始边界概率fBg和结束边界概率fEg获得, 其表达式如下:
Lspan=-(log2fBg+log2fEg)
(10)
分类器损失与是否无法回答的概率fU相关, 表达式为:
Lclassifier=-(ylnfU+(1-y)ln(1-fU))
(11)
其中:y∈{0, 1},如果问题无法回答则y=1,问题可答则y=0.
本研究使用SQuAD2.0[15]数据集,其由SQuAD1.0[16]数据集中选出的问题-答案对以及新制定的无法回答问题组成. 这些无法回答的问题与可回答问题相似,但是无法使用文章回答. 训练集中可回答样例个数为86 821,无法回答的样例个数为43 498;验证集中可回答样例个数为5 928,无法回答的样例个数为5 945.
实验中,学习率为0.02,优化器算法为Adamax,dropout值为 0.1,GRU时间步长度为10,GRU隐藏层大小为128,时间卷积网络层数为2层,时间卷积网络隐藏层大小为256,时间卷积网络卷积核大小为3,第n层的卷积网络空洞值为2n-1.
采用的评估指标有两种,分别为精确匹配(EM)值和F1值.
其中: 正确答案为strgold,而模型预测出的答案为strpred;wg为正确答案中的单词数量;wp为预测出的答案的单词数量,wc为正确答案和预测出答案中单词的重合数量.
本研究选取以下模型作为基准实验
BNA[15]. 该模型采用双向注意力结构,并通过加入偏差的方式来生成问题无法回答的概率,最后将无法回答的概率与答案边界的概率比较来判断是否可以回答.
DOC[15]. 流水线型的问答模型,先提取出单个段落之后,再将其传入模型进行预测.
R.M-Reader[17]. 采用重注意力机制来进行多轮推理的模型,重复问题对文章的注意力和自注意力过程以模拟多步推理.
R.M-Reader+Verifier[17]. 使用重注意力机制并添加问题是否可答的验证器的模型,即在R.M-Reader上增加一个分类器用于判断问题是否可以回答.
Joint SAN[18]. 使用双向LSTM编码,再使用GRU的多个时间步进行多轮推理的模型.
U-Net[19]. 该模型加入整体结点将问题和文章拼接来学习问题和文章的整体信息,并将其用于答案预测及是否可答分类.
表2 对比实验结果
Tab.2 Compare experimental result (%)
模型评分结果EMF1BNA59.862.6DocQA61.964.8R.M-Reader66.969.1R.M-Reader+Verifier68.571.5Joint SAN69.372.2U-Net70.374.0本研究模型76.982.1
注:表中黑色数字表示最优结果,下同.
为了验证模型在机器阅读理解任务的有效性,在训练集上训练且在验证集中评定结果. 为了证明本研究实验的合理性,把该实验与现有的机器阅读理解方法进行比较,结果如表2所示. 可以观察到模型的表现相较于基准实验在EM和F1值上分别提高了6.6%和8.1%. 所以,相较于基准实验的模型,本研究的模型取得了较好的效果,由此验证了时间卷积网络的有效性.
在其他基准实验中,使用的是LSTM与GRU等循环神经网络来编码上下文信息,而该模型使用的是时间卷积网络. 相比于SQuAD2.0发布时使用的基准模型BNA和DocQA,在EM值上分别提升了17.1%和14.9%,在F1 值上分别提升了19.6%和17.3%. 而与R.M-Reader+Verifier模型采用多次注意力迭代模拟推理相比,该模型采用的是多层GRU,性能在EM和F1值上分别提升了8.4%和10.6%. 相较于使用LSTM编码上下文信息的Joint SAN模 型,在EM和F1值上获得了7.6%和9.9%的提升. 在U-Net模型中,使用一个结点来考虑问题和文章共同的整体信息,而该模型运用时间卷积网络的特性来考虑整体信息,能更全面地考虑整体信息,在EM和F1值的表现提升了6.6%和8.1%.
3.5.2 针对时间卷积网络的对比实验
为了观察时间卷积网络层数对性能的影响,分别对不同层数的时间卷积网络进行实验,结果如表3所示. 从表3可以发现,当时间卷积网络层数为2层的时候,表现比其他层数的时间卷积网络更好. 同时,为了更细致地了解时间卷积网络在不同类型问题上的表现,进行了时间卷积网络和其他循环神经网络的对比实验. 在其他网络类型的实验中,用对应的网络来替换所有的时间卷积网络, 结果如表4所示. 从表4观察到,本研究模型主要在不可回答问题上有优于循环神经网络的表现,而在可回答问题上的性能稍有不足. 分析认为,时间卷积网络相比于LSTM和GRU虽然可能在考虑不相邻文本之间关系有所不足,但是更能保留文本的整体信息,有更准确的文章整体信息能更好地判断一个问题是否无法回答,所以在是否可回答的判断上,比LSTM和GRU表现优秀,这使得最终的总体结果能优于LSTM和GRU.
表3 不同层数的实验结果
表4 不同问题类型实验结果
本研究提出一个基于时间卷积网络的机器阅读理解方法,采用了时间卷积网络来编码问题和文章表示,使得问题和文章表示带有上下文信息并更好地考虑文本的整体信息. 通过与基准实验的对比表明,所提方法能够更有效地考虑文本的整体信息,证明了该方法的有效性. 但是该方法没有考虑到文章对问题表示的影响,未来将通过注意力机制的方式引入文章对问题的影响,并使用多种注意力来进行研究.