APP下载

MCA-Reader: 基于多重联结机制的注意力阅读理解模型

2019-10-22张禹尧蒋玉茹张仰森

中文信息学报 2019年10期
关键词:命名注意力编码

张禹尧,蒋玉茹,毛 腾, 张仰森

(北京信息科技大学 智能信息处理研究所,北京 100101)

0 引言

机器阅读理解是当下自然语言处理的一个热门任务,也是一项十分具有挑战性的任务。在该任务中,机器需要在给定上下文和问题的基础上,发现上下文与问题之间的联系并给出最终答案。根据具体的任务类型划分,可以将任务细分为完形填空式阅读理解任务和片段抽取式阅读理解任务。

近年来,已有很多深度学习模型在片段抽取式机器阅读理解任务上取得了较好的成绩,其中比较典型的模型是包含推理过程的阅读理解模型,它的成功主要归结于两点[1]: ①多跳结构: 这种结构允许模型多次计算文档上下文与问题之间的关联,随着层次加深,能获得更深层次的关联信息表示; ②注意力机制: 注意力机制允许模型更关注重要的信息。将这两种方式结合起来后,模型会进行多轮的计算,并在每轮计算中借助注意力机制调整信息的权重,达到推理的效果,从而取得较好的成绩。

目前为止,典型的基于多跳模型结构与注意力机制的模型(GA reader、IA reader[2]、 ReasoNet[3])都采取了类似的方式,即通过多轮的迭代以及注意力机制来实现推理,不断缩小答案的范围。本文认为这些将多跳结构和注意力机制结合起来的方式仍存在着一定的改进空间,因此,本文将聚焦于如何尽可能发挥注意力机制在多跳模型中的作用,并提出了一种基于多重联结机制的注意力模型(MCA-Reader)。与现有的类似模型不同,本文提出的模型不再是通过多轮迭代来逐步缩小答案的范围,而是通过使用多重联结机制,给予每轮迭代不同的含义,使其能挖掘出不同的特征信息。在CMRC2018[4]评测任务上,本文所提出的模型取得了较好的成绩,在最终提交的队伍中排名第二。

1 相关工作

1.1 机器阅读理解

机器阅读理解任务可以被定义为一个监督学习问题,一般地,形式化为一个三元组:

T=(c,q,a)

其中,T为机器阅读理解任务,c为给定的文档或者上下文的信息,q表示与文档或上下文相关的问题,a表示问题的答案。

随着机器阅读理解技术的发展,机器阅读理解的任务形式也在不断发生变化。

早期的完形填空式任务,一般会提供一个答案候选集C,问题q是上下文中的一个句子且该句中会抽出一个词并使用占位符替代。任务最终的目标是在给定上下文c和问题q的前提下,在C中选择一个最佳答案a。典型的数据集有CNN/Daily Mail[5]、Children’s Book Test[6]、CMRC2017[7]等。然而,完形填空式阅读理解的答案通常是单一的词语或实体,有时答案的选取甚至不需要完全理解文本,因此与真正的阅读理解还有一定的距离。

第二阶段的阅读理解任务发展为基于百科的单文档片段抽取式阅读理解任务,这一阶段中不再给出答案候选集,问题一般由人工编写,答案是文档或上下文中的一个连续的片段。典型的数据集包括SQuAD1.0[8]、CMRC2018等。基于百科的单文档片段抽取式阅读理解任务相较于完形填空式任务难度更大,也更接近真实的阅读理解,但是仍然存在一定的限制,即数据是封闭式的,且语言表达上与人类所使用的日常表达存在一定差异。

随着基于百科的单文档阅读理解技术的发展,机器阅读理解任务又进一步升级为基于网页数据的多文档阅读理解形式,与前一阶段的主要区别是数据是开放式的,且语言表达更加贴近人类日常使用情况,难度更大。其中典型的数据集包括MS-MARCO[9]、DuReader[10]等。

1.2 注意力机制

注意力机制[11]最早由Bahdanau等人提出并将其使用在神经机器翻译任务中,本质上起到对齐的作用,它将翻译中的目标语句与源语句中的词进行对齐,进而大大提升了翻译质量。随后,在自然语言处理任务中,注意力机制得到了更广泛的应用。在机器阅读理解任务中,注意力机制更是成了通用的模型。使用注意力机制,可以更好地捕获到文章和问题中重要的信息,进而更加准确地给出答案。不同的网络结构,使用注意力的方式和类型也不尽相同。以AS Reader[12]为代表的一类模型中,只使用了一次注意力机制,并直接将注意力的值送入输出层做预测;而BiDAF[13]一类的模型则不同,模型在做完一次注意力计算之后,还需要继续进行编码,再输入给预测层;还有一类则是以ReasoNet为代表的多跳注意力方式,模型中会多次迭代计算注意力的值,以达到推理的效果。

2 CMRC2018

CMRC2018评测任务是“篇章片段抽取型阅读理解”,阅读理解模型将根据给定的一个篇章和一个问题,在文章中找出问题的答案,即预测问题的答案在篇章中的起始位置s和结束位置e,其数据格式如表1所示。系统的目标就是根据问题(Question)在文档(Document)中找出答案(Answer)在文章中出现的位置(如表1中所标示的阴影文字部分)。

表1 CMRC2018训练集实例

篇章内容来自中文维基百科,问题由人工编写。数据规模如表2所示,其中预测试集是测试集的一个子集,预测试集和测试集对参赛队伍都是不可见的。

表2 CMRC2018评测数据集规模

CMRC2018评测任务的基本评价指标有两个: (1)精准匹配度(exact match,EM): 计算预测结果与标准答案是否完全匹配。(2)模糊匹配度(F1): 计算预测结果与标准答案之间字级别的匹配程度。

3 模型结构

本文所提出的基于多重联结机制的注意力模型与Gated-Attention Reader模型相似,主要包括嵌入层、编码层、多轮交互层和输出层。如图1所示,该模型的主要创新点在模型的多轮交互阶段,在其他层本文也有一些创新工作,下文将给出详细描述。

图1 MCA-Reader模型结构

3.1 嵌入层

第一层为嵌入层,将每个单词映射到一个高维空间中。在这里,本文使用了采用Word2Vec[14]预训练的两组词向量,且词向量不会随模型一同训练。此外,受FastQA[15]论文启发,本文还尝试加入了两个维度为1的手工特征:

(1) 词级别共现: 如果某个词,在上下文和问题中同时出现,则将该词在上下文和问题中对应的位置的词级别共现特征的值w置为1,否则置为0,如式(1)所示。

(1)

(2) 字级别共现: 以词为单位,遍历词中的每个字,如果某字在上下文和问题中同时出现,则共现次数加1,最终字级别共现特征c的计算方式为该词中字的共现次数之和m除以字所在词的长度len(w)。如式(2)所示。

(2)

3.2 编码层

第二层为编码层,编码层利用双向GRU[16],对经过词嵌入映射后的结果进行上下文编码。文章的编码结果记为hctx∈R|C|×2d, 问题的编码结果记为hqry∈R|Q|×2d,其中R为编码后的向量,|C|为上下文长度,|Q|为问题长度,d为编码维度。如式(3)~式(4)所示。

其中,x为上下文或问题中词序列对应的索引序列,v(x)表示将x中每个索引转化为词向量,wx为对应序列的词级别共现特征,cx为对应序列的字级别共现特征。

3.3 多轮交互层

第三层为多轮交互层,这是本文工作的核心部分。在此层,本文使用Attention-over-Attention Reader[17]中提出的注意力方式进行上下文和问题的交互。首先将hctx∈R|C|×2d和hqry∈R|Q|×2d做点积运算,得到评分矩阵M∈R|C|×|Q|,如式(5)所示。

M(i,j)=hctx(i)T·hqry(j)

(5)

其中i、j为索引,hctx(i)为上下文中的第i个词所对应的编码后向量,hctx(i)T表示对向量hctx(i)进行转置,得到矩阵M后,分别在列方向与行方向做softmax操作,得到两个注意力矩阵α和β, 如式(6)~式(9)所示。

其中t为索引,式(6)中t的范围是1到|Q|,式(8)中t的范围是1到|C|,将得到的注意力矩阵α与β做乘法,得到矩阵A1∈R|C|×|Q|,然后将A1再与问题的编码hqry∈R|Q|×2d相乘,得到最终的包含着问题信息的上下文G1∈R|C|×2d,如式(10)、式(11)所示。

将得到的含着问题信息的上下文G1∈R|C|×2d和进行注意力计算之前的上下文的输入hctx∈R|C|×2d进行联结得到单轮交互的最终结果ha1_o∈R|C|×4d,如式(12)所示。

ha1_o=[hctx;G1]

(12)

在得到单轮交互的结果ha1_o∈R|C|×4d后,再次进行编码与交互,重复两次,但重复的过程中不再对问题进行编码,最终得到ha1_o∈R|C|×4d,ha2_o∈R|C|×4d,ha3_o∈R|C|×4d与A1、A2、A3。

最后将A1、A2、A3相加,然后在列的维度取平均,得到A∈R|C|×1;将A与ha1_o,ha2_o,ha3_o联结,并进行最后一次编码,得到最终的上下文表示hc∈R|C|×(12d+1),如式(13)、式(14)所示。这是能使本文的模型中每轮交互能够注意到不同的侧面信息的关键。

3.4 输出层

最后一层为输出层,本文使用Pointer Network[18]进行预测,预测的输出为答案在上下文中的开始位置s和结束位置e,如式(15)所示。

s,e=PtrNet(hc)

(15)

4 实验和结果

4.1 数据集

本文使用CMRC2018评测任务的数据集对所提出模型进行评估。另外,本文在模型训练过程中使用了两个额外的数据集,分别是CMRC2017数据集和DRCD[19]数据集。两个数据集的数据格式与表1中的数据格式类似,任务也相同,本文将DRCD数据集进行了繁简转换,然后全部并入训练集。最终训练集中包含CMRC2018试验集、CMRC2018训练集、CMRC2017训练集、DRCD数据集,总训练数据达到 40 000条。

4.2 实验参数

本文使用Word2Vec预训练了200维的词向量初始化词嵌入层,语料为9 GB的百度百科语料。此外,词嵌入层中加入一层丢弃层[20],丢弃率为0.1。模型中所有的双向GRU为双层,隐藏维度为88,且每一层后面追加一层丢弃层,第一层后的丢弃层的丢弃率为0.3,第二层后的丢弃层的丢弃率为0.2。批量大小为64,优化器为Adam[21],学习率为0.001,L2正则化的系数为0.000 4。

4.3 未登录词处理

本文中,针对未登录词,做了如下两部分的处理。第一部分是命名实体分词的问题。本文发现,在中文中,大部分的未登录词都是人名、地名、机构名等命名实体,而简单的分词无法直接将命名实体切分出来,这样就会引入很多无意义的词。因此,在分词阶段,本文引入了命名实体识别工具,首先进行命名实体识别,将识别到的命名实体,作为一个整体,再进行切分,一定程度上提升了分词的准确性。第二部分是命名实体的表示问题。引入了命名实体的分词机制,在提高了分词准确性的同时,也引入了一个新的问题,即如何对这些命名实体进行表示的问题。此时,对未登录词的表示问题可以转化为如何为命名实体赋予合适的向量进行表示的问题。为解决命名实体的表示问题,本文同样预训练了一组词向量,在该组词向量的训练过程中,首先进行了命名实体识别,对识别到的命名实体,替换为命名实体对应的类别(Ns、Nh、Ni)。将进行命名实体替换后的语料进行训练,即得到命名实体类的词向量。使用时,如果某词未在嵌入层预训练词向量的词表中,则进一步判断该词是否为命名实体,如是命名实体,则赋予其命名实体类别的词向量。

通过以上两部分的处理,一定程度上缓解了未登录词的问题最终对模型的影响。

4.4 评测结果

最终的评测结果如表3和表4所示。其中表3为测试集上的最终评测结果,表4为挑战集上的结果。从中可以看出,本文所提出模型在各种测试集上的表现效果都比较稳定,都处于前三名的位置。

表3 CMRC2018评测任务测试集评测结果

表4 CMRC2018评测任务挑战集评测结果

5 模型分析

5.1 多重联结机制

本文中的多重联结机制具体指在最后一次编码时,将多轮迭代过程中的全部中间计算结果进行联结。经实验发现,通过这种机制,模型中多轮迭代的过程不再是一个逐渐缩小答案范围的过程,而是变为逐渐探索特征信息的过程,最终在多层联结注意力模型的每一层分别关注了回答问题所需特征的不同侧面。本文选取两组案例来说明这一问题,如图2和图3所示,图中横坐标为问题分词后的结果,纵坐标为文档分词后的结果。为了方便展示,这里对文档的内容进行了截断。其中子图(a)、(b)和(c)分别是从第一层、第二层和第三层的注意力计算中得到的,图中颜色越深,代表在该层计算中所获得注意力的值越大。

图2 多重联结机制下的注意力权重案例A

图3 多重联结机制下的注意力权重案例B

从图2和图3中可以看出,注意力每次对齐的结果,都关注不同的侧面,都是有利于回答问题的一类特征信息。第一次的注意力在词的语义层面进行对齐,如图2(a)中的“坐落于”和“位于”, 图3(a)中的“歌手”和“职业”等;第二次的注意力会对答案的最大范围进行对齐(一般是句号,答案不会跨句),图2(b)中对齐了句号,没有关注逗号, 图3(b)中可以发现对两个句号都有对齐,但是对于答案所在句的句号的权重值更大;第三次的注意力则会对能代表问题类型的关键字进行对齐,如图2(c)中的“什么”“地方”,图3(c)中的“什么”。对于开发集中注意力第三次计算结果中的最大值对应问题中的词语,本文进行了词频统计,最终结果如表5所示。

表5 第三次注意力计算结果及频次统计

续表

为了验证本文提出模型的效果,我们设计了一组对比实验,实验对象为一般的多轮迭代方式模型,超参数保持不变,实验结果如表6所示。

表6 多重联结机制对结果的影响

对于多重联结机制为何能发挥作用,本文认为是因为在最后一次编码时会考虑模型前部分的全部注意力信息,不再局限在最后一次注意力的结果,因此可以使得模型中每层注意力对齐的特征不同。但是并不是迭代的轮数越多,就越能得到更多的信息,对结果的提升越大。对于具体进行多少轮迭代的问题,本文设计了对比实验,实验结果如表7所示。

表7 迭代轮数对结果的影响

其中,迭代轮数为2时,每轮都会对齐不同的特征,第二次同时对齐问题类型关键词和答案的最大边界;迭代轮数为4时,第1、2、4次的注意力对齐效果与3层时一致,但是第3次迭代时注意力完全失去了效果,数值全部接近于0。

5.2 模型其余部分贡献

除了模型本身的多重联接机制以外,本文尝试的一些额外方法,对模型同样起着至关重要的作用。实验结果如表8所示。

表8 开发集上的模型各部分影响

从表8中可以清晰地看出,除了模型的结构本身,数据总量(数据集扩增)、数据的处理(未登录词)以及手工特征(字、词共现特征)对模型的影响,同样不可忽视。

关于字、词共现特征为何能使模型性能产生较大的提升,本文认为是这两个不同粒度的对齐特征能缓解一定的未登录词问题。本文设计了对比实验,抽取了验证集中部分数据,抽取的原则是问题中必须包含未登录词,共抽取数据837条,作为本部分实验的测试数据,最终结果如表9所示。从结果上来看,手工特征的引入,对于未登录词的问题确实有一定的缓解作用。由于字特征比词特征的粒度更细,提升效果也更加明显。

表9 手工特征对含未登录词数据的影响

续表

6 结论

针对CMRC2018评测任务,本文提出了一种基于多重联结机制的注意力阅读理解模型,该模型能够使注意力机制在片段抽取式机器阅读理解任务中更好地发挥作用。在多轮迭代的过程中,模型可以得到回答问题不同的特征信息,最终将这些不同的特征信息联结在一起,可以更准确地找到答案。为了验证多重联结机制的效果,本文与非多重联结结构的模型进行了对比。此外,本文进行了其他对比实验,实验表明: 在现有语料规模和超参数空间下,叠加层数为3时,本模型能取得最好的效果。同时,除了模型本身,针对特定任务的特征挖掘、数据处理等额外的方法,对于模型效果的提升,同样不可忽视。

7 不足与展望

本文中并未加入语言模型这一目前主流的方法,因此在性能上还尚未能达到最优,还有一定的提升空间。此外,如何利用短语结构对模型预测结果中不合乎短语结构的数据进行修剪,是我们下一步研究的目标。

猜你喜欢

命名注意力编码
让注意力“飞”回来
生活中的编码
命名——助力有机化学的学习
《全元诗》未编码疑难字考辨十五则
如何培养一年级学生的注意力
子带编码在图像压缩编码中的应用
Genome and healthcare
有一种男人以“暖”命名
为一条河命名——在白河源
A Beautiful Way Of Looking At Things