内容速览 任务介绍 数据集 评价标准 baseline 比赛 机器阅读理解与问答 近年来随着深度学习的飞速发展,世界各地的学者已经在很多领域的困难任务上取得了接近甚至超越人类的水平,如图像识别、语音识别、人脸识别、围棋AI等。现在,包括微软、CMU、Stanford在内的顶级人工智能专家和学者们正在研究更复杂的任务:让机器像人类一样阅读文本,进而根据对该文本的理解来回答问题。这种阅读理解就像是让计算机来做我们高考英语的阅读理解题。 让机器完成阅读理解与问答是当前AI界前沿的一个火热主题,主要涉及到深度学习、自然语言处理和信息检索。机器阅读理解无论是在工业界还是学术界都有着很高的研究价值,它能够让计算机帮助人类在大量文本中找到想要的答案,从而减轻人们对信息的获取的成本。也许,未来的搜索引擎将不仅仅是返回用户相关的链接和网页,而是通过对互联网上的海量资源进行阅读理解,直接得出答案返回给用户。 我在专栏揭开知识库问答KB-QA的面纱中的文章揭开知识库问答KB-QA的面纱8·非结构化知识篇介绍了如何使用非结构化的知识库——维基百科来进行问答,其主要思想是先通过问题在维基百科上检索相关的文章,再对文章中的段落进行阅读理解,最后选出最可能的答案。这其中涉及到最重要的核心技术就是机器的阅读理解与问答。这次,让我们从头来介绍一下机器阅读理解涉及到的baseline、benchmark数据集以及一些前沿方法。 数据集 在这个数据驱动的时代,任何一个任务都离不开一个高质量的数据集。对于阅读理解这个任务,其数据集是较难获取的,早期的一些阅读理解数据集如MCTest、Algebra、Science等都有着数据量小、难度较大(回答问题需要额外的常识)等缺点。针对数据量小的问题,人们构造了阅读理解任务的一个变体——完形填空的数据集,通过去掉现有文本中的某个词语,让程序进行填空,这样的数据集拥有较大的规模,如Children‘s Book Test (CBT) 和 CNN/Daily News。然而,完形填空数据集的答案常常是单一的词语或实体,并且不需要对整段文本进行理解,因此和我们理想的数据集还有一定距离。 幸运的是,在16年,斯坦福大学通过亚马逊众包平台(AMT)建立了一个新的阅读理解数据集——SQuAD。在文章SQuAD: 100,000+ Questions for Machine Comprehension of Text中对该数据集进行了介绍(该论文获得EMNLP2016最佳数据集奖)。该数据集包含了100k个问题答案对,问题和答案只与维基百科中文章的某一段落有关,答案的形式是该段落的某一片段。下表是目前相关数据集的一个对比: 其中RC表示阅读理解,可以看出,除了完形填空(Cloze)数据集外,其他的阅读理解数据集其规模都远小于SQuAD,此外,SQuAD的答案并不是选择句子或进行多项选择,而是段落中的一个片段。 SQuAD数据集建立过程如下:通过对维基百科各个主题下的文章进行均匀采样,得到了536篇文章,通过删除文章中的图表、图片和较短的自然段等预处理,最终得到了23,215个段落。对于每一个段落,要求AMT的工人针对该段落的内容提问,并在该段落中选取出一小段作为该问题的答案,最后再让其他人对数据的质量进行评价。生成数据的交互界面和对工人的要求如下图所示。 文中对部分数据集进行了分析,对答案的类别进行了统计,结果如下: 可以看出答案的类型是丰富多样的,文中也进一步选取了部分数据,对答案的推理过程进行了分类,结果如下: 其中Q:代表问题,Sen:代表和答案相关的句子,粗体部分代表了答案和问题的联系和推理的依据,下划线部分是答案。我们可以看出得到答案的推理过程可以分为上表的5种类型,大部分数据的推理过程需要涉及到词汇变体(如问题中是called而段落中的出现了同义词referred,以及外部知识)和句法变体,也有部分涉及到多个句子间的推理,最后还有少部分的数据存在歧义(ambiguous)。通过上表,我们对数据的难度和内容可以有一个直观的认识。 为了进一部分衡量问题答案对的难度,作者使用了一个很有趣的方法来衡量,即定义问题和答案之间的句法分歧(Syntactic divergence)值。对于问题和包含答案的句子如下所示,我们先找到一个公共词Wittenberg。 然后用依存关系树分别得到答案句子和问题各自的依存关系,对于问题,我们将问题词Who到公共词Wittenberg的依存关系树上的路径提取出来,对于包含答案的句子,我们也将答案到公共词的依存关系路径提取出来,这样我们就得到了两个路径,如下图: 然后我们以两个路径的编辑距离(增加,删除,替换)作为问题与答案的句法分歧衡量标准。我们忽略词汇变体,只考虑依存关系的不同,以这个例子而言,两个路径的编辑距离为0,而下面这个例子编辑距离为4: 可以看出,这个标准在一定程度上可以反映每个数据的难度,作者用这个标准对部分数据进行统计,以评估数据集的难度,结果如下: 从上表可以看出,大部分数据的句法分歧值集中在2~3。 综上,我们可以简单的总结一下Stanford的这个阅读理解数据集SQuAD的特点:
评估 SQuAD数据集有两种评价标准。第一种是完全匹配(Exact match),即系统给出的预测答案和真实答案完全匹配才算作正确,最后统计正确率。第二种是计算F1-Score,系统给出的预测答案和真实答案都可以看作一串tokens,我们可以根据重叠部分计算出F1-Score。对于一个问题含有多个真实值的情况,两个标准都选择得分最高的那个。可以看出,相比完全匹配,F1-Score是一种更宽松的评价标准。当然这两种评价标准都会事先对预测值和答案进行Normalize,即统一为小写、去掉标点符号、多余空格和去除冠词。 Baseline 人类在该数据集测试集上的表现得分为:完全匹配77%,F1-Score 86.8%。 而文中也给出了一个基于特征的逻辑回归(Logistic Regression)方法作为baseline。 对于每一个问题和它对应的段落,我们要先确定候选答案。对于每一个长度为L的句子,都有L^2种片段可以作为候选答案,这样的选择实在是太多了。 由于答案通常是句子的一个片段,因此我们可以先用成分解析树(Constituency Parse Tree)对每个句子的句子成分进行解析,将每一个句子成分(Constituents)作为候选答案。 给定候选答案,我们根据问题、候选答案以及候选答案所在句子提取出一系列特征,特征向量作为逻辑回归的输入,模型训练完毕后,就可以将模型的输出得分作为该候选答案能否作为正确答案的标准。 那么我们需要提取哪些特征呢?
(这里涉及到了很多传统NLP的术语,诸如词性标注、词元、依存关系树、成分解析树、TF-IDF等,这些术语都可以在网上查到,由于篇幅原因这里不再作过多介绍) 综上,我们就定义了180million个特征(大部分特征都来自于词汇化特征和依存关系路径特征)。利用以上特征使用逻辑回归模型在数据上训练三遍,在测试集上达到了40.4%完全匹配和51%的F1-Score。这一性能相比最简单的滑动窗口匹配法要提升了很多(滑动窗口F1-Score仅20%),但是仍然和人类(F1-score 86.6%)有一定差距,结果如下表: 作者也分析了该方法每一种特征对性能的影响: 可以看出词汇化特征和依存关系路径特征是最重要的。 对于不同类型答案的正确率也进行了统计,结果如下表: 可以看出模型对于日期、数字这种特征较为鲜明的答案类型模型具有较高的F1-Score。 最后,作者也比较了模型和人类对于之前定义的不同句法分歧值的问题的F1-Score,如下图: 可以看出人类对于该分歧值并不敏感,想想我们人类确实对于不同句法是具有很强的理解力的,而该baseline方法却对于高分歧值的问题效果较差,这也在一定程度说明了该算法与人类阅读能力的差距。 比赛 和ImageNet一样,针对SQuAD这一数据集,Stanford也举办了SQuAD的比赛。 截止目前,微软亚洲研究院的r-net模型取了最好的效果,排行榜如下图: 下期预告 在下一期,我们将介绍和探讨该比赛排行榜上面已公开的算法,看看深度学习是如何更好的解决该问题的。 敬请期待 |
|