机器阅读理解 --- machine reading comprehension
参考:
https://www.msra.cn/zh-cn/news/features/machine-text-comprehension-20170508
https://www.jiqizhixin.com/technologies/69869886-047b-419b-8fa1-61ffd956b80b
https://www.jiqizhixin.com/articles/2018-12-03
简介
机器阅读理解(MRC)是指对文本的自动、无监督理解;让计算机具备通过文本数据获取知识和回答问题的能力,人们相信这是构建通用智能体的一个关键步骤。MRC社区近些年来增长迅速。
在过去的二十年左右,自然语言处理(NLP)为底层句法和语义文本处理任务开发了强大的方法,如解析,语义角色标注和文本分类。在同一时期,机器学习和概率推理领域也取得了重要突破。现在AI社区已经逐步转向研究如何利用这些进步来理解文本。
这里“理解文本”一词意思是基于文本语料库和背景/理论形成一套连贯一致的理解。因为文本和背景/理论可能不一致,所以用概率术语来表达结果信念和推理过程是很自然的。这里值得指出,许多对文章的理解只能与背景/理论相结合。举例来说,如果文字指出一个人在满意的进餐后离开餐厅,那么推断他可能已经支付账单并留下小费是合理的。即推论是文本理解的一个组成部分。
一般来说,人们在读完一篇文章之后就会在脑海里形成一定的印象,例如这篇文章讲的是什么人,做了什么事情,出现了什么,发生在哪里等等。人们能够很轻而易举地归纳出文章中的重点内容。机器阅读理解的研究就是赋予计算机与人类同等的阅读能力,即让计算机阅读一篇文章,随后让计算机解答与文中信息相关的问题。这种对人类而言轻而易举的能力,对计算机来说却并非如此。
机器阅读理解其实和人阅读理解面临的问题是类似的,不过为了降低任务难度,很多目前研究的机器阅读理解都将世界知识排除在外,采用人工构造的比较简单的数据集,以及回答一些相对简单的问题。给定需要机器理解的文章以及对应的问题,比较常见的任务形式包括人工合成问答、Cloze-style queries和选择题等方式。
人工合成问答是由人工构造的由若干简单事实形成的文章以及给出对应问题,要求机器阅读理解文章内容并作出一定的推理,从而得出正确答案,正确答案往往是文章中的某个关键词或者实体。比如下图展示了人工合成阅读理解任务的示例。图1示例中前四句陈述句是人工合成的文章内容,Q是问题,而A是标准答案。
Cloze-style queries是类似于“完形填空”的任务,就是让计算机阅读并理解一篇文章内容后,对机器发出问题,问题往往是抽掉某个单词或者实体词的一个句子,而机器回答问题的过程就是将问题句子中被抽掉的单词或者实体词预测补全出来,一般要求这个被抽掉的单词或者实体词是在文章中出现过的。目前的各种阅读理解任务中“完形填空式”任务是最常见的类型。
很长一段时间以来,自然语言处理的研究都是基于句子级别的阅读理解。例如给计算机一句话,理解句子中的主谓宾、定状补,谁做了何事等等。但长文本的理解问题一直是研究的一个难点,因为这涉及到句子之间的连贯、上下文和推理等更高维的研究内容。随着各种数据集的推出,MRC任务也已经从早期的完形填空式的测试发展成了从单篇文章中提取答案,并且最近还发展成了更复杂的基于网络数据的问答。例如在智能客服应用中,人们可以使用机器阅读用户手册等材料,自动或辅助客服回答用户问题;教育领域可利用该技术从海量题库中辅助出题;在金融领域中,该技术可从大量新闻文本中抽取相关金融信息等。
机器阅读(MR)与当前的语义NLP研究领域(如信息提取(IE)或问答(QA))非常不同。许多NLP任务利用监督式学习技术,这些技术依赖于手动标记的训练实例。例如,IE系统通常利用从目标关系的实例中提取的规则。然而,MR并不局限于一小组目标关系。事实上,阅读任意文本时遇到的关系一般并不是事先知道的。因此,为每个感兴趣的关系建立手动标记的训练实例是不切实际的。与许多NLP任务相比,MR本质上是无人监督的。
另一个重要的区别是IE和QA关注从文本中获得的孤立的信息,而MR则更注重文本信息内在的联系。虽然MR建立在NLP技术的基础上,但它是一个整体过程,将从文本中收集的信息与机器的现有知识进行综合。
发展历史
在人工智能发展的早期阶段,研究人员倾向于通过以形式逻辑语言来手工构建大规模结构化知识库,并开发自动推理方法的方式从知识中获取事实进而实现智能机器。然而,随着现代化互联网络的出现,我们所面对的是大量的以人类语言编码的巨大在线信息库。其中一个典型的例子就是科技文献,科技文献的数量正在快速增长:美国国家医学图书馆Medline系统中的索引规模呈指数级增长。即使在狭小的专业领域,科学家们也无法跟上这样的增长速度。因此,为了理解和总结文献,以及从这些文献中提取事实和假设,针对机器阅读的需求逐步提升。
早期的研究还谈不上阅读理解,其任务也只是阅读而已。例如,使用结构化的预测分类器从词序列和句子的语法结构中提取特征来抽取关系。一个比较典型的例子是Aron Culotta和Jeffrey Sorensen在2004年使用支持向量机(SVM)检测和分类新闻文章的自动内容提取(ACE)语料库中的实体之间的关系。这类系统是诸如生物医学等领域中应用的文献事实提取工具的支柱。
很快,随着深度学习的流行,越来越多的研究者使用神经网络来构建自己的模型。Karl Moritz Hermann等学者于2015年发表的论文“Teaching Machines to Read and Comprehend”中提出了两个基础模型——”Attentive Reader”和“Impatient Reader”,成为了后来许多研究的基础。Attention Reader在处理的时候,⾸先采⽤双向RNN分别表⽰⽂本(看做⼀个“长句⼦”)和问句,再利⽤attention机制寻找⽂本表⽰中同问句相关的信息,最后根据相关程度提取⽂本信息做分类并给出预测的答案。2016年,IBM公司的Kadlec提出了Attention-Sum Reader,该模型直接利⽤attention机制基于问句表⽰在⽂章中寻找最相关的词作为答案。Attention-SumReader同Attention Reader在模型框架上⼏乎类似。Attention-Sum Reader直接利⽤attention机制获取⽂本中各个位置作为答案的概率(需要将同⼀词语在⽂本中不同位置的概率加和作为该词语成为答案概率),⽽不再同Attention Reader最后⼀步那样,通过分类(softmax)获取各个词语作为答案的概率。
同年,Rajpurkar等人提出阅读理解数据集SQuAD。该数据集包含10万个(问题,原文,答案)三元组,原文来自于536篇维基百科文章,而问题和答案的构建主要是通过众包的方式,让标注人员提出最多5个基于文章内容的问题并提供正确答案,且答案出现在原文中。自SQuAD出现后,涌现了大量具有代表性的模型,极大地促进了机器阅读理解领域的发展。SQuAD提出后,Caiming Xiong等学者引入动态协调网络(DCN)进行问题解答(Question Answering)的任务,该模型当时在SQuAD比赛中取得了第九名,单个DCN模型将先前的F1值从71.0%提高到75.9%,而使用模型集成(model ensemble)后提升到了80.4%。
2017年,为了研究机器阅读理解的问题,谷歌韦福如和杨南等学者在内的研究团队试图去建模人做阅读理解的过程。他们采用了R-NET,一个多层的网络结构,分别从四个层面对整个阅读理解任务的算法进行了建模。取得了当时SQuAD数据集测评的第一名。
2018年,微软和阿里巴巴的机器阅读理解系统在SQuAD数据集测评结果中取得了并列第一的成绩。这是历史上第一次,机器阅读理解的精准匹配分数超越了人类的评测结果。阿里巴巴参与测评的系统名为SLQA,即Semantic Learning for Question Answering,是iDST NLP团队提出的「基于分层融合注意力机制」的深度神经网络系统。而在阅读理解任务上使用基于注意力的深度神经网络最早就是由Karl Moritz Hermann和Phil Blunsom等学者在2015提出的,当时主要是针对针对机器阅读系统缺乏有效的监督学习算法这种类型的评估和大规模的测试数据集。随后,百度提出的V-NET模型,登顶MS MARCO数据集榜单。值得注意的是,此次百度只凭借单模型(single model)就拿到了第一名,并没有提交多模型集成(ensemble)结果。
据介绍,相比SQuAD,MARCO的挑战难度更大,因为它需要测试者提交的模型具备理解复杂文档、回答复杂问题的能力。对于每一个问题,MARCO提供多篇来自搜索结果的网页文档,系统需要通过阅读这些文档来回答用户提出的问题。但是,文档中是否含有答案,以及答案具体在哪一篇文档中,都需要系统自己来判断解决。更有趣的是,有一部分问题无法在文档中直接找到答案,需要阅读理解模型自己做出判断;MARCO也不限制答案必须是文档中的片段,很多问题的答案必须经过多篇文档综合提炼得到。这对机器阅读理解提出了更高的要求,需要机器具备综合理解多文档信息、聚合生成问题答案的能力
而在ACL2018大会上,北京大学计算语言学教育部重点实验室与百度的研究者考虑到在真实网络数据上的机器阅读理解(MRC)在回答一个问题时通常需要机器分析搜索引擎检索到的多篇文章。相比于在单篇文章上的MRC,多文章MRC的难度更大,因为我们很可能会从不同的文章得到多个让人困惑的候选答案。他们提出了一种端到端的神经模型,能让这些来自不同文章的候选答案基于它们的内容表征彼此验证。
目前MRC是一个很活跃的研究领域,研究进展也很快,也有不少研究人员试图将MRC与迁移学习等方向结合起来。
主要事件 年份 事件 相关论文 Reference
2002 Peter Turney提出了一种简单的无监督学习算法,可以高度准确地将意见词语分为正面或负面 Turney, P. D. (2002). Thumbs up or thumbs down? Semantic orientation applied to unsupervised classification of reviews. Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics, pp 417-424.
2004 Aron Culotta和Jeffrey Sorensen使用支持向量机(SVM)检测和分类新闻文章的自动内容提取(ACE)语料库中的关系 Culotta, A.; Sorensen, J. (2004). Dependency tree kernels for relation extraction. Proceedings of the 42ndAnnual Meeting of the Association for Computational Linguistics (Associationfor Computational Linguistics, Stroudsburg, PA, 2004), pp. 423–429.
2015 Karl Moritz Hermann等学者发表的论文“Teaching Machines to Read and Comprehend”中提出了两个基础模型——”Attentive Reader”和“Impatient Reader”,成为了后来许多研究的基础 Hermann, K. M.; Kocisky, T.; Grefenstette, E.; Espeholt, L.; Kay, W.; Suleyman, M. and Blunsom, P. (2015). Teaching machines to read and comprehend. In Proc. of NIPS, pp 1684–1692.
2016 IBM 公司的 Kadlec 提出了 Attention-Sum Reader Kadlec, R.; Schmid, M.; Bajgar, O. and Kleindienst, J. (2016). Text understanding with the attention sum reader network. arXiv preprint arXiv:1603.01547.
2016 Rajpurkar 等人 提出阅读理解数据集SQuAD Rajpurkar, P.; Zhang, J.; Lopyrev, K. and Liang, P. (2016). Squad: 100,000+ questions for machine comprehension of text. In Proceedings of EMNLP.
2016 Caiming Xiong等学者引入动态协调网络(DCN)进行问题解答(Question Answering)的任务 Xiong, C.; Zhong, V.; Socher, R. (2016). Dynamic Coattention Networks For Question Answering. arXiv:1611.01604.
2017 谷歌韦福如和杨南等学者在内的研究团队提出了他们采用了R-NET Wang, W.; Yang, N.; Wei, F.; Chang, B. and Zhou, M. (2017). Gated Self-Matching Networks for Reading Comprehension and Question Answering. ACL 2017.
2018 北京大学计算语言学教育部重点实验室与百度的研究者提出了一种能帮助机器更好地从多篇文章中挑选出正确答案的方法 Wang, Y. et al. (2018).Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification.arXiv:1805.02220.
发展方向
瓶颈
眼下能够回答复杂问题的系统仍处于起步阶段。以必应等搜索引擎和微软小娜(Cortana)等人工智能助手为例,目前它们只能回答一些基本问题,例如“春节黄金周哪天开始?”或者“2,000乘以43得多少?”等。多数情况下,搜索引擎和人工智能助手只能向用户提供一组搜索结果。用户固然可以据此获取所需信息,但前提是他们仍需自己动手再从搜索结果进行筛选,并在网页上找到答案。特别是当MRC涉及到多文章时,目前模型的表现还不够好。
机器阅读目前在场景数据相对较为充分、文档结构清晰、内容描述较为正规的文档上可以取得比较好的结果,如 Wikipedia 类客观知识问答,但当遇到上述条件不满足的复杂问题时,机器阅读还处于比较初级的阶段。另外,机器阅读始终面对着数据规模小或质量不佳的问题。虽然已经有SQuAD这样的数据集,大量的数据集是模型表现的重要前提。
未来发展方向
大规模语料集的构建;
基于深度学习的算法和模型还有很大的空间,适合机器阅读理解的网络结构值得在SQuAD类似的数据集上进一步尝试和验证;
目前基于深度学习的阅读理解模型都是黑盒的,很难直观地表示机器进行阅读理解的过程和结果,因而可解释性的深度学习模型也将是很有趣的研究方向;
结合多任务(例如阅读理解之后进行摘要和问答)的模型;
大部分算法都是抽取型的方式,未来生成型的算法也值得更多的探索和研究;
随着自然语言处理的发展,目前的研究越来越向着模拟人类阅读的方向发展,如结合篇章内容审题、带着问题反复阅读文章、避免阅读中遗忘而进行相关标注等;并将机器阅读的技术真正应用于业务场景。
目前机器阅读理解关注的都是理解客观信息的能力,未来机器理解文字里面所表达出来的主观信息(例如情感)也是非常有趣并值得关注的方向。
从短句到长文,计算机如何学习阅读理解
做机器阅读理解研究的学者想必对由斯坦福大学自然语言计算组发起的SQuAD(Stanford Question Answering Dataset)文本理解挑战赛并不陌生,它也被誉为“机器阅读理解界的ImageNet”。诸多来自全球学术界和产业界的研究团队都积极地参与其中,目前微软亚洲研究院的自然语言计算研究组持续稳居榜首,与包括艾伦研究院、IBM、Salesforce、Facebook、谷歌以及CMU(卡内基·梅隆大学)、斯坦福大学等在内的全球自然语言处理领域的研究人员,共同推动着自然语言理解的进步。
那么,SQuAD机器阅读理解挑战赛是怎样进行的呢?SQuAD通过众包的方式构建了一个大规模的机器阅读理解数据集(包含10万个问题),即将一篇几百(平均100,最多800)词左右的短文给标注者阅读,随后让标注人员提出最多5个基于文章内容的问题并提供正确答案。SQuAD向参赛者提供训练集用于模型训练,以及一个规模较小的数据集作为开发集,用于模型的测试和调优。与此同时,他们提供了一个开放平台供参赛者提交自己的算法,并利用测试集对其进行评分,评分结果将实时地在SQuAD官网上进行更新。
得益于SQuAD所提供的庞大数据规模,参与该项挑战赛的选手不断地对成绩进行刷新,SQuAD挑战赛也逐步成为行业内公认的机器阅读理解标准水平测试。在今年的ACL大会(自然语言处理领域最顶尖的会议之一)的投稿里,有非常多的论文就是关于这项挑战赛的研究,其影响力可见一斑。从ACL 2017论文主题的可视分析中可以看到,“reading comprehension(阅读理解)”是今年ACL录取论文中最热门的关键词和任务,广受自然语言处理领域研究人员的关注。
一般来说,人们在读完一篇文章之后就会在脑海里形成一定的印象,例如这篇文章讲的是什么人,做了什么事情,出现了什么,发生在哪里等等。人们能够很轻而易举地归纳出文章中的重点内容。机器阅读理解的研究就是赋予计算机与人类同等的阅读能力,即让计算机阅读一篇文章,随后让计算机解答与文中信息相关的问题。这种对人类而言轻而易举的能力,对计算机来说却并非如此。
很长一段时间以来,自然语言处理的研究都是基于句子级别的阅读理解。例如给计算机一句话,理解句子中的主谓宾、定状补,谁做了何事等等。但长文本的理解问题一直是研究的一个难点,因为这涉及到句子之间的连贯、上下文和推理等更高维的研究内容。
做顶尖的机器阅读理解研究
正如前文所说,机器阅读理解的研究之路始终充满着许多困难和挑战。
首先是数据问题。目前基于统计方法(尤其是深度学习模型)的机器阅读理解的研究离不开大量的、人工标注的数据。在SQuAD数据集推出之前,数据集常常面临规模较小,或是质量不佳(因为多是自动生成)的问题,而SQuAD无论是在数据规模还是数据质量上都有一个很大的提升。在基于深度学习方法的研究背景下,数据量不够就很难做出有效、或是有用的模型,更难对模型进行合理、标准的测试。
另一方面则是算法问题。之前自然语言处理在做阅读理解或者是自动问答研究的时候,会把这个研究问题视作一个系统的工程,因而把这个问题分成许多不同的部分。例如先去理解用户的问题;再去找答案的候选;再将候选答案进行精挑细选、互相比较;最后对候选答案进行排序打分,挑选出最可能的答案或者生成最终的答案。而这个繁复的过程中,似乎其中的每一步都是可以优化的。
但它相应地也会带来一些问题。第一,当你分步去优化这其中的每一个过程的时候,你会去研究如何更好地理解这个问题,或是研究如何更好地把答案做对,这些分目标研究结果的整合未必能和“如何将阅读理解的答案正确找出来”这个目标完全吻合。第二,如果想做局部的优化,就意味着每一个局部过程都需要相应的(标注)数据,这使得阅读理解的研究进展缓慢。如果只使用问题-答案作为训练数据,中间模块的优化得到的监督信息不那么直接,因而很难有效。
结合了上述问题,微软亚洲研究院自然语言计算研究组的机器阅读理解研究团队采用的则是一个端到端的深度学习模型的解决方案,区别于上述的每一个细化环节的具体优化过程,他们采取的方法是把中间环节尽可能的省去,使得整体的过程能够得到最优效果。
实际上,SQuAD的挑战赛形式就是让系统在阅读完一篇几百词左右的短文之后再回答5个基于文章内容的问题。这个问题可能比大家熟知的高考英文阅读理解,或是托福阅读考试都要难得多。人们参加的这些考试往往是一个答案被限定住范围的选择题。
但是在SQuAD的数据集中,问题和答案具有非常丰富的多样性。这五个问题中可能涉及文章中的某一个人,某一个地点,或是某一个时间等等实体;也有可能会问一些为什么(Why)、怎么样(How)的问题。后者的答案可能实际上是一句话,甚至是一小段话,因此解决这个问题只会更加棘手。
R-NET: 基于深度神经网络的端到端系统
为了研究机器阅读理解的问题,包括韦福如和杨南等在内的研究团队试图去建模人做阅读理解的过程。他们采用了R-NET,一个多层的网络结构,分别从四个层面对整个阅读理解任务的算法进行了建模。
我们在做阅读理解的过程中,一个常见的顺序是这样的:首先阅读整篇文章,对文章有一个初步理解之后再去审题,从而对问题也有了一定认知。第二步,可能就需要将问题和文中的部分段落和内容做一些关联。例如题干中出现的某些关键已知信息(或证据)的,找出一些候选答案,举例来说:如果问题问的信息是时间,那么文中出现的与时间相关的信息就可能是候选答案。第三步,当我们将候选答案与问题进行对应之后,我们还需要综合全文去看待这些问题,进行证据的融合来辅证答案的正确性。最后一步,就是针对自己挑出的答案候选进行精筛,最终写下最正确的答案。
有鉴于此,研究组提出的模型也就分为这样的四层。最下面的一层做表示学习,就是给问题和文本中的每一个词做一个表示,即深度学习里的向量。这里研究组使用的是多层的双向循环神经网络。第二步,就是将问题中的向量和文本中的向量做一个比对,这样就能找出那些问题和哪些文字部分比较接近。接下来,将这些结果放在全局中进行比对。这些都是通过注意力机制(attention)达到的。最后一步,针对挑出的答案候选区中的每一个词汇进行预测,哪一个词是答案的开始,到哪个词是答案的结束。这样,系统会挑出可能性最高的一段文本,最后将答案输出出来。整个过程就是一个基于以上四个层面的神经网络的端到端系统(见下图)。
未来的方向
提及机器阅读理解未来值得探索的方向,韦福如分享了他的三点看法。他认为一方面基于深度学习的算法和模型还有很大的空间,适合机器阅读理解的网络结构值得在SQuAD类似的数据集上进一步尝试和验证。具体来说,通过对R-NET目前处理不好的问题的进一步分析,能否提出可以对复杂推理进行有效建模,以及能把常识和外部知识(比如知识库)有效利用起来的深度学习网络,是目前很有意义的研究课题。另外,目前基于深度学习的阅读理解模型都是黑盒的,很难直观地表示机器进行阅读理解的过程和结果,因而可解释性的深度学习模型也将是很有趣的研究方向。
其次,人类理解文本的能力是多维度的,结合多任务(尤其是阅读理解相关的任务,例如阅读理解之后进行摘要和问答)的模型非常值得关注和期待。更进一步,虽然SQuAD提供了比较大的人工标注数据集,如何有效且高效地使用未标注的数据也是非常值得期待的研究课题和方向。最后从任务上看,目前SQuAD的任务定义中答案是原文的某个子片段,而实际中人可能读完文章之后需要进行更复杂的推理、并组织新的文字表达出来。
“目前我们的算法基本都是抽取型的方式,未来生成型的算法也值得更多的探索和研究。另外,目前机器阅读理解关注的都是理解客观信息的能力,未来机器理解文字里面所表达出来的主观信息(例如情感)也是非常有趣并值得关注的方向。”韦福如说道。
谷歌BERT模型深度解析
最近谷歌搞了个大新闻,公司AI团队新发布的BERT模型,在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且还在11种不同NLP测试中创出最佳成绩,包括将GLUE基准推至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进率5.6%)等。可以预见的是,BERT将为NLP带来里程碑式的改变,也是NLP领域近期最重要的进展。
从现在的大趋势来看,使用某种模型预训练一个语言模型看起来是一种比较靠谱的方法。从之前AI2的 ELMo,到 OpenAI的fine-tune transformer,再到Google的这个BERT,全都是对预训练的语言模型的应用。
BERT这个模型与其它两个不同的是:
1、它在训练双向语言模型时以减小的概率把少量的词替成了Mask或者另一个随机的词。我个人感觉这个目的在于使模型被迫增加对上下文的记忆。至于这个概率,我猜是Jacob拍脑袋随便设的。
2、增加了一个预测下一句的loss。这个看起来就比较新奇了。
BERT模型具有以下两个特点:
第一,是这个模型非常的深,12层,并不宽(wide),中间层只有1024,而之前的Transformer模型中间层有2048。这似乎又印证了计算机图像处理的一个观点——深而窄 比 浅而宽 的模型更好。
第二,MLM(Masked Language Model),同时利用左侧和右侧的词语,这个在ELMo上已经出现了,绝对不是原创。其次,对于Mask(遮挡)在语言模型上的应用,已经被Ziang Xie提出了(我很有幸的也参与到了这篇论文中):[1703.02573] Data Noising as Smoothing in Neural Network Language Models。这也是篇巨星云集的论文:Sida Wang,Jiwei Li(香侬科技的创始人兼CEO兼史上发文最多的NLP学者),Andrew Ng,Dan Jurafsky都是Coauthor。但很可惜的是他们没有关注到这篇论文。用这篇论文的方法去做Masking,相信BRET的能力说不定还会有提升。
论文的主要贡献
(1)证明了双向预训练对语言表示的重要性。与之前使用的单向语言模型进行预训练不同,BERT使用遮蔽语言模型来实现预训练的深度双向表示。
(2)论文表明,预先训练的表示免去了许多工程任务需要针对特定任务修改体系架构的需求。 BERT是第一个基于微调的表示模型,它在大量的句子级和token级任务上实现了最先进的性能,强于许多面向特定任务体系架构的系统。
(3)BERT刷新了11项NLP任务的性能记录。本文还报告了 BERT 的模型简化研究(ablation study),表明模型的双向性是一项重要的新成果。相关代码和预先训练的模型将会公布在goo.gl/language/bert上。