基于深度层次特征的阅读理解模型

2019-01-22 03:32王忠萌
中文信息学报 2018年12期
关键词:注意力编码卷积

霍 欢,王忠萌

(1. 上海理工大学 光电信息与计算机工程学院,上海 200093;2. 复旦大学 上海市数据科学重点实验室,上海 201203)

0 引言

机器阅读,即让机器阅读自然语言文本,并根据该文本进行相应问题的回答。一般而言,其输入输出均为非结构化的文本序列,这要求机器能够从原始的文本中分析出所包含的信息。同时,当一个问题对应多个独立的篇章时,还要求机器对各个篇章进行筛选,然后从该篇章内得到答案。在整个过程中,从文本中提取问题相关的篇章特征尤为重要。同时,在多个篇章的情形下,通过篇章本身的特征,来判断篇章本身对答案的贡献程度也是不容忽视的一个环节。

机器阅读任务中,关于用传统方法直接从篇章和问题文本中提取特征。Richardson等[1]在篇章上进行滑动窗口,然后用词袋模型求取篇章片段与答案重叠程度,以此构造特征。Chen等[2]提取单词频率、句子共现、依赖解析等特征。Rajpurkar等[3]使用成分分析、词性标注等特征。然而,这些传统方法受句法分析结果影响较大。当句子与问题表述不一致时,机器阅读的性能会明显降低。

随着深度学习方法在自然语言处理方面取得广泛成功。研究者们开始使用深度神经网络对篇章和问题文本进行建模得到特征,并证明其具有一定的有效性。使用LSTM[4]或GRU[5]进行基本建模的方法成为主流,同时注意力机制将答案与文本对齐作为下一层的特征。如Wang[6]等提出Match-LSTM提取特征,Cui[7]等使用GRU编码,并使用双重注意力机制来构建特征。另一方面,卷积网络在机器阅读中得到运用,对篇章内每个片段进行卷积运算,从而得到特征。Yin[8]等使用两个卷积层来提取篇章特征,第一个卷积层用来表示句子,第二个卷积层用来表示片段。Wu[9]等使用堆叠的膨胀卷积来进行句子的编码。

在实际的应用场景中,机器阅读需要面临更多噪音的挑战。由于文章来源于真实生活,生活用语中会存在着大量的不规范词法、语法、句式。因而,需要多角度特征的充分结合,来更精准地理解篇章信息。本文针对问答式中文机器阅读,提出细节、片段、全文三个深度层次特征模型。在读入的文本进行词向量表示后,使用循环网络进行基本建模。然后,融合注意力作为上下文特征,进而利用残差的堆叠卷积、高速公路网络生成片段特征。同时,利用循环网络对上下文进行归纳。在2018机器阅读理解技术竞赛,本方法取得较好的结果。

1 相关工作

当前,主流的机器阅读模型一般分为输入、混合、建模、输出四个部分,分别进行篇章与问题各自的编码、篇章和问题的混合特征构建、特征的建模、最终答案的输出。

针对篇章和问题的混合,一般使用注意力机制完成对齐操作[10]。Wang等[6]提出篇章对问题的注意力,并用于机器阅读。随后,Wang等[11]提出参数注意力对问题编码,Seo等[12]等提出问题对篇章的最大值注意力。进一步地,有研究者关注卷积特征的提取,如Yu[13]等将卷积层和自匹配注意力合并为一个编码块,然后进行堆叠。这些模型的缺点是数据流向和特征层次单一。本文在篇章和问题注意力混合的基础上,使用基于卷积、若干层高速公路、反卷积的片段特征网络。由于反卷积的存在,能够避免卷积后填充序列两端带来的影响,同时利用了残差[14]模块来缓解深层网络的难以训练的问题。最后,结合以原文的细节特征,以多数据流的方式进行文本信息的精准地把握。

针对模型输出部分,对多篇章内的答案排序问题,Tan[15]等提取篇章、问题为各自向量表示,然后通过全连接层进行打分。而Wang[16]等提出各个答案之间的验证。以上两方法按照篇章对问题或答案对答案的相似性来进行篇章的划分。以上两种方法为了使模型学习到对篇章的评价,均运用了独立的损失函数。而本文使用包含问题、篇章、问题与篇章的多信息的来对每个篇章上下文的评价,使得信息更为充分。同时,本文将结果进行线性变换,直接影响输出层的输出。

本文贡献如下: 首先,提出一种提取片段特征的网络模块,利用深层卷积网络结合高速公路网络提取深层次片段特征。其次,提出了一种提取并利用全文特征的方式,将问题与篇章的多种信息融合一起对全文归纳。最后,设计细节、片段、全文三个层次的特征融合流程,从而较好地实现真实场景下的中文机器阅读。

2 多层次特征模型

2.1 问题描述

本文所针对的问题为面向多篇文章的中文阅读理解,其答案为文章中的一个片段。具体在模型中,该任务中的输入为若干个篇章{P1,P2,…},以及一个问题Q。其输出为三个整数k,as,ae,分别为对应的篇章编号、该篇章答案片段起始位置、该篇章答案片段终止位置。这样,可以得到唯一的文本片段,作为最终的输出。

2.2 整体框架

本模型由六个模块组成,分别为输入层、混合层、片段层、建模层、归纳层、输出层。由于模型在处理单篇文档和多篇文档时,唯一的不同是输出部分。为便于描述,我们接下来均以单个篇章的情况来介绍,最后在输出层具体给出两者不同的解决方案。

模型结构与数据流如图1所示,图中加粗的箭头表示三种特征数据流。模型以篇章和问题分词后的各组符号(token)为输入,转换为词向量后经由双向LSTM编码,然后经混合层进行问题与文章的混合。一方面,混合后的结果经过片段层,提取片段的特征。然后将该片段特征与篇章的原始编码作为细节特征一起,经由双向LSTM一起进行建模。另一方面,该混合特征通过归纳层,生成对文章的归纳。最后,用该归纳与建模后的结果一起进行独立的线性变换,并由softmax函数变换后的概率值,作为最终答案起始和终止位置的概率输出。

图1 深度层次特征模型框架

2.3 输入层

式(1)~式(4)中,UP∈M×h为篇章的编码矩阵,UQ∈N×h为问题的编码矩阵。M,N分别为篇章、问题的长度,h为正反两向的隐藏层维度之和。

2.4 混合层

混合层将问题和答案充分混合,为了使后面的各层可以根据问题确定答案。该层使用了两种注意力机制,分别是文档对问题的注意力和问题的参数注意力。最后将得到的两个注意力矩阵与篇章编码进行拼接,得到最终的混合表示如式(5)~式(12)所示。

式(5)~式(12)中,S∈M×N为篇章与问题的相似矩阵,如Si,j即为和的内积相似度。αt∈1×N为t处篇章编码与问题编码UQ之间的相似向量为注意力矩阵M×h的第t行。同样,T∈M×N为问题的参数相似矩阵,v∈1×h为可训练的参数,β∈1×N为问题编码UQ与参数v之间的相似向量1×h为注意力向量,平铺后得到注意力矩阵。G∈M×3h为拼接后的输出。

2.5 片段层

片段层的目的是提取出片段的特征,从而使得模型能够关注于片段信息。本文采用卷积网络来进行相邻若干单词的混合,该片段层的结构如图2所示。

图2 片段层结构

首先,上一层的混合表示经过非填充的卷积层,然后经若干高速公路层[17]进行变换,最后经由反卷积层,同时计算残差[14]作为该模块最终输出,如式(13)~式(17)所示。

其中,

(18)

g=σ(Wgx+bg)

(19)

highway(X)=χ(X,WH)·g+X·(1-g)

(20)

(21)

式(18)~式(21)中,bC,bH,bD,WC,WH,WD均为可训练参数,*为互相关运算符,χ为非线性变换,H∈M×3h为输出。

2.5 建模层

建模层接收原始细节特征和片段特征,进行机器阅读过程的建模,其输出进而可以与归纳层一起,经过输出层变换为最终答案的起始和终止位置。如式(22)所示。

M=BiLSTMM([UP;H])

(22)

其中,M∈M×h为输出。

2.6 归纳层

归纳层对文章整体做出归纳。本模型使用双向LSTM编码和参数注意力两个方面进行归纳,最后经过线性变换,得到归纳结果。

2.6 输出层

输出层将建模层的结果H,和归纳层的结果R融合,作为输出。我们使用两个不同的线性变换,并用softmax函数来分别得到答案起点位置和终点位置的概率输出,如式(28)~式(30)所示。

当有多个篇章时,将所有篇章拼接后的建模层和归纳层特征,按照第一个维度拼接即可,进而整体进行线性变换与softmax输出。在获取答案片段的操作中,对篇章内的各个概率进行答案片段定位,最终以as×ae最大值对应的篇章编号为k,该as,ae即为最终的答案起始位置和终止位置。

3 实验与分析

3.1 数据集

2018机器阅读理解技术竞赛采用He等[18]发布的面向真实应用场景的大规模中文阅读理解数据集DuReader。该数据来自于真实的百度搜索和百度知道网页,其话题涵盖了教育、文化、日常等各方面的内容。该数据集对问题进行了分类,从问题的呈现类型上,将问题分为实体、描述和是非三类;从问题的意义上,将问题分为事实和观点两类。统计情况如表1所示。

表1 问题分类统计(%)

本实验选用该数据集,共 30 万条数据,其中包括 27 万训练集、1 万验证集和 12 万测试集。本实验没有扩充数据集,仅在该数据上进行。该数据集的评价方式为模型预测的答案片段与真实答案片段之间字符级 Rough-L[19]和Bleu-4[20]。

3.2 预处理

由于该数据集的答案并非是严格的篇章连续片段,因此我们需要对答案进行定位,来确定答案起始和终止位置的训练标签。

该预处理分为三个步骤。首先,对每个文档和每个答案进行如下匹配。匹配篇章中第一次出现与答案分词相同的有意义词汇,包括中文、英文和数字。其次,将匹配得到的结果区间进行合并。最后,将各个文档对应的匹配度排序,选取最大匹配度作为目标文档,并选取该区间为答案的区间。

详细地,我们采用的各个函数的伪代码如下。

函数一,获取一个篇章和一个答案的最大匹配片段

续表

函数二,获取一个篇章和一个答案所有的匹配片段

输入: 一个篇章和一个答案片段输出: 所有匹配片段设已匹配列表为空设篇章指针为零设答案指针为零while 真 do if 篇章指针或答案指针越界then break end 按照函数一得到匹配结果 if 匹配结果非空 then 将答案指针后移到第一个非符号位 if 答案指针越界 do break end end 匹配结果添加入匹配列表 篇章指针加一 答案指针加一end返回匹配结果

函数三,合并匹配区间

续表

函数四,匹配各篇章和各答案

输入: 各篇章和各答案输出: 每个篇章与各答案的最大匹配区间设总匹配列表为空for 每个篇章 then 设候选区间列表为空 for 每个答案 then 按照函数二得篇章答案匹配列表 按照函数三得合并后的匹配列表 if 匹配列表为空then break end 得到列表内的最大匹配结果 if 匹配长度大于阈值 then 候选区间列表添加该匹配 结果和匹配度 end if 候选区间列表非空 then if存在答案很短的情况 then 最终匹配列表添加候选区间 else 最终匹配列表添加最大匹配的 候选区间 end endend返回总匹配列表

由于按照此算法,某些答案无法匹配到原文,因而最终得到245 200条训练样本与8 797条验证样本。

3.3 实验设置

本实验的硬件环境如下,处理器为Intel I7 7700k, 内存大小为32G,显卡为NVIDIA GTX 1080。软件环境如下,系统为Ubuntu16.04,开发语言为Python3.6,深度学习框架为PyTorch0.4.0。

在模型准备阶段,设计篇章最大长度为500,问题最大长度为50,最大篇章数为5。词向量为GloVe[21]词向量,在数据集本身上进行训练,设置词汇表大小为50万,维度为200。

在模型实现阶段,将词向量设置为固定不变。各个循环网络的隐藏层统一设置为100。设计卷积层如下,卷积核大小为4,步长为2。高速公路网络设为3层,非线性函数为ReLU函数。除编码层LSTM为双层堆叠外,其他层的LSTM均为单层。在模型的词向量输出处和各个循环网络输出处,我们使用设计Dropout[22]率为0.2。

在模型训练阶段,使用Xavier[23]初始化各个参数,训练器为Adam[24],其学习率为0.001,并每隔1代进行减半。L2正则系数为0.001。Batch大小为24。

3.4 结果分析

经过15小时的训练,模型运行了7个epoch的,其损失值变化如图3所示。

图3 模型损失值变化图

在模型经过每个epoch后,对验证集进行一次验证,各个验证结果的不同指标变化如图4所示。

为了进一步探究本模型各层次特征的作用及影响,我们在验证集上进行实验。设计不同的特征组合,然后分别在不同的任务下进行Rouge-L和BLEU-4分数的计算,得到结果如图5、图6所示。

图4 模型验证结果变化图

图5 不同特征组合在各数据来源下的表现

图6 不同特征组合在各问题类型下的表现

综合两图来看,首先显而易见本模型增加特征之后,其性能大体上会得到提升;其次,根据提升的程度来看,片段特征的作用较为明显,而全文特征的作用较弱;最后,从不同评测指标来看,相较于Rouge-L分数,BLEU-4分数的提高要稍大一些。

对于不同问题类型下的表现,片段特征在描述类与实体类问题表现均较好,其效果可以充分体现;而全文特征仅在描述类问题上体现出优势,可知描述类问题中更需要对全文的概括与评价,并且在某些情况下该特征并非完全必要。对于不同数据来源的表现,主要集中在百度搜索类型上的提高。这说明,在噪音较大的情形下,更全面的特征可以带来更好的性能。而对于较规范的数据,添加多层次特征带来的提升较为有限。

对完整模型在测试集上进行评测,由结果可知,本模型在单模型上获得57.55的Rouge-L与50.87的Bleu-4分数,较为良好地适用于大规模真实场景机器阅读。具体地比较如表2,表3所示。

表2 模型在不同数据来源下的分数

表3 模型在不同问题类型下的分数

由于无法准确获知其他模型的参数并控制变量,因而难以通过总准确率的绝对差异直接比较。但可通过比较各个子任务准确率的相对差异,来分析模型的性能,进而做出评价。为此将其他各模型与本模型在数据来源、问题类型的分数之差,分别绘

制到热力图上,如图7、图8所示。

观察图7与图8,与本模型的测试结果类似的模型有BiDAF+S+Predict和D-Reader-L2+cls。首先,我们与前者进行比较。该模型的总体分数要高于本模型。然而,从数据来源上,百度知道部分的分数不及本模型。从问题类型上,实体准确率也不如本模型。本模型与之相比, 主要的弱项在于百度搜索部分,以及描述问题部分。究其原因,出于减少模型复杂度的考虑,本模型输出层设计较为简单,因而长距离建模受之前各层循环网络限制,对问题描述类问题在某些场景下或许稍显不足。

图7 模型在不同数据来源下的分数差异

图8 模型在不同问题类型下的分数差异

接下来我们与后者比较。本模型分数唯一在实体的Rouge-L分数略有不及。该模型的分数较前后其他各组模型相比均较高,或许与其模型做了相应改进有关。由于本文针对答案片段型 机 器 阅读,因而对于实体分散在篇章各处的情况,只能得到其中一个片段,故在该情况下性能会降低。

4 结论

本文针对面向真实场景的中文机器阅读,为了更有效地把握文本呈现的复杂场景信息,提出一种深度层次网络模型。从细节、片段、全文三个角度,对篇章材料进行考察。对于细节特征,本文利用原始的循环网络编码;对于片段特征,设计了深度卷积网络的实现;对于全文特征,设计了注意力机制和循环网络的实现来提取问题与篇章融合信息。最后,通过完整的数据流,得到最终的结果,在2018机器阅读理解技术竞赛中的实验取得较好效果。

猜你喜欢
注意力编码卷积
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
卷积神经网络的分析与设计
从滤波器理解卷积
Genome and healthcare
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”