一、介绍
1.简介:
本借助大规模开源的外部知识库是突破机器阅读和问答能力的关键。作者基于 500 万+的 Wikipedia 文档,在SQuAD,WebQuestions 等几个问答数据集上,做开放式的问答系统。
作者提出的 DrQA 模型是由 Document Retriever(文档搜寻) 和 Document Reader(文档阅读) 两部分组成。Document Retriever 采用结合 TF-IDF 加权的词袋向量和 Bigram 去表示每一个问题(Question),然后用这个表示(representation)去召回最相关的五篇文章。Document Reader 则借鉴最近在机器阅读上表现很好的引入注意力的循环神经网络,用段落(Paragraph)和问题(Question)的表示训练两个分类器,预测答案的开始和结束位置。作者在 SQuAD 上测试提出的 Document Reader 模型,取得了在所有发表工作中最好的效果。为了得到包含(Paragraph,question, answer)这种形式的数据集,作者使用 Distantly
Supervised 技术,在已有的四个数据集上,使用 Document Retriever 召回跟 Question 重合度高,且包含 Answer 的 Paragraph,构造包含外部知识的问答数据集。在 Document Reader 上训练和测试,通过不同数据集的迁移学习,有效的提高答案匹配的准确率。
2.相关工作:
传统的QA问题多采用KB(知识库)的形式,然而使用KB解决QA任务有一些固有的局限性,如不完全性、固定模式等,这促使研究人员回到原始文本回答问题。之前的研究多是依靠数据冗余,而不是语言分析,工作重心不在于机器阅读理解。在作者的工作中,注重考虑对文本的理解,并使用维基百科的文本文件作为唯一的资源,解决大规模机器阅读任务(MRS:machine reading at scale)。作者的工作将维基百科当作文章的集合而不考虑它内部的图表等结构。因此这个方法具有通用性,可以将维基百科换成别的文档集合。
二、系统介绍:
1. DrQA系统流程:
(1)Document Retriever:基于二元语法哈希(bigram hashing)和TF-IDF匹配的搜索组件(详见这里)对于给出的问题,有效地返回相关的文档
(2)Document Reader:多层RNN机器阅读理解模型,在(1)所返回的文档中查找问题答案的所在。
2.详细介绍:
(1)Document Retriever
结合TF-IDF加权的词袋向量和 Bigram 去表示每一个问题(Question),然后用这个表示(representation)去召回最相关的五篇文章。采用有效的(非机器学习式的)文档检索系统,初步缩减查找范围并只读取那些可能的相关文章。一个简单的倒排索引再加上检索词向量模型打分就能在此类问题上有良好的表现。通过实验,文章又使用了局部词序的2元特征对系统进行了改进。此部分返回五篇与问题最相关的五篇文章。这些文章将会在下一个document reader的部分中被处理。
(2) Document Reader
给定一个问题q,由l个tokens组成 {}。有n个段落的文档或文档集,每个段落p由m个tokens组成{ },使用RNN模型将依次对每一个段落进行处理,最后综合预测答案 。模型是这样工作的:
a.段落编码:
首先将段落p当中的所有tokens 作为特征向量的序列 ,将它们作为输入传入RNN网络中,从而获得:
其中,编码了tokens 周围的有效上下文信息(使用多层双向LSTM),为每层最后隐单元的级联。
特征向量的组成:
(i)word embeddings:
使用300维的Glove词向量。保留大部分预训练词向量固定,只微调的1000个最常见的问题词,因为一些关键字,比如what,how,which等等可能是QA系统的关键。
(ii)Exact match:
使用三个简单的二元特征来表示是否精确匹配q中的疑问词,无论是原字母、大小写字母还是引理形式。这个简单的特征将在之后的试验中证明非常有用。
(iii)Token features:
加入一些人工特征反映token 在上下文中的特性。包括词性,命名实体识别和词频。
(iv)Aligned question embedding:
最后一部分是对齐问题嵌入。Attention的权重 捕捉到了与每一个疑问词之间的相似性。具体来说,权重是由词向量的非线性映射点乘得来的:
其中,是一个带有ReLU的非线性全连接层。与exact match特征相比,此特征在相似但不相同的单词之间增加了软对齐,例如单词car 与 vehicle(交通工具;车辆)。
b.问题编码:
问题编码简单一些,在问题词的词向量上采用另一个RNN,并将隐藏单元的输出组合成一个向量 {}。的计算公式:
其中,
表征了每一个疑问词的重要程度。W是待学习的权重。
c.预测:
在段落层级上,我们的目标是预测正确答案所在的span(跨度)。接收段落向量{}和问题向量作为输入,独立训练两个分类器来预测这个span的两端。具体来说就是使用一个双线性项来捕获 和 之间的相似性,并且计算每一个token作为开始或结束的概率:
在预测阶段,我们选择的最佳跨度token 满足条件并且最大。
三、数据
实验采用了三种数据集:(1)维基百科作为寻找答案的知识源;(2)SQuAD用于训练document reader;(3)三个QA datasets (CuratedTREC, WebQuestions and WikiMovies)用于测试整个系统开放领域QA的能力,并且评估模型在多任务和远程监督中学习的能力。数据集的统计数据如表所示。
1.维基百科(知识源)
只提取纯文本,去除所有结构化的数据如图表。最终保留了500w+篇文章,包含了900w+个不同的未标记的tokens。
2. SQuAD(The Stanford Question Answering Dataset)
一个基于维基百科的机器阅读理解数据集。87K个用于训练的例子,10k用于开发。每个例子都是由从维基百科文章中提取的段落和一个由人提出的相关问题。答案是段落中的一段跨度,一旦模型预测的答案与之匹配则给模型一个信任分数。使用两个评估指标:精确字符串匹配(EM)和F1得分,在token级别上测量精度和召回的加权平均。与标准的机器阅读理解任务不同的是,我们需要模型在全部的维基百科作为知识源的基础上回答问题,而不是像标准SQuAD中那样事先给出相关段落。
3.开放领域QA评价资源:
选取 CuratedTREC, WebQuestions 和 WikiMovies 三个数据集
4.远程监督数据
CuratedTREC, WebQuestions 和 WikiMovies数据集中只包含问答对,不像SQuAD那样含有相关的文档或段落。因此不能直接拿来训练document reader。继承之前使用距离监督做关系抽取的工作,我们使用一个程序自动为每一个训练样本关联相关段落,然后将这些例子加入到我们的训练集中。首先对问题运行document retriver选出最相关的5篇维基百科的文章,这些文章的所有段落与已知答案不能精确匹配的,太长和太短的都直接丢弃。如果在问题中检测到命名实体,丢弃任何不包含它们的段落。在每一页的剩余段落中,对匹配答案的所有位置使用unigram和bigram在问题和20个token的窗口之间的重叠来打分,保留重叠最高的5个段落。如果有零重叠的段落,则丢弃这个样本。否则,将每个找到的对添加到我们的训练数据集中。
四、实验部分
先分别评测retriever和reader两部分,再将两部分结合起来测试。
1.retriever查找相关文章:
下表比较了两种方法的表现。具体来说,我们计算与问题答案相关的文本跨度出现在每个系统返回的相关页的前5名中的比率。所有数据集的测试结果都显示我们的方法优于维基百科的搜索。
2.reader 评测
在标准SQuAD数据集上评测reader部分。
实施细节:使用3层128个隐藏单元的双向LSTM模型对问题和段落做编码。我们使用斯坦福corenlp工具包来产生词性和命名实体标记。最后,对所有训练示例按段落长度进行排序,并分为32个minibatches实例。使用Adamax作为目标函数。
3.整体系统测试
比较三个版本的QrQA,评价使用距离监督和多任务学习对reader的影响(retriever部分保持不变)。
SQuAD: 仅使用SQuAD训练集训练document reader模型。
Fine-tune (DS): 先使用SQuAD预训练document reader模型,对每个数据集独立使用其远程监督(DS)训练集进行微调。
Multitask (DS):使用SQuAD和所有DS数据训练document reader模型。
五.总结
本文的核心思想是把open domain QA和machine comprehension结合起来,使得机器能以更加灵活的方式回答问题。本文使用维基百科作为唯一知识源,提出了一种解决开放式问题的方法。本文基于假设:任何有关事实的问题都可以用维基百科文章中的文字来回答。这个大规模机器阅读 (machine reading at scale MRS) 的任务结合了文件检索(找相关文章)和机器文本理解(识别答案所对应文本)。相比较于单任务学习,使用多任务学习 (multitask learning) 和distant supervision可以在多个任务上实现性能提升。