ACL 2018 Long Papers
简单有效的多段落阅读理解
Simple and Effective Multi-Paragraph Reading Comprehension
华盛顿大学/艾伦人工智能研究所
University of Washington/Allen Institute for Artificial Intelligence
本文是华盛顿大学和艾伦人工智能研究所发表于ACL 2018的工作,文章提出了一种在将整篇文档作为输入的条件下,基于深度学习的段落型问答模型。并在TriviaQA和SQuAD上进行了实验,验证了新方法带来的技术提升。全文的贡献点有三:一是提出了一种改进了的流水线方法,从文档中抽取多个段落,并使用了一个能输出全局对错的目标函数,要求模型生成全局正确的输出。二是介绍了一种新的训练模型的方法,以产生每个段落的准确置信度分数。三是识别并改进了处理文档级数据时出现的许多其他设计决策。
引言
在自然语言处理中,教会机器回答用户提出的任意问题,是NLP的长期目标。如今,对于泛泛的问题,现有的信息检索技术已经能够定位到可能包含答案的文档。但是,要想从这些文档中自动提取出答案,仍然是一个较大的挑战。
当前,现有的问答模型,都没法扩展到整篇文档或多文档输入,只是朴素的将模型单独应用于文章的各个段落,最后进行统计回答。这样容易忽略那些与问题相关度不大,但其实是真正答案范围区间的段落。神经模型已经可以实现在回答相关段落问题时的成功,但大多数神经模型无法扩展到短段落之外,因此通常需要调整段落级模型来处理文档级输入。这里,文章采用了流水线方法,并在置信度模型里设置了共享归一化目标,以实现即使在段落单独处理的情况下,输出仍然是全局最优。
模型
文中使用的主要技术理论方法为流水线方法。在流水线QA系统,需要选择一个段落并将其传递给段落级问答模型。
段落选择
如果只有一个源文档,选择与问题具有最小“TF-IDF余弦距离”的段落。
如果有多个输入文档,使用一个相同TF-IDF分数的线性分类器,分类器在远程监督的目标上进行训练,该目标选择包含至少一个答案跨度的段落。
噪声标签处理
在远程监督的设置中,将匹配答案文本的所有文本范围标记为正确。并使用总和目标函数(summed objective function),来优化选择任何正确答案范围的负对数似然,一次降低选择非必要答案范围的概率。此外,通过模型对每个可能出现的答案范围,做范围跨度的开始与结束标签。
图 1 段落级问答模型
模型的核心部分分为5个层次:分别是Embedding, Pre-Process, Attention, Self-Attention和Prediction.
A. Embedding:使用预训练的词向量嵌入单词,并通过使用学习的嵌入矩阵嵌入字符,然后应用卷积神经网络和最大池,将这些与字符派生的词嵌入相结合。
B. Pre-Process:这里使用了共享的双向GRU(Bi-GRU)来处理问题与文章的嵌入。
C. Attention:通过使用双向注意流(Bi-Directional Attention Flow,BiDAF)的Attention机制来构建语言的上下文表示。
i,j : 答案范围内的单词 和 问题里的单词
hi,qj:段落单词i的词向量 和问题单词j的词向量
nq,nc:问题的长度 和 答案范围的上下文长度
w1、w2和w3: 学习向量,是元素乘法
ci:为每个上下文标签(开始/结束)计算的参与向量
qc:上下文查询向量
每个标签的最终向量是通过连接
得到的,并通过一个带有ReLU激活的线性层传递结果。
D. Self-Attention:输入通过另一个双向GRU(Bi-GRU),应用相同的Attention机制,不过这里没有qc了,而是设置
。
E. Prediction:在模型的最后一层,应用了双向GRU,然后通过线性层计算出每个开始标记的答案分数。将隐藏状态与输入相结合,再通过另一个双向GRU和线性层计算出每个结束标记的答案分数。这里应用到了softmax函数,来计算开始或结束的概率。
置信度模型
模型置信度的基准度量,是每个可能的答案区间的非标准化分数和未被指数化分数(应用softmax函数之前),这里使用的是基于边界的模型,具有开始标签和结束标签,每个答案区间的分数是开始分数和结束分数之和。
为避免模型在启发式模式下产生的过度自信(比如模型可能过于依赖去选择与问题所要求的语义类型相匹配的答案),这里尝试了4种模型训练方法, 并都会将不包含答案的段落作为额外的训练点进行抽样。
(1) Shared-Normalization
使用了一个修改的目标函数,其中从相同上下文中采样的所有段落的起始和结束分数都被标准化,目的是迫使模型产生段落之间具有可比性的分数。
(2) 合并
在训练期间将从同一上下文中采样的所有段落连接在一起,并在每个段落之前添加具有学习嵌入的段落分隔符标记。
(3) No-Answer选项
允许模型为每个段落选择一个特殊的无应答选项。
这里重新改写了目标函数。
sj,gj: 模型为标记j生成的起始和结束边界的分数
a, b:正确的开始和结束标记
最后通过在模型末尾添加一个额外的层来计算另一个得分z。 首先通过获取用于预测由开始/结束概率加权的开始/结束标记分数的RNN的总和隐藏状态,并在自我关注层的输出上使用学习的关注向量来构建输入向量。最后将这些矢量送到具有80维隐藏层的两层网络和ReLU激活,结果z就是其唯一输出。
(4) Sigmoid
考虑具有S形损失目标函数的训练模型。通过将sigmoid函数应用于每个标记的开始/结束分数来计算每个标记的开始/结束概率。 交叉熵损失用于每个单独的概率。
实验分析
本文选取了4个数据集:
· 未过滤的TriviaQA,来自琐事数据库的问题数据集,通过完成问题的web搜索找到的文档配对;
· TriviaQA wiki,相同的数据集,但仅包括维基百科的文章;
· TriviaQA web,源自TriviaQA的未过滤数据集,通过将文档中包含问题答案的每个问题文档对作为单独的训练点来处理。
· SQuAD,维基百科文章和众包问题的集合。
预处理
对于TriviaQA web而言,它的文档通常包含许多小段落,因此作者通过将连续段落合并到目标大小来重构了文档,并通过在合并的段落之间添加具有学习嵌入的段落分隔符,来保留格式信息。其中最大段落的大小设置为400。
抽样选取段落
· 对于SQUAD和TriviaQA web数据集,从每个时期的四个时期中抽取2个不同的段落进行训练,对包含答案的排名最高的段落进行抽样,其频率是其他段落的两倍。
· 对于TriviaQA wiki数据集,重复这个过程,但使用前8个段落。
· 对于未过滤的TriviaQA数据集,使用前16个段落。
其中,在使用方法1(Shared-Normalization)和方法2(合并)进行置信度模型训练时,还要求至少有一个段落包含答案范围,并且这两个段落都包含在同一批中。
模型训练与测试
使用Adadelta优化器进行模型训练。
· 对于SQUAD,设置训练时的批处理大小45,答案区间的跨度大小为17,GRU维度为100维,每个Attention机制的线性层大小为200维。
· 对于TriviaQA,设置训练时的批处理大小60,答案区间的跨度大小小于等于8,GRU维度为140维,每个Attention机制的线性层大小为280维。(这是因为TriviaQA数据集的数据量更大)
此外,在训练期间,权重的指数移动平均值,衰减率保持为0.999。测试时使用权重平均值。且训练期间不会对单词向量进行更新。最后,我们将我们的模型与web搜索后端结合起来,构建了一个端到端的QA系统演示,系统显示它在TREC问答任务中的问题上表现良好。
结论
当在多个段落中使用段落级QA模型时,Shared-Normalization始终优于其他方法。且其对非答案段落进行抽样的训练方法表现更为突出。结合段落选择的建议(对不包含答案的段落,也要作为额外的训练点进行抽样),使用求和的训练目标和模型设计,可以推进TriviaQA的最新技术发展。如演示系统所示(网址:https://documentqa.allenai.org),这项工作甚至已经可以直接应用于构建深度学习的开放式问答系统,源码可见https://github.com/allenai/document-qa。
论文下载链接:
http://aclweb.org/anthology/P18-1078