近年来,自然语言处理技术发展迅速,在各个领域都取得了引人注目的成绩。机器阅读理解作为自然语言处理的核心任务之一,也越来越受到各方关注。机器阅读理解是指通过让机器阅读文本和问题,从而得到一段简洁、有效的文字作为该问题的答案。机器阅读理解可以充分体现机器的智能水平,因此提升机器阅读理解水平对于推动人工智能发展具有重要意义。
Rajpurkar等[1]于2016年推出英文的机器阅读理解SQuAD数据集,该数据集通过众包方式构建,包含10万个问题和536篇维基百科文章,因其数量、质量等方面的优势吸引了众多研究者的目光。但在中文阅读理解领域,权威的大型数据集较少,中文阅读理解研究进展缓慢;此外大多数研究热点都集中在单段落抽取式的阅读理解类型上,即从文本中抽出一个片段作为相应的答案。但在真实场景中往往需要从多个段落中找到最相关的答案,因此针对多段落机器阅读理解问题有待进一步研究。
与此同时,深度学习技术在自然语言处理(NLP)方面取得的良好效果为解决阅读理解问题提供了新的思路,其中被广泛应用的模型是模型Seq2Seq[2]。相比基于语法句法分析和特征工程的传统方式,基于Seq2Seq的深度学习模型在机器阅读理解方面可以取得更好的效果,并且减轻了人工选取和构造特征方面的压力。
由Seo等[3]提出的双向注意力流模型(bi-directional attention flow,BiDAF)属于Seq2Seq框架,它在SQuAD、CNN/DailyMail[4]等面向单段落机器阅读理解的数据集上获得了较好的表现。BiDAF采用双向的注意力机制,提取到的蕴含向量包含更多的关联性信息,但在多段落的机器阅读理解问题方面,还需要考虑不同段落与问题之间的整体相似度以及段落与段落之间的信息关联,使得到的预测结果更精准。
本文针对BiDAF模型对多段落信息考虑不充分的问题,提出基于多段落排序机制的BiADF(passage rank-BiDAF,PR-BiDAF)模型。PR-BiDAF使用双向长短期记忆网络(bi-directional long short-term memory network,BiLSTM)对问题和段落分别编码,通过self-attention机制提取问题和段落中具有代表性的重要信息,再将段落和问题的整体向量输入softmax层得到段落的关联度排序,并输出得分最高的段落;在预测段落中,通过BiDAF模型的双向注意力机制融合段落和问题的编码信息,最终预测和生成答案片段。最后通过在中文多段落阅读理解数据集DuReade上的多组实验对比证明了本文方法的有效性。
1 基于多段落排序的阅读理解模型 1.1 模型结构如图 1所示,PR-BiDAF模型由输入层、BiDAF、passage rank三部分组成。输入层负责对段落和问题进行词向量嵌入和编码处理,并作为后续操作的输入。输入层中的多段落阅读理解数据存储形式为〈P1, P2, …, Pn, Q, A〉,其中Pi代表n个待阅读的段落,Q代表问题,A为答案。BiADF模型用于抽取单段落答案,按照顺序可以分为双向注意力计算层(bi-attention)、解码层(decode)和答案预测层(answer predict)。BiDAF模型主要负责处理单个段落内的答案预测,通过段落和问题的输入,得到start scores vector和end scores vector分别代表的答案在段落内的始末位置,并选取乘积值最大区域作为预测的答案片段。passage rank分为self-attention提取信息层(self-attention)[5]、全连接层(fully connect)和softmax层[6]。self-attention层通过提取句子内部重要信息来表征该语句,再经过全连接层得到第i个段落Pi与问题Q的匹配度得分gi,然后把N个段落的得分输入softmax层,输出得分最高的段落作为模型预测的正确段落,并将该段落的答案片段作为输出结果。
模型的输入数据包括一个问题和多个相关段落。目前在自然语言处理中通常使用词向量技术来表示文字,然后通过编码层处理后生成蕴含上下文语义信息的表示向量。本文选取Glove预训练词向量[7],将未出现在该词向量中的文字进行随机初始化处理。
为了解决长距离依赖以及上下文信息融合问题,编码部分采用BiLSTM网络结构,将语句相反的两种顺序分别输入长短期记忆网络(LSTM)中编码,然后进行拼接,这样得到的表示向量就能蕴含上下文信息。BiLSTM的公式定义如下[8]
$ \left\{ {\begin{array}{*{20}{l}} {\mathit{\boldsymbol{h}}_t^ + = {\mathop{\rm LSTM}\nolimits} \left( {{\mathit{\boldsymbol{h}}_{t - 1}}, {\mathit{\boldsymbol{e}}_t}} \right)}\\ {\mathit{\boldsymbol{h}}_t^ - = {\mathop{\rm LSTM}\nolimits} \left( {{\mathit{\boldsymbol{h}}_{t + 1}}, {\mathit{\boldsymbol{e}}_t}} \right)}\\ {{\mathit{\boldsymbol{h}}_t} = \left[ {\mathit{\boldsymbol{h}}_t^ + , \mathit{\boldsymbol{h}}_t^ - } \right]} \end{array}} \right. $ | (1) |
式中,et代表t时刻的输入向量,ht+、ht-分别代表t时刻正向和反向的隐含层向量,ht为t时刻正反隐含层向量拼接后的结果。
1.3 基于BiDAF的单段落答案抽取对于单段落的答案抽取,定位答案范围对生成的答案质量有关键性影响。BiDAF模型的主要特点是在特征提取阶段引入文章和问题双向注意力机制,得到原文关于问题的表示向量后用双向LSTM进行语义信息聚合,最后通过解码层的输出向量来分别预测答案起始位置和结束位置。
模型单轮训练的输入包括单个问题和多篇文章两部分。经过分词等预处理后,以文章和问题的词向量表示为输入,经过BiLSTM的编码分别得到文章的编码H和问题的编码U。由式(2)计算H和U的相似度矩阵Stj,再基于该矩阵计算双向的注意力机制。
$ \left\{ {\begin{array}{*{20}{l}} {{\mathit{\boldsymbol{S}}_{tj}} = \alpha \left( {{\mathit{\boldsymbol{H}}_{:t}}, {\mathit{\boldsymbol{U}}_{:j}}} \right)}\\ {\alpha (\mathit{\boldsymbol{h}}, \mathit{\boldsymbol{u}}) = \mathit{\boldsymbol{W}}_{\rm{S}}^{\rm{T}}[\mathit{\boldsymbol{h}};\mathit{\boldsymbol{u}};\mathit{\boldsymbol{h}} \odot \mathit{\boldsymbol{u}}]} \end{array}} \right. $ | (2) |
式中,H:t表示H的第t个列向量,U:j表示U的第j个列向量,WST表示可训练的权重向量,⊙表示逐个元素相乘,[; ]表示按行连接向量。
利用文章到问题方向(P2Q)的注意力机制为每个段落中的词找出问题中与其最相关的词。对S按列计算softmax得到注意力向量at,然后将at与U相乘得到矩阵
$ \left\{ {\begin{array}{*{20}{l}} {{\mathit{\boldsymbol{a}}_t} = {\mathop{\rm softmax}\nolimits} \left( {{\mathit{\boldsymbol{S}}_{t:}}} \right)}\\ {{{\mathit{\boldsymbol{\tilde U}}}_{:t}} = \sum\limits_j {{\mathit{\boldsymbol{a}}_{tj}}} {\mathit{\boldsymbol{U}}_{:j}}} \end{array}} \right. $ | (3) |
式中,St:表示S的第t个列向量,
利用问题到文章方向(Q2P)的注意力机制对每个问题中的词找出段落中与其最相关的词,再对相似度矩阵S按列提取最大值,将所有最大值经过softmax处理后,由式(4)计算得到
$ \left\{ {\begin{array}{*{20}{l}} {\mathit{\boldsymbol{b}} = {\mathop{\rm softmax}\nolimits} \left( {{{\max }_{{\rm{col}}}}(\mathit{\boldsymbol{S}})} \right)}\\ {\mathit{\boldsymbol{\widetilde h}} = \sum\limits_t {{\mathit{\boldsymbol{b}}_t}} {\mathit{\boldsymbol{H}}_{:t}}} \end{array}} \right. $ | (4) |
式中,maxcol表示按列取最大值,b为注意力向量,
将H、
$ \left\{ {\begin{array}{*{20}{l}} {{\mathit{\boldsymbol{p}}_{{\rm{start }}}} = {\mathop{\rm softmax}\nolimits} \left( {\mathit{\boldsymbol{W}}_{{\rm{ start }}}^{\rm{T}}\left[ {\mathit{\boldsymbol{G}};{\mathit{\boldsymbol{M}}^2}} \right]} \right)}\\ {{\mathit{\boldsymbol{p}}_{{\rm{end }}}} = {\mathop{\rm softmax}\nolimits} \left( {\mathit{\boldsymbol{W}}_{{\rm{ end }}}^{\rm{T}}\left[ {\mathit{\boldsymbol{G}};{\mathit{\boldsymbol{M}}^2}} \right]} \right)} \end{array}} \right. $ | (5) |
式中WstartT和WendT分别表示pstart和pend的权重矩阵。最后通过循环比较所有位置可能性的大小,找到乘积最大的两个坐标点,从而得出预测的起始和结束范围。
1.4 基于多段落排序机制的预测模型在多段落阅读理解问题中,最终的答案来自某一最相关的段落,所以计算段落与问题的关联度并选取正确段落是提高答案匹配度的关键所在。
本文首先进行段落与问题的整体关联度匹配计算,进而转化成正确段落和非正确段落间的二分类问题,通过多段落排序模型(passage rank)训练得到预测结果,直接在该段落内寻找最终的答案片段。在提取语句内部特征时引入self-attention机制,目的是提取句子内部不同重要程度的特征,从而得到句子的语义蕴含向量。self-attention通过比较语句内部所有词语间的重要程度,生成该语句的注意力向量。其机制定义如下
$ \left\{ {\begin{array}{*{20}{l}} {\mathit{\boldsymbol{h}} = \left( {{\mathit{\boldsymbol{h}}_1}, {\mathit{\boldsymbol{h}}_2}, {\mathit{\boldsymbol{h}}_3}, \cdots , {\mathit{\boldsymbol{h}}_n}} \right)}\\ {\mathit{\boldsymbol{A}} = {\mathop{\rm softmax}\nolimits} \left( {{\mathit{\boldsymbol{W}}_1}\tanh \left( {{\mathit{\boldsymbol{W}}_2}{\mathit{\boldsymbol{h}}^{\rm{T}}}} \right)} \right)}\\ {\mathit{\boldsymbol{R}} = \mathit{\boldsymbol{Ah}}} \end{array}} \right. $ | (6) |
式中,hi为隐含层向量矩阵,A为注意力向量,W1和W2为A的权重矩阵,R为经过注意力权重计算后的表示向量。
所有段落和问题经过self-attention层提取特征后,分别得到第i个段落的表示向量riP和问题表示向量rQ;将每个段落表示向量分别与问题表示向量同时输入全连接层,得到段落相关度评分;最后选取评分最高的段落作为段落的预测结果,即从该段落中寻找答案。passage rank部分的定义如下
$ \left\{ {\begin{array}{*{20}{l}} {{\mathit{\boldsymbol{g}}_i} = \mathit{\boldsymbol{V}}_{\rm{g}}^{\rm{T}}\left( {\tanh \left( {{\mathit{\boldsymbol{W}}_{\rm{g}}}\left[ {\mathit{\boldsymbol{r}}_i^{\rm{p}}, {\mathit{\boldsymbol{r}}^{\rm{Q}}}} \right]} \right)} \right)}\\ {{P_{\max }} = \max \left( {{\mathop{\rm softmax}\nolimits} \left( {{\mathit{\boldsymbol{g}}_1}, {\mathit{\boldsymbol{g}}_2}, \cdots , {\mathit{\boldsymbol{g}}_n}} \right)} \right)} \end{array}} \right. $ | (7) |
式中,[riP, rQ]为riP和rQ的拼接向量;Vg和Wg为gi的权重矩阵;tanh表示以tanh为激活函数的全连接神经网络;gi表示第i个段落的评分(i=1, 2, …, n),其值越大,与问题的关联度越高,反之越低。最后经过max选出匹配分数最高的段落。
在模型训练阶段,将每个问题的答案所在的正确段落作为模型的训练标签。由于该问题实际上等价于二分类问题,因此模型选择交叉熵作为损失函数,同时引入Dropout机制[9]和L2正则项[10]来避免过拟合。交叉熵损失函数定义如下
$ l = - \sum\limits_{i = 1}^k {\left[ {{y_i}\lg {g_i} + \left( {1 - {y_i}} \right)\lg \left( {1 - {g_i}} \right)} \right]} $ | (8) |
式中,yi取1或0,分别代表是否为正确的段落。
2 实验部分 2.1 实验数据集为了验证本文提出的PR-BiDAF模型的有效性,从百度发布的大规模中文阅读理解数据集DuReader[11]中选取共30万条数据,其中包括训练集27万条,开发集1万条,测试集2万条。
数据分为Search和Zhidao两大类,分别来自百度搜索和百度知道两个真实应用场景。内容为百度用户查询的真实问题,每个问题对应5个候选文档及其人工整理的优质答案。为了提供更丰富的问题种类,DuReader数据集中的问题按答案类型被分为3类:Entity(实体)、Description(描述)和YesNo(是非)。对于实体类问题,其答案一般包含具体的一个或多个词语;描述类问题的答案包含一段连续性的文字描述;是非类问题的答案为“是”或者“否”。数据集样例见表 1。
本文选取ROUG E- L和BLEU4作为评价答案优劣的评价指标[12],同时利用段落选择准确率来衡量PR-BiDAF模型预测段落的效果。
ROUG E- L指标参考最长公共子序列(LCS)来比较两个字符串X、Y的相似度,其值越高,两个字符串越相似。ROUG E- L指标(Flcs)计算公式为
$ {F_{{\rm{lcs}}}} = \frac{{\left( {1 + {\beta ^2}} \right){R_{{\rm{lcs}}}}{P_{{\rm{lcs}}}}}}{{{R_{{\rm{lcs}}}} + {\beta ^2}{P_{{\rm{lcs}}}}}} $ | (9) |
式中,
双语评价替补(bilingual evaluation understudy, BLEU)是一种基于N-gram的匹配规则,当N=4时即为BLEU4,其值越大两个字符串的语义联系越紧密。BLEU(Fbleu)的计算公式为
$ \left\{ \begin{array}{l} {F_{{\rm{bleu}}}} = f\exp \left( {\sum\limits_{n = 1}^N {{W_n}} \lg {p_n}} \right)\\ f = \left\{ {\begin{array}{*{20}{l}} {1, }&{{l_{\rm{c}}} > {l_{\rm{r}}}}\\ {{{\rm{e}}^{\left( {1 - \frac{{{l_{\rm{c}}}}}{{{l_{\rm{r}}}}}} \right)}}, }&{{l_{\rm{c}}} \le {l_{\rm{r}}}} \end{array}} \right. \end{array} \right. $ | (10) |
式中,N=4,Wn为各阶权重值,f为惩罚因子,pn为n阶精度,lc和lr分别代表两个字符串c和r的长度。
段落选择准确率计算公式如下
$ {P_{{\rm{ Aceunacy }}}} = \frac{{{N_{{\rm{acr}}}}}}{{{N_{{\rm{tot}}}}}} $ | (11) |
式中,Nacr为正确预测段落的问题数量,Ntot为总问题数量。
2.3 参数设置本文考察了词向量维度和批量处理大小(batch_ size)两个参数对实验结果的影响。词向量维度取200、250、300、350,均从维基百科中文语料上训练得到;batch_size取8、16、32。通过多组对比实验得到最佳的batch_size为32,词向量维度为300;对于未出现的词语进行随机初始化后也加入以上训练过程。
设置BiLSTM网络结构的隐含层节点为150,初始化学习速率为0.001;使用Adam优化算法[13]对权重进行更新;为了防止过拟合化,Dropout值设为0.2。
2.4 实验结果及分析分别在Search数据集、Zhidao数据集以及总数据集(All)上进行实验,并选择BiDAF(模型1)、Match-LSTM[14](模型2)以及人类的表现Human(模型3)与本文方法(模型4)进行对比实验,实验结果如表 2所示。
从表 2中可以看出,相较于模型1和模型2,本文模型在最好情况下BLEU4指标提升6%左右,Rouge-L指标提升4%左右,段落选择准确率最高提升13%;但是与Human模型的结果相比,3个指标在各数据集上的表现仍有较大差距,最高相差11.9%,原因是本文模型仍基于字符层级抽取特征,不能像人类一样真正理解段落和问题。
另外,为了验证段落选择准确率对答案选取质量的影响,利用正确段落标签替代passage-rank模型,并将其作为预测段落进行另一组对照实验(命名为Label-BiDAF),实验结果如表 3所示。
表 3表明,段落预测准确率达到100%时,本文模型的两项指标相比基线模型均有较大提升。这一结果同样证明,对段落先打分排序再选出正确段落的方法对得到正确答案有较大帮助。
3 结束语本文在BiDAF模型的基础上,通过对段落与问题关联匹配度进行排序,选取最有可能产生答案的段落,同时引入self-attention机制提取语句内部重要特征作为语句表示向量,最后在多段落中文数据集DuReader上进行了实验验证。实验结果表明,相比BiDAF基线模型,本文方法的段落选择准确率,BLEU4评价指标及ROUG E- L指标均有不同程度提高,表明本文模型在机器阅读理解问题中取得了较好的效果;但与人类的表现仍有较大差距,因此本文模型还有较大提升空间。下一步工作将考虑引入多种注意力机制算法提取特征,提升段落选择准确率,从而更好地实现多段落机器阅读理解。
[1] |
RAJPURKAR P, ZHANG J, LOPYREV K, et al. SQuAD: 100, 000+ questions for machine comprehension of text[C]//Conference on Empirical Methods in Natural Language Processing. Austin, 2016: 2383-2392.
|
[2] |
SERBAN I V, SORDONI A, LOWE R, et al. A hierarchical latent variable encoder-decoder model for generating dialogues[C]//Association for the Advance of Artificial Intelligence. San Francisco, 2017: 3295-3301.
|
[3] |
SEO M, KEMBHAVI A, FARHADI A, et al. Bidirectional attention flow for machine comprehension[C]//The 5th International Conference on Learning Representations. Toulon, 2017.
|
[4] |
CHEN D, BOLTON J, MANNING C D. A thorough examination of the CNN/daily mail reading comprehension task[C]//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics. Berlin, 2016: 2358-2367.
|
[5] |
LIN Z H, FENG M W, SANTOS C N D, et al. A structured self-attentive sentence embedding[C]//The 5th International Conference on Learning Representations. Toulon, 2017.
|
[6] |
MEMISEVIC R, ZACH C, HINTON G, et al. Gated softmax classification[C]//International Conference on Neural Information Processing Systems. Vancouver, 2010: 1603-1611.
|
[7] |
PENNINGTON J, SOCHER R, MANNING C D. GloVe: global vectors for word representation[C]//Conference on Empirical Methods in Natural Language Processing. Doha, 2014: 1532-1543.
|
[8] |
GREFF K, SRIVASTAVA R K, KOUTNIK K J, et al. LSTM:a search space odyssey[J]. IEEE Transactions on Neural Networks and Learning Systems, 2015, 28(10): 2222-2232. |
[9] |
SRIVASTAVA N, HINTON G, KRIZHEVSKY A, et al. Dropout:a simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1): 1929-1958. |
[10] |
PHAISANGITTISAGUL E. An analysis of the regularization between L2 and dropout in single hidden layer neural network[C]//International Conference on Intelligent Systems, Modelling and Simulation. Rehovot, 2017: 174-179.
|
[11] |
HE W, LIU K, LYU Y J, et al. DuReader: a Chinese machine reading comprehension dataset from real-world applications[J/OL]. (2017-11-15)[2018-07-20]. https://arxiv.org/abs/1711.05073.
|
[12] |
LIU C W, LOWE R, SERBAN I V, et al. How not to evaluate your dialogue system: an empirical study of unsupervised evaluation metrics for dialogue response generation[C]//Conference on Empirical Methods in Natural Language Processing. Austin, 2016: 2122-2132.
|
[13] |
KINGA D, ADAM J B. A method for stochastic optimization[C]//International Conference on Learning Representations. San Diego, 2015.
|
[14] |
WANG S H, JIANG J. Machine comprehension using match-LSTM and answer pointer[C]//The 5th International Conference on Learning Representations. Toulon, 2017.
|