一种基于多头注意力机制和动态迭代的机器阅读理解方法与流程

文档序号:17161248发布日期:2019-03-20 00:45阅读:362来源:国知局
一种基于多头注意力机制和动态迭代的机器阅读理解方法与流程

本发明属于机器阅读理解领域,涉及一种对文章和问题进行编码,再利用双向注意力流、自注意力层和动态迭代解码器预测答案输出的方法。具体是指构建文章问题编码层、构建基于双向注意力流的循环神经网络、构建自注意力层和基于动态迭代解码器预测答案输出。



背景技术:

问题回答型阅读理解任务的主要形式是给定一定词汇量的短文和基于此短文的问题,并将答案限制为原文中的一段文本片段,需要在充分理解原文的基础上,通过一定形式的逻辑推断预测问题的答案。目前该领域的主流模型主要有match-lstm、bidaf和r-net。

wang和jiang提出的match-lstm(shuohangwangandjingjiang.2017.machinecomprehensionusingmatch-lstmandanswerpointer.inproceedingsoficlr)是较早在squad数据集上进行测试的端到端的神经网络模型,使用单向lstm进行编码,并将每个词关于问题的注意力分布和该词表示同时输入另一个lstm,最后利用指针网络预测答案。match-lstm作为早期在squad数据集上进行测试的模型,为后续优秀模型的设计提供了思路,但也存在诸多问题:模型仅计算了文章词向量对问题的单向注意力,损失了大量语义信息,在答案较长时表现不佳,精确匹配结果只有30%左右。

针对match-lstm中仅计算了单向注意力的问题,bidaf模型(minjoonseo,aniruddhakembhavi,alifarhadi,andhanannehhajishirzi.2017.bidirectionalattentionflowformachinecomprehension.inproceedingsoficlr)引入了双向注意力机制,即进行从文章到问题和从问题到文章两种注意力计算,并通过双向lstm进行语义信息的聚合。bidaf在squad1.1数据集评测中取得了优异的结果,但仍存在问题:没有类似自匹配的过程,无法很好地获取上下文的依赖关系。

为强化文章内部的信息交互,r-net模型(microsoftresearchasia.2017.r-net:machinereadingcomprehensionwithself-matchingnetworks.inproceedingsofacl)引入了自匹配网络。r-net通过自注意力机制捕捉原文内部各词之间的交互信息,同时利用门控机制更好地提取和文章有关的问题信息。r-net在squad1.1数据集评测中取得了接近人类的表现,但也存在一些问题:(1)bidaf模型和r-net模型均采用指针网络一次性预测答案位置,不一定能获得全局最优解。(2)r-net没有类似双向注意流的机制,不能充分融合文章和问题的语义信息。

针对目前主流机器阅读理解方法中存在的问题和不足,本发明受r-net模型的自匹配网络和dcn模型(caimingxiong,victorzhong,andrichardsocher.2017.dynamiccoattentionnetworksforquestionanswering.inproceedingsoficlr)的动态迭代方式的启发,提出一种新的基于多头注意力机制和动态迭代解码器预测问题答案的机器阅读理解方法,通过双向注意力流机制获取融合了问题信息的文章表示,有效减少信息损失;本发明借鉴了自匹配机制以捕捉文章自身的信息,不同的是基于多头注意力机制计算相似性矩阵,它将文章表示均分成多个部分并行化地计算各部分的注意力权重;不同于指针网络,本发明不再将模型预测作为最终结果,而是将它作为初次预测结果继续输入到模型中作为参考迭代出新一轮的输出,通过动态迭代的方式反复迭代预测答案位置,直到预测结果不再变化或迭代次数超过阈值,避免局部最优解的出现,从而提高模型的精度,为机器阅读理解任务的探索提供一种新思路。



技术实现要素:

本发明提出了一个包括编码文章和问题、循环神经网络、自注意力层和动态迭代解码器的机器阅读理解方法。如图1为机器阅读理解模型框架示意图。

本发明采用的技术方案如下:

一种基于多头注意力机制和动态迭代的机器阅读理解方法,步骤如下:

(一)对文章和问题进行编码

首先,进行语料预处理,借助分词工具spacy对每个文章和问题进行分词处理,然后构建问题和文章的嵌入层及编码层。

所述构建问题和文章的嵌入层包括字符嵌入和词嵌入两部分:

(1)字符嵌入:将单词的每个字符映射到固定向量空间;设分别代表每一个样本中单词数为n的文章和单词数为m的问题中单词的字符序列,将它们输入到双向循环神经网络中,得到最终的隐藏层状态表征单词的字符嵌入

(2)词嵌入:将每个单词映射到固定向量空间;使用预先训练好的词向量模型glove来获取每个单词的固定词嵌入将字符嵌入和词嵌入拼接分别得到文章和问题表示对于问题q∈rd×m和文章p∈rd×n,序列中的每一个词都被转换成d维的向量;

所述构建问题和文章的编码层:

经过字符嵌入和词嵌入,将文章和问题表示分别输入到由gru组成的双向循环神经网络编码器,得到文章和问题编码层的语义表示h∈r2d×n和u∈r2d×m

(二)构建基于双向注意力流的循环神经网络

双向注意力流层负责文章和问题信息的连接和融合,不仅计算文章到问题方向的注意力权重,也计算问题到文章方向的注意力权重;同时双向注意力流层中每个时间步的注意力向量都将与来自上一层的文章表示结合,继续流过后续的模型层。

所述构建双向注意力流层的过程包括计算相似性矩阵、融合输入向量两个部分:

(1)计算相似性矩阵:

首先,双向注意力使用缩放点积函数计算文章语义h∈r2d×n和问题语义u∈r2d×m之间的相似性矩阵s∈rn×m

stj=α(h,u)∈r(1)

其中stj表示第t个文章单词和第j个问题单词之间的相似性,α函数定义为:

其中w(s)t∈r6d,为可训练权值矩阵,表示逐元素积,“;”表示向量拼接,a和c表示不同的矩阵。

然后,共享相似矩阵s,计算从文章到问题以及从问题到文章两个方向的注意力权重,具体过程是应用softmax函数归一化s的每一列,然后计算文章到问题的注意力a:

at=softmax(st:)∈rm(3)

其中,at表示文章中第t个词对问题的注意力权重,st:表示s的第t个行向量,a:t表示a的第t个列向量,atk表示at的第k项,u:k表示u的第k个列向量。

之后,应用softmax函数归一化s的每一列最大值,并计算问题到文章的注意力b:

b=softmax(maxcol(s))∈rn(5)

b:k=∑bkh:k∈r2d(6)

其中,b表示文章单词注意力权重,maxcol即按列求最大值,b:k表示b的第k个列向量,bk表示文章第k个单词的注意力权重,h:k表示h的第k个列向量。

(2)融合输入向量:

联合h,a,b产生双向注意力流层输出:

其中,g中的每一列代表了一个融合问题全部语义信息的文章词向量。β是融合h,a,b三个输入向量的可训练函数,而dg是β函数的输出维度。β函数是任意可训练的神经网络,取β函数为简单拼接,则双向注意力流层输出为:

将双向注意力流层输出g输入由gru构成的双向循环神经网络,从而获取融合了问题信息但文章语义信息有所缺失的文章表示

(三)构建自注意力层

引入自注意力机制计算文章自身的注意力,从而有效地捕获句子中长距离的相互依赖关系,丰富文章的语义信息。

自注意力层结合双向循环神经网络和自注意力,利用缩放点积式的多头注意力机制,将文章表示均分成h个部分,并行化地计算各部分的注意力权重,动态地在通过的每个文章词向量中收集整个文章中的信息。计算各部分的注意力权重的过程为:

headi=attention(qwiq,kwik,vwiv)(10)

ct=multihead(q,k,v)=concat(head1,…,headh)wo(11)

其中,wo,wq,wk和wv均为权值矩阵;q、k、v分别代表attetion函数中的查询(query)、键(key)和值(value),分别是编码器的输出和解码器中的输入;dk为查询q和键k的维度,headi为文章第i部分,ct为多头注意力机制最终输出。双向循环神经网络将拼接后的向量编码至新的向量表示

其中,表示自注意力层输出并对应于文章第t个词的语义表示,为双向注意力层输出的文章表示。进而,经过自注意力层获得文章语义表示

(四)基于动态迭代解码器预测答案输出

利用动态迭代解码器,将模型预测作为初次预测结果继续输入到动态迭代解码器中,通过动态迭代的方式反复迭代预测答案位置,直到预测结果不再变化或迭代次数超过阈值,最终确定答案位置。迭代过程中允许模型跳出初始局部最优答案。自注意力层文章表示某一时间步骤t对应迭代过程r,在第r次迭代过程中,设hr,xr,和er分别表示lstm状态、起始位置的评估值和终止位置的评估值。则lstm隐藏层状态为:

其中,分别表示前一次(r-1)迭代过程中起始位置的评估值和终止位置的评估值。给定当前隐藏层状态值hr,前一次迭代过程起始位置的评估值和终止位置的评估值获得当前起始位置的评估值和终止位置的评估值:

其中,αt和βt分别表示文章中第t个词作为答案跨度起始位置和终止位置的评估分数。利用两个结构相同但不共享参数的神经网络分别计算αt和βt,此处选择结合了maxoutnetworks和highwaynetworks的highwaymaxoutnetwork计算αt:

通过另一个hmnend模型,使用与αt相同的计算方式计算终止位置的评估分数βt。hmn模型的计算公式如下:

其中,参数为权值矩阵,和b(3)∈rp为偏置。p是每个maxout层作池化操作的尺寸大小。max操作在张量的第一个维度上计算最大值。在第一个maxout层和最后输出的maxout层之间存在highway连接。

起始位置概率分布x=[x1,x2…,xn]t和终止位置概率分布e=[e1,e2,…,en]t联合乘积得到答案分布矩阵c,矩阵中任意元素cyz=xyez。答案起始位置y和终止位置z满足y≤z,检索上三角矩阵中概率最大值的行列索引,输出最终答案预测范围。

本发明的有益效果:本发明可以有效解决因单方向计算文章到问题的表示而缺失信息的问题,丰富文章表示的语义信息,从而有效避免信息损失;基于多头注意力机制并行化计算文章各部分注意力权重,并通过动态迭代预测答案,弥补可能输出局部最优解的不足,从而提高模型精度。

附图说明

图1机器阅读理解模型框架示意图。

具体实施方式

本发明的模型能够对给定的文本进行编码、融合文章和问题信息、捕获句子中长距离的依赖关系并预测答案输出。机器阅读理解模型分为编码层,循环神经网络层、自注意力层和输出层四部分,如表1所示。

表1模型结构

实验例:

本发明采用squad数据集来训练和评估模型。模型在字符嵌入,词嵌入和模型的层与层之间都使用了比例为0.2的dropout,并使用初始学习率为1.0的优化器adadelta对模型进行优化,adadelta使用的ρ和ε分别是0.95和1×e-6。训练样本的批量大小为12。

模型训练的实现需要模型的编码层、循环神经网络层、自注意力层和输出层的协调工作,具体如下:

(一)编码层

首先,借助分词工具spacy对每个文章和问题进行分词处理,文章词数目的最大值设置为400,问题词数目的最大值设置为50,按照设定值对样例进行处理,丢弃长于设定值的文本部分,并用特殊符号<pad>对少于设定值的短句子进行填充。字符嵌入部分将文章和问题单词的字符序列输入到1层双向gru中进行计算,嵌入维度为200;词嵌入部分使用预先训练好的词向量模型glove分别将文章和问题嵌入至300维的固定向量,所有超出词汇表范围的词汇用零向量表示,并在训练过程中不断更新词嵌入。

分别将经过数据预处理的文章和问题表示输入由gru构成的双向循环神经网络,获得文章和问题的编码层语义表示。

(二)循环神经网络层

循环神经网络层包括计算相似性矩阵、融合输入向量和获取文章表示三个部分:

(1)计算相似性矩阵:

首先,双向注意力使用缩放点积函数计算文章和问题语义之间的相似性矩阵,见公式(1)。

然后共享相似矩阵,应用softmax函数归一化相似矩阵的每一列,并利用公式(4)计算文章到问题的注意力;应用softmax函数归一化相似矩阵每一列的最大值,并利用公式(6)计算问题到文章的注意力。

(2)融合输入向量:

联合编码层文章表示、文章到问题方向注意力和问题到文章方向注意力,产生双向注意力流层输出,见公式(8)。

(3)获取文章表示:

将文章和问题表示输入由gru构成的3层双向循环神经网络,模型使用的gru的隐藏层单元数目全部设定为75。双向循环神经网络输出即融合了问题信息但文章语义信息有所缺失的循环神经网络层文章表示。

(三)自注意力层

利用缩放点积式的多头注意力机制,将文章表示均分成8个部分,dk取64,利用公式(9)、(10)和(11)并行化地计算各部分的注意力权重,动态地在通过的每个文章词向量中收集整个文章中的信息。

将自注意力机制获取的文章表示和循环神经网络层获取的文章表示拼接后输入双向循环神经网络编码至新的自注意力层文章表示。

同时,在自注意力层使用l2正则化,对所有可训练变量进行权重衰减,其参数为λ=3×10-7

(四)基于动态迭代解码器预测答案输出

模型输出为:用户输入的文本中问题的答案范围,包括起始位置和终止位置。

利用动态迭代解码器迭代更新,最大迭代次数为4。每轮迭代都会产生对答案开始和结束位置的预测,对答案开始位置和结束位置这两个预测结果使用两个结构相同但不共享参数的highwaymaxoutnetwork计算文章中单词作为答案跨度起始位置和终止位置的评估分数,maxout中的池化值大小为16,见公式(16)。将前一次迭代过程中起始位置的评估值和终止位置的评估值拼接后送入lstm,更新隐藏层状态。给定当前隐藏层状态值、前一次迭代过程起始位置的评估值和终止位置的评估值,获取当前词作为起始位置的评估值和终止位置的评估值,见公式(14)和(15)。

对答案起始位置概率分布和终止位置概率分布使用联合乘积,获取答案分布矩阵。利用答案起始位置在终止位置之前的特性,检索答案概率分布上三角矩阵中最大值的行列索引,确定最终答案起始位置和终止位置。如图1为机器阅读理解模型框架示意图。

对比例:

剥离模型的不同组成部分观察各个部分对模型性能的表现,表2所示是对比实验在验证集上的表现。

表2各组成部分对模型性能的影响

从表2对比数据可以看出,双向注意力流层(bi-attention)和自注意力层(self-atteotion)都对模型性能产生正向积极的作用,双向注意力层融合问题语义信息,对预测起关键作用。自注意力层则更倾向于解决长文本之间模型表征能力不足的问题,可有效提升模型表现。动态迭代解码器(did)相较于指针网络(pointernetwork)性能提升3%~4%,表明前者具备更强的预测推理能力。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1