写点什么

神经阅读理解与超越:基础篇

2019 年 8 月 03 日

神经阅读理解与超越:基础篇

导读

本文来自 Duke Lee陈丹琦博士 的博士毕业论文**《 Neural Reading Comprehension and Beyond 》的翻译。该论文上传仅四天就获得了上千次的阅读量,成为了斯坦福大学近十年来最热门的毕业论文**之一。


Duke Lee:我一直觉得阅读一本优秀的博士毕业论文是最快了解一个领域的方式。论文中会介绍它的研究的前因后果以及最近和未来的发展趋势,并且,这里面会引用大量的参考文献,这都是宝贵的经过整理的学习资料。


其次,我们可以从行文思路中学习到作者的思维方式,从其发表文章的先后顺序和年代,看到作者的成长,可以借此学习到作者的思维和学习方式。我没有翻译作者的 Acknowledgment,但是我强烈建议大家去读一下,了解一下作者的学习心态。


坦白说,中西方的思维方式 ( 我觉得会反应在语系上 ) 会略有不同,在读硕士研究生的期间,在最初的时候和导师以及一些拉丁语系母语同学的沟通的时候,我会比较难跟上。但是和中国人或者不是英语 native speaker 的人沟通的时候会比较容易一些,按照乔姆斯基的理论来说,我们都在作为“外人”努力学习英语的 generative rules,然后使用英文沟通学习。所以能找到一篇优秀的“中国造”英文博士论文也是很幸运的。希望我们都可以从中学习到很多有意义的东西,欢迎一起讨论一起进步。


摘要

教机器理解人类语言文档是人工智能领域最难以捉摸和长期存在的挑战之一。本文探讨了阅读理解的问题:如何构建计算机系统来阅读一篇文章并回答理解问题。一方面,我们认为阅读理解是评估计算机系统理解人类语言能力的一项重要任务。另一方面,如果我们能够构建高性能的阅读理解系统,它们将成为问答和对话系统等应用的关键技术。


本文主要研究了基于深度神经网络的阅读理解模型。与传统的稀疏的、手工设计的基于特征的模型相比,这些端到端神经模型被证明在学习丰富的语言现象方面更有效,并在很大程度上提高了所有现代阅读理解基准的性能。


本文由两部分组成。第一部分,我们的目标是涵盖神经阅读理解的本质,并介绍我们在构建有效的神经阅读压缩模型方面所做的努力,更重要的是了解神经阅读理解模型实际学习了什么,以及解决当前任务需要多大的语言理解深度。我们还总结了该领域的最新进展,并讨论了该领域未来的发展方向和有待解决的问题。


在本文的第二部分,我们探讨了如何基于最近神经阅读理解的成功构建实际应用。特别是,我们开创了两个新的研究方向:


  1. 如何将信息检索技术与神经阅读理解相结合,解决大规模开放领域的问题回答;

  2. 如何从现有的单轮、基于斯潘语言的阅读理解模型中构建会话问答系统。


我们在 DRQA 和 COQA 项目中实现了这些想法,并证明了这些方法的有效性。我们相信它们对未来的语言技术有着巨大的前景。


1. Introduction

1.1 Motivation

教机器理解人类语言文档是人工智能领域最难以捉摸和长期存在的挑战之一。在我们继续往下读之前,我们必须搞清楚,理解人类语言意味着什么?图 1.1 展示了 MCTEST 数据集中的一个儿童故事 ( Richardson et al.,2013 ),这个故事仅仅使用了简单的词汇和语法。为了处理这样一段文本,NLP 社区花了几十年的时间来解决文本理解各个方面的不同任务,包括:


  • 词性标注 ( part-of-speech tagging )。这需要我们的机器理解文本中的单词词性。例如,第一句话中 Alyssa got to the beach after a long trip。其中 Alyssa 是一个专有名词 ( proper noun ),beach 和 trip 是常见名词 ( common noun ),got 是动词的过去式 ( verb in its past tense ),long 是形容词 ( adjective ),after 是介词 ( preposition )。

  • 命名实体识别 ( named entity recognition )。我们的机器也应该明白,故事中是 Alyssa、Ellen、Kristen 人物的名字,而 Charlotte、Atlanta 和 Miami 是地点的名字。

  • 语法解析 ( syntactic parsing )。为了理解每个句子的意思,我们的机器还需要理解单词之间的关系,或者语法 ( grammatical ) 结构。还是用故事中的第一句话举例:Alyssa got to the beach after a long trip,机器应该理解 Alyssa 是主语,beach 是动词 got 的宾语,而 after a long trip 作为一个整体是一个介词短语,它描述了动词与时间的关系。

  • 指代消解。此外,我们的机器甚至需要理解句子之间的关系。例如,She’s now in Miami 这句话中提到的 She 指的是第一句中提到的 Alyssa,而提到的 The girls 指的是前面句子中提到的 Alyssa、Ellen、Kristen 和 Rachel。



Figure1.1: A sample story and comprehension questions from the MCTEST dataset (Richardson et al., 2013).


是否有一种综合评价可以检验所有这些方面,并探索更深层次的理解?我们认为,阅读理解的任务——在一篇文章中回答理解性问题——是一种恰当而重要的方法。就像我们使用阅读理解测试来衡量一个人对一段文字的理解程度一样,我们相信它也可以在评估计算机系统对人类语言的理解程度方面发挥同样的作用。


译者注,这个和我们利用阅读理解来判定一个人的语言水平是类似的思想,所以高考的阅读理解是很有意义的。


让我们仔细看看同一篇文章中提出的一些理解性问题 ( Figure 1.1 ):


  1. 为了回答第一个问题:Alyssa 在哪个城市?我们的机器需要找出 she is now in Miami,并解决指代消解的问题,即 she 在这里指的是 Alyssa,最后给出正确答案 Miami。

  2. 对于第二个问题,What did Alyssa eat at the restaurant? 首先,他们需要找到这两句话:The restaurant had a special on catfish ( 鲶鱼 )。以及 Alyssa enjoyed the restaurant’s special。并且理解 Alyssa 在第二句话中所 enjoyed 的 special 是第一句话中的 special。而基于 catfish 修饰 special,所以答案就是 catfish。

  3. 最后一个问题特别具有挑战性。为了得到正确的答案,机器必须记住文本中提到的所有人的名字和他们之间的关系,进行一些算术推理 ( 计数 ),最后给出一个答案。


正如我们所看到的,我们的计算机系统必须理解文本的各个方面来正确地回答这些问题。由于问题可以被设计成问询我们关心的方面,所以阅读理解可能是评估语言理解最合适的任务 ( reading comprehension could be the most suitable task for evaluating language understanding )。这是本文的中心主题。


在本文中,我们研究了阅读理解的问题:我们如何构建计算机系统来阅读一篇文章并回答这些理解性问题?我们特别关注神经阅读理解 ( neural reading comprehension ),这是一种使用深度神经网络建立的阅读理解模型,它已经被证明比非神经 ( 网络 ) 的、基于特征的模型更有效。


阅读理解这个领域有着悠久的历史——早在 20 世纪 70 年代,研究者就已经认识到它是测试计算机程序语言理解能力的重要方法 ( Lehnert, 1977 )。然而,这个领域已经被忽视了几十年。直到最近,它才得到了大量的关注,并取得了快速的进展 ( 参见 Figure 1.2 作为一个例子 ),包括我们将在本文中详细介绍的我们付出的努力。最近阅读理解的成功可以归因于两个原因:


  1. 以 ( 文章、问题、答案 ) 三元组的形式的大规模监督数据集创建;

  2. 神经阅读理解模型的建立。



Figure 1.2: A search result on GOOGLE. It not only returns a list of search documents but gives more precise answers within the documents.


在这篇论文中,我们将涵盖现代神经阅读理解的本质:问题的形成,系统的构建模块和关键成分,以及理解当前的神经阅读理解系统在哪些方面可以做得更好,哪些方面仍然落后。


本文的第二个中心主题是,我们深信,如果我们能够构建出高性能的阅读理解系统,它们将成为问答和对话系统等应用的关键技术 ( they would be a crucial technology for applications such as question answering and dialogue systems )。事实上,这些语言技术已经与我们的日常生活息息相关。例如,如果我们今天在谷歌中输入一个搜索查询“how many people work at stanford univerisity?”( Figure 1.2 ),谷歌不仅返回搜索文档列表,还尝试读取这些 Web 文档,最后突出显示最可信的答案,并将它们显示在搜索结果的顶部。我们相信这正是阅读理解可以起作用的地方,因此可以促进更智能的搜索引擎。此外,随着亚马逊 ( Amazon ) 的 ALEXA、苹果 ( Apple ) 的 SIRI、谷歌 ASSISTANT 或微软 ( Microsoft ) 的小娜 ( CORTANA ) 等数字个人助理的发展,越来越多的用户通过询问有关信息的问题来参与到这些设备 ( 的建设中 ) [^1]。我们相信,建造能够阅读和理解文本的机器将会极大的改善这些个人助理的能力。


因此,在本文中,我们也对从最近神经阅读理解的成功中构建实际应用感兴趣。我们探索了两个以神经阅读理解为核心的研究方向:


开放领域的问答 ( Open-domain question answering ) 结合了来自信息检索和阅读理解的挑战,旨在回答来自 Web 或大型百科全书 ( 如 Wikipedia ) 的一般问题。


会话形式问答 ( Conversational question answering ) 结合了来自对话和阅读理解的挑战,解决了在一段文本中进行多轮问答的问题,比如用户如何与会话代理进行交互。Figure 1.3 展示了来自 COQA 数据集的一个示例 ( Reddy et al.,2019 )。在这个例子中,一个人可以基于一篇 CNN 的文章问出一系列的互相关联的问题。


[^1]: A recent study


https://www.stonetemple.com/digital-personal-assistants-study/


reported that asking general questions is indeed the number one use for such digital personal assistants.


1.2 Thesis Outline

根据我们刚刚讨论的两个中心主题,本文由两部分组成:第一部分神经阅读理解基础 ( PART I NEURAL READING COMPREHENSION: FOUNDATIONS ) 和第二部分神经阅读理解应用 ( PART II NEURAL READING COMPREHENSION: APPLICATIONS )。


译者注:excruciatingly:难以忍受地;allegedly:据说



Figure1.3: AconversationfromCOQAbasedonanCNNarticle.


第一部分 ( PART 1 ) 侧重于阅读理解的任务,强调仔细阅读一小段,使计算机系统能够回答理解性问题。


第二章首先概述了阅读理解的发展历史和现状。接下来,我们正式定义了问题的表达式及其表达式的主要类别。然后简要讨论了阅读理解和一般问答 ( 问题 ) 的差异。最后,我们认为最近神经阅读理解的成功是由大规模数据集和神经模型 ( 一起 ) 驱动的。


在第三章中,我们介绍了神经阅读理解模型家族。我们首先描述非神经的,基于特征的分类器,并讨论他们如何不同于端到端神经方法。然后我们介绍了一种我们提出的名叫 THE STANFORD ATTENTIVE READER 的神经方法,并且描述了它的基本构建模块和扩展。我们在 CNN/DAILY MAIL 和 SQUAD 这两个代表性的阅读理解数据集上展示了实验结果。更重要的是,我们对神经模型进行了深入的分析,以理解这些模型实际上学到了什么 ( 译者注:我觉得这是一个重点 )。最后,总结了近年来神经阅读理解模型在不同方面的研究进展。本章基于我们的工作 ( Chen et al.,2016 ) 和 ( Chen et al.,2017 )。


在第四章中,我们讨论了该领域未来的工作和有待解决的问题。我们首先研究现有模型的错误 case,尽管模型在当前基准上的准确性很高。然后,我们根据数据集和模型讨论未来的方向。最后,我们对这一领域的几个重要研究问题进行了复盘,这些问题仍然是悬而未决的,有待未来进一步的研究。


第二部分认为阅读理解是实际应用的一个重要组成部分,如问答系统和会话智能体。详情如下:


开放领域的问答


第五章将开放领域的问答当作是阅读理解的一个应用。探讨了如何将高性能的神经阅读理解系统与有效的信息检索技术相结合,构建新一代的开放领域的问答系统。我们描述了我们构建的一个名为 DRQA 的系统:它的关键组件以及我们如何为它创建训练数据,然后我们对多个问答 ( 系统 ) 基准进行了综合评估。最后我们讨论了这个系统目前的局限性以及未来的工作。本章基于我们的工作 ( Chen et al.,2017 )。


在第六章中,我们研究了会话问答,即机器必须理解一篇文章,并回答会话中出现的一系列问题。本文首先简要回顾了有关对话的文献,认为会话问答是构建信息检索对话智能体的关键。本文介绍了一种用于构建会话问答系统 ( Conversational Question Answering ) 的新数据集 COQA,它由 127k 个问题和答案组成,这些问题和答案来自于 8k 个关于文本段落的讨论。我们对数据集进行了深入的分析,并在会话和神经阅读理解模型的基础上建立了若干竞争模型,并给出了实验结果。最后讨论了未来在这方面的工作。本章基于我们的工作 ( Reddy et al., 2019 )。


我们最后将在第七章进行总结。


1.3 Contributions

本文的贡献总结如下:


  1. 我们是最早研究神经阅读理解的团队之一。特别地,我们提出了 STANFORD ATTENTIVE READER 模型,该模型在各种现代阅读理解任务中都表现出了优异的表现。

  2. 我们努力更好地理解神经阅读理解模式实际上学到了什么,以及解决当前任务需要多大的语言理解深度。我们的结论是,与传统的基于特征的分类器相比,神经模型更善于学习词汇匹配和释义,而现有系统的推理能力仍然相当有限。

  3. 我们开创了将神经阅读理解作为开放领域问题回答的核心组成部分的研究方向,并研究了如何通用化这个案例的模型。特别的,我们在 DRQA 系统中实现了这个想法,这是一个大型的、基于英语维基百科的真实问题回答系统。

  4. 最后,我们着手解决会话问答问题。其中计算机系统需要在对话的上下文 ( 背景 ) 中回答理解性问题,所以每个问题都需要根据它的对话历史来理解。为了解决这个问题,我们提出了 COQA challenge,并建立了适合这个问题的神经阅读理解模型。我们认为这是构建会话 QA 智能体的第一步,也是重要的一步。


2. An Overview of Reading Comprehension

When a person understands a story, he can demonstrate his understanding by answering questions about the story. Since questions can be devised to query any aspect of text comprehension, the ability to answer questions is the strongest possible demonstration of understanding. If a computer is said to understand a story, we must demand of the computer the same demonstration of understanding that we require of people. Until such demands are met, we have no way of evaluating text understanding programs.


译文:当一个人理解一个故事的时候,他可以通过回答关于这个故事的问题来表明他的理解 ( 程度 )。因为问题可以提问文本理解的任何方面,那么回答问题的能力就是对理解程度的最可能的表示。如果说一台电脑理解了一个故事,我们必须像要求人类一样要求电脑。在这样的要求满足之前,我们无法衡量任何文本理解系统。

Wendy Lehnert, 1977


在这一章,我们的目的是为读者提供一个阅读理解的概述。我们从阅读理解的历史开始 ( 2.1 节 ),从上世纪 70 年代开发的早期系统,到为这项任务建立机器学习模型的尝试,再到最近神经 ( 深度学习 ) 方法的复兴。这一领域已经完全被神经阅读理解所重塑,并且取得了令人兴奋的进展。


然后,我们在 2.2 节中正式将阅读理解任务定义为一个监督学习问题,并根据答案类型描述了四个不同的类别。最后,我们将讨论它们的评估指标。


接下来我们简要讨论一下阅读理解和问答 ( QA ) 的区别,特别是它们的最终目标 ( 2.3 节 )。最后,我们会在 2.4 节中讨论大规模数据集和神经模型的相互作用是如何促进现代阅读理解的发展的。


2.1 History

2.1.1 Early Systems

建立自动阅读理解系统的历史可以追溯到四十多年前。在 20 世纪 70 年代,研究人员已经认识到把阅读理解作为一种方法来测试计算机程序对语言的理解能力的重要性。


最著名的早期作品之一是 Lehnert ( 1977 ) 中详细描述的 QUALM。基于脚本和计划框架,Lehnert ( 1977 ) 设计了一个问答的理论,并且专注于语用问题和故事上下文在问答中的重要性,来作为对人类阅读理解的建模 ( Schank and Abelson, 1977 )。这个早期工作为语言理解设置了一个强大的愿景,但是当时构建的实际系统非常小,仅限于手工编码的脚本,并且很难推广到更广泛的领域。


由于问题的复杂性,这方面的研究在 20 世纪 80 年代和 90 年代大多被忽视。在 20 世纪 90 年代末,人们对阅读理解的兴趣有了一些小小的复苏,例如 Hirschman 等人 ( 1999 ) 创建了一个阅读理解数据集,以及随后在 ANLP/NAACL 2000 年举办了一个关于阅读理解测试作为基于计算机的理解系统评估的研讨会。数据集包括 60 个用于开发的故事和 60 个用于测试的三至六年级的故事,附有一些简单的 who,what,when,where,why 这样的简单问题。它只需要系统返回包含正确答案的句子。这一阶段开发的系统主要是基于规则的词包方法。例如 DEEP READ 系统 ( Hirschman et al. 1999 ) 中进行词干分析、语义类识别和代词解析等浅层语言处理,或者像是 QUARC 系统 ( Riloff and THElen,2000 ) 中手动生成基于词汇和语义对应的规则或者是以上两个的组合体 ( Charnizak et al., 2000 )。这些系统在检索正确句子时达到了 30%-40%的准确率。


2.1.2 Machine Learning Approaches

在 2013 年至 2015 年之间, ( 人们 ) 在将阅读理解定义为一种 supervised learning 问题方面做出了显著的努力。研究员以 ( 文章,问题,回答 ) 三元组的形式收集人类标注好的训练例子,希望我们可以训练统计模型来学习将一段话和问题形成的对映射到他们相对应的答案上面去:f ( passage, question ) –>answer。


在此期间,两个值得注意的数据集是 MCTEST ( Richardson et al., 2013 ) 和 PROCESSBANK ( Berant et al., 2014 )。MCTEST 收集 660 个虚构的故事,每个故事有 4 个多选题 ( 每个问题有 4 个假设答案,其中一个是正确的 ) ( Table 2.1 (b) )。PROCESSBANK 旨在回答描述生物过程的段落中的二选择问题,并要求理解过程中实体和事件之间的关系。数据集由 585 个问题组成,分布在 200 段中。


在最初的 MCTEST paper 中,Richardson 等人 ( 2013 ) 在没有利用任何训练数据的情况下,提出了几个基于规则的基线 ( baseline )。一种是启发式滑动窗口方法,它测量问题、答案和滑动窗口中单词之间的加权单词重叠/距离信息;另一种方法是通过将每个问答对转换为一个语句来运行现成的文本蕴涵系统。这个数据集后来启发了一系列机器学习模型 ( Sachan et al., 2015;Narasimhan 和 Barzilay, 2015;Wang et al., 2015 )。这些模型大多建立在一个简单的 max-margin 学习框架之上,该框架具有丰富的手工设计的语言特性,包括句法依赖、语义框架、指代消解、篇章关系和单词嵌入。MC500 的性能从 63%略微提高到 70%左右。在 PROCESSBANK 数据集上,Berant 等人 ( 2014 ) 提出了一种统计模型,该模型首先学会预测流程结构,然后将问题映射到可以针对该结构执行的正式查询。同样,模型结合了大量的手工特征,最终在二分类任务上获得了 66.7%的准确率。




Table 2.1:A few examples from representative reading comprehension datasets:(a) CNN/DAILY MAIL ( Hermann et al., 2015 ), (b) MCTEST ( Richardson et al., 2013 ), (c) SQUAD ( Rajpurkar et al., 2016 ) and (d) NARRATIVEQA ( Kocˇisky` et al., 2018 ).


与早期基于规则的启发式方法相比,这些机器学习模型取得了一定的进步。然而,它们的改进仍然相当有限,其缺点总结如下:


  1. 这些模型严重依赖于现有的语言工具,如依赖依存解析和语义角色标记 ( SRL ) 系统。然而,这些语言表示任务还远远没有解决,现成的工具通常是从单个领域 ( 的文章 ) ( 例如,newswire 文章 ) 训练而来,在实际使用中存在泛化问题。因此,利用现有的语言注释作为特性有时会在这些基于特性的机器学习模型中增加噪音,而更高级别的注释 ( 例如,篇章关系与词性标记 ),会让情况变得更糟糕。

  2. 模拟人类水平的理解是一个难以捉摸的挑战,而且总是很难从当前的语言表征中构建有效的特征。例如,对于图 1.1 中的第三个问题:How many friends does Alyssa have in this story?当证据散布在整个文章中,基本不可能构建出一个有效特征的。

  3. 尽管我们可以从人类标记的阅读理解示例中训练模型,这确实激励人心,但这些数据集仍然太小,无法支持表达性统计模型。例如,用于训练依存解析器的 English Penn Treebank 数据集包含 39,832 个示例,而在 MCTEST 中,用于训练的示例仅为 1480 个——更不用说阅读理解了,作为一项综合性的语言理解任务,阅读理解更加复杂,并且需要不同的推理能力。


2.1.3 A Resurgence:The Deep Learning Era

这个领域的转折点出现在 2015 年。DeepMind 研究人员 Hermann 等人 ( 2015 ) 提出了一种新颖而廉价的方案,用于为学习阅读理解模型创建大规模监督训练数据。他们还提出了一个神经网络模型——一个基于 attention 机制的 LSTM 模型,命名为 THE ATTENTIVE READER——并证明它在很大程度上优于符号 NLP 方法。在实验中,在 CNN 数据集中,THE ATTENTIVE READER 获得 63.8%的准确率,而符号 NLP 系统最多获得 50.9%的准确率。数据创建的思想如下:CNN 和《每日邮报》附有一些要点,总结了文章中所包含的信息。他们将一篇新闻文章作为 passage,通过使用一个 placeholder 来替换一个实体 ( entity ) 的方式将其中的一个要点转换为一个完形填空式的问题,而答案就是这个被替换的实体。为了确保这个系统需要真正的理解文章来完成这个任务,而不是使用世界知识 ( 译者,知识库,即符号系统 ) 或者语言模型来回答问题,他们运行了实体识别和指代消解系统,并且将所有在指代链中提到的每个实体替换为一个抽象的实体标记 ( 例如:@entity6,可以在 Table2.1(a)中看到例子 )。最后,他们几乎没有任何成本地收集了近 100 万个数据示例。


译者:Obviously,研究怎么生成训练集也是一门学问。但我一直很好奇,致力于研究数据集来促进模型的发展,是不是就像是致力于研究更好的教材来让学生学习的更好一个道理。。。


更进一步,我们的工作 ( Chen et al., 2016 ) 研究了这个有史以来第一个大型的阅读理解数据集,并证明了一个简单、精心设计的神经网络模型 ( 第 3.2 节 ) 能够将 CNN 数据集的性能提升到 72.4%,这是另一个 8.6%的绝对提升。更重要的是,与传统的基于特征的分类器相比,神经网络模型能够更好地识别词汇匹配和其释义。然而,尽管这个半合成的数据集为训练有效的统计模型提供了一个理想的方法,但我们的结论是,由于数据的创建方法和指代误差,该数据集似乎是有噪声的,并且对于进一步的推动相关进展的帮助是有限的。


为了解决这些限制,Rajpurkar 等人 ( 2016 ) 收集了一个名为 STANFORD QUESTION ANSWER DATASET ( SQUAD ) 的新数据集。数据集包含了 536 篇维基百科文章中的 107,785 对问答对,这些问题都是由群体工作者提出的,每个问题的答案对应相应的文章中的一段文本 ( 表 2.1 (c) )。SQUAD 是第一个具有自然问题的大规模阅读理解数据集。由于其高质量和可靠的自动评估,该数据集引起了 NLP 社区的极大兴趣,并成为该领域的中心基准。这反过来启发了一系列新的阅读理解模型 ( Wang and Jiang, 2017;Seo et al., 2017;Chen et al., 2017;Wang et al., 2017;Yu et al., 2018 ) 并且研究的进展十分迅速,截至 2018 年 10 月,表现最好的单一的系统实现了 91.8%的 F1 得分 ( Devlin et al ., 2018 ),而这个已经超过 91.2%,我们预期的人类表现,而最初的作者在 2016 年构建的基于特征的分类器只获得了 51.0%的 F1 值,如图 2.1 所示。



Figure 2.1: The progress on SQUAD 1.1 (single model) since the dataset was released in June 2016. The data points are taken from the leaderboard at.


目前所有在 SQUAD 上面表现最好的系统都是建立在端到端神经网络或深度学习模型上的 ( end-to-end neural networks, or deep learning models )。这些模型往往会先从将文章和问题中的每一个单词表示为一个稠密向量开始 ( 例如,300 维 )。经过几次建模或者交互层,最后进行预测。所有的参数可以使用梯度下降算法或者它的变种一起进行优化。这一类模型可以被称为神经阅读理解 ( neural reading comprehension ),我们将会在第三章详细的阐述他。不同于基于特征的分类起,神经阅读理解模型有几个优点。


  • 他们不依赖于任何下游的语言学特征 ( 比如,依存分析或者指代消解 ),并且所有的特征是在一个统一的端到端的的框架中独立学习来的。这避免了语言学标注的噪音,并且也在可用的特征空间中提供了更好的了灵活性。

  • 传统的符号 NLP 系统受困于一个严重的问题:特征通常非常稀疏,并且泛化性非常差。例如,为了回答一个问题:

  • How many individual libraries make up the main school library?

  • 而文章中的相关内容如下

  • “… Harvard Library, which is the world’s largest academic and private library system, comprsing 79 individual libraries with over 18 million volumes”

  • 所以一个系统必须基于标记好的特征来学习 comprising 与 make up 的一致性,例如下面的特征:pw_i = comprising ∧ qw_j = make ∧ qw_{j+1} = up.这里并没有足够的数据来给这些特征赋予正确的权重。这在所有的非神经 NLP 模型中是一个共有的问题。利用低维,稠密的词向量共享相似词语之间在统计上的强度,可以有效的缓解稀疏性。

  • 这些模型从从构建大量手工特征的劳动中解脱出来。因此,神经模型在概念上更简单,( 研究 ) 重点可以转移到神经结构的设计。译者注:可以从构建手工特征中解放,转而研究神经网络结构。由于现代深度学习框架如 TENSORFLOW 和 PYTORCH 的发展,已经取得了很大的进步,现在开发新的模型又快又容易。


毫无疑问,在 SQUAD 上面达到人类表现程度是不可思议,并且可以说是我们在过去几年在 NLP 社区中看到的最大成果之一。然而,解决 SQUAD 任务并不能等于解决机器阅读理解。我们需要承认 SQUAD 是有限的。因为问题必须用文章中的一段文本来回答,而且大多数 SQUAD 的例子相对非常简单,并且不需要复杂的推理。


这个领域还在进一步发展。围绕着创建大规模、更具挑战性的阅读理解数据集这一主题,近年来出现了大量的数据集:TRIVIAQA ( Joshi et al., 2017 ), RACE ( Lai et al., 2017 ), QANGAROO ( Welbl et al., 2018 ), NARRATIVEQA ( Kocˇisky` et al., 2018 ), MULTIRC ( Khashabi et al., 2018 ), SQuAD 2.0 ( Rajpurkar et al., 2018 ), HOTPOTQA ( Yang et al., 2018 ) 等。这些数据从各种来源收集 ( Wikipedia, newswire articles, fictional stories or other Web resources ),并且以不同的方式构建。他们的目的是应对许多之前没有被解决的挑战:独立于段落的问题,需要多个句子甚至多个文档来回答的问题,基于长文档 ( 比如一本书 ) 的问题,或者不能从段落中回答的问题。在撰写本文时,这些数据集大多还没有得到解决,并且最先进的方法和人类的水平之间仍然存在很大的差距。阅读理解已成为当今自然语言处理中最活跃的领域之一,仍有许多待解决的问题。我们将在 4.2 节中更详细地讨论阅读理解数据集的最新发展。


2.2 Task Definition

2.2.1 Problem Formulation

阅读理解的任务可以表述为一个监督学习问题:


给定一组训练实例 ,目标是学习一个预测器 f,它以一段文本 p 和一个相应的问题 q 作为输入,给出答案 a 作为输出。



,其中 分别表示文本 ( passage ) 和问题 ( question ) 的长度。V 为预定义词汇表,则对于 ,且 。在这里,我们只把文本 p 看作一个由 单词序列表示的短段落。将其扩展到多段形式 ( Clark and Gardner, 2018 ) 非常简单,其中 p 是一组段落,或者将其分解为更小的语言单元,如句子。


根据答案类型的不同,答案 a 可以采取完全不同的形式。一般来说,我们可以把现有的阅读理解任务分为四类:


  1. 完形填空类型 ( Cloze style ):问题包含一个 placeholder ( 占位符 )。例如:

  2. RTottenham manager Juande Ramos has hinted he will allow _____ to leave if the Bulgaria striker makes it clear he is unhappy.

  3. 在这些任务中,系统必须基于文本来猜测哪些词或实体来完善句子 ( 问题 )。并且答案要么是选择从一组预定义的候选集中选择要么是从一个完整的词汇表中选择。比如说,在 WHO-DID-WHAT 数据集中 ( Onishi et al ., 2016 ),答案必须是文本中的一个人名,而其候选集的大小平均为 3.5。

  4. 多项选择类型 ( Multiple choice ):在这个类别下,正确答案从 k 个假设答案中选择 ( 比如:k=4 )


  5. 正确的答案可以是一个单词,一个短语或者是一句话。给出的假设答案中有一个是正确的,所以 a 必须从 中选择。

  6. 范围预测类型 ( Span prediction ):这个类别也被称为抽取式问答 ( extractive question answering ) 并且答案必须是文本中的一个范围。因此,答案可以表示为,其中 。并且答案对英语

  7. 自由形式回答类型 ( Free-form answer ):最后一种类型允许答案是任何形式的文本 ( 即,任意长度的单词序列 ),形式上:


表 2.1 给出了每个类型的问题所属典型数据集的示例:CNN/DAILY MAIL ( Hermann et al., 2015 ) ( cloze style ), MCTEST ( Richardson et al., 2013 ) ( multiple choice ), SQUAD ( Rajpurkar et al., 2016 ) ( span prediction ) and NARRA- TIVEQA ( Kocˇisky` et al., 2018 ) ( free-form answer ).


2.2.2 Evaluation

我们已经正式定义了四种不同类别的阅读理解任务,接下来我们将讨论它们的评估指标。


译者注:对于任何任务来说,衡量结果的好坏都是非常重要的一件事。如果有量化的机制来评估好坏,可以更好帮助我们作出正确的决策


对于多项选择题或完形填空题,评估准确性非常简单:系统给出正确答案的问题的百分比,因为答案是从一小组假设答案中选择的。


对于范围预测任务,我们需要将预测的答案与正确答案进行比较。通常,我们使用 Rajpurkar 等人 ( 2016 ) 提出的两种评估指标,即精确匹配和部分得分:


  1. 精准匹配 ( Exact match,EM ) 如果预测的答案等于正确答案,则精确匹配 ( EM ) 将分配满分 1.0 分,否则将分配满分 0.0 分。

  2. 2.F1 得分 ( F1 score ) 计算预测答案和正确答案之间的平均单词重叠。预测答案和正确答案被看作一堆 token,所以 token-level 的 F1 得分计算如下:



Rajpurkar 等人 ( 2016 ) ( 提出评估指标之后 ) 之后,在评估中所有标点符号都被忽略,对于英语文章,a, an,以及 the 也被忽略。


为了使评估更可靠,收集每个问题的多个正确答案也很常见。因此,精确的匹配分数只需要匹配任何一个正确答案,而 F1 分数是计算所有正确答案的最大值,然后对所有问题求平均值。


最后,对于自由形式的回答阅读理解任务,目前还没有最理想的评价标准。一种常见的方法是使用在自然语言生成 ( NLG ) 任务中使用的标准评估指标,如机器翻译或摘要,包括 BLEU ( Papineni et al., 2002 )、Meteor ( Banerjee 和 Lavie, 2005 ) 和 ROUGE ( Lin, 2004 )。


2.3 Reading Comprehension vs. Question Answering

阅读理解与问答有着密切的关系。我们可以把阅读理解看作是问答的一个实例,因为它很本质上是基于一篇短文的问答问题。然而,尽管阅读理解和一般的问答问题在问题的形成、方法和评价上有许多共同的特点,但我们认为它们最终目标强调了不同的东西:


  • 问答的最终目标是建立一个能够自动回答人类提出的问题计算机系统,系统可以依赖任何资源。这些资源可以是结构化的知识库、非结构化的文本集合 ( 百科全书、词典、新闻专线文章和一般 Web 文档 )、半结构化的表,甚至是其他模式。为了提高 QA 系统的性能,人们在:① 如何搜索和识别相关资源,② 如何集成来自不同信息片段的答案,甚至 ③ 研究人类在现实世界中通常会问哪些类型的问题上进行了大量的工作。

  • 然而,阅读理解 ( reading comprehension ) 强调的是文本理解 ( text understanding ) 和一些被认为是衡量语言理解程度的尖锐问题。因此,要回答这个问题,需要对给定的段落有深刻的理解。由于这一关键的区别,这一领域的早期作品大多集中在虚构的故事 ( Lehnert, 1977 ) ( 后来扩展到 Wikipedia 或 Web 文档 ),所以所有回答理解问题的信息都来自文章本身,而不是任何世界知识。这些问题也是专门为测试文本理解的不同方面而设计的。这种区别类似于人们通常在搜索引擎上问的问题与在人类阅读理解测试中通常会提出的问题。


类似地,早期的工作 ( Mitchell et al.,2009 ) 使用术语微观阅读 ( micro-reading ) 和宏观阅读 ( macro-reading ) 来区分这两种情况。微阅读侧重于阅读单个文本文档,旨在提取该文档的完整信息内容 ( 类似于我们的阅读理解设定 ),而宏观阅读则采用大文本集合 ( 如 Web ) 作为输入,提取文本中表达的事实而形成一个很大的集合,而不需要提取每一个事实。尽管宏观阅读则需要考察语言理解的更深层次,但是宏观阅读可以通过分析文本中事实的简单措辞,有效地利用跨文档的信息冗余。


本文主要研究阅读理解。在第五章,我们将回到更一般的问题回答,讨论其相关工作,并证明阅读理解也可以帮助建立问题回答系统。


2.4 Datasets and Models

从 2.1.3 节可以看出,近年来阅读理解的成功主要是由两个关键部分驱动的:大型阅读理解数据集和端到端神经阅读理解模型。他们共同努力推进这一领域的发展,并推动建立更好阅读理解系统的边界:


一方面,大规模阅读理解数据集的创建使得训练神经模型成为可能,同时也展示了它们相对于符号 NLP 系统的竞争力。这些数据集的可用性进一步吸引了我们研究社区的大量关注,并激发了一系列建模创新。受益于所有这些努力,已经取得了巨大的进展。


另一方面,了解现有模型的性能有助于进一步认识现有数据集的局限性。这促使我们寻求更好的方法来构建更具挑战性的数据集,以实现文本的机器压缩的最终目标。



development of datasets (black) and models (blue) in neural read- ing comprehension. For the timeline, we use the date that the corresponding papers were published, except BERT (Devlin et al., 2018).


图 2.2:最近神经阅读理解领域的数据集(黑色)和模型(蓝色)的发展。对于时间轴,除了 BERT (Devlin et al., 2018),我们使用了相应论文发表的日期。


图 2.2 显示了 2016 年以来关键数据集和模型的最新开发时间轴。正如所看到的,尽管只有三年的时间,这个领域已经取得了惊人的进展。在建立更好的数据集和更有效的模型方面的创新交替出现,并对该领域的发展作出了贡献。在未来,我们认为继续发展这两个部分都同样重要。


在下一章中,我们将主要关注建模方面,并会使用我们前面描述的两个表示数据集:CNN/DAILY MAIL 和 SQUAD。在第 4 章,我们将讨论更多关于数据集和模型的进展和未来的工作。


3. Neural Reading Comprehension Models

在本章中,我们将介绍神经网络模型的本质:从基本构建模块,到最近的进展。


在深入研究神经模型的细节之前,我们在 3.1 节简要介绍了用于阅读理解的基于特征的非神经模型。特别地,我们描述了我们在 Chen et al. ( 2016 ) 中构建的一个模型。我们希望这能让读者更好地理解这两种方法的本质区别。


在 3.2 节中,我们提出了一种用于阅读理解的神经方法,称为 THE STANFORD ATTENTIVE READER,这在 Chen et al. ( 2016 ) 中针对完形填空式阅读理解任务被首次提出,之后又将其应用于 SQUAD 的范围预测问题 ( Chen et al.,2017 ) 。我们首先简要回顾了现代神经 NLP 模型的基本构建模块,然后描述了我们的模型是如何建立在这些模块之上的。最后,我们将其扩展到其他类型的阅读理解问题。


接下来,我们将在 CNN/DAILY MAIL 和 SQUAD 数据集中展示我们模型的实证结果,并在 3.3 节中提供更多的实现细节。我们进一步仔细地分析了错误,以帮助我们更好地理解:


  • 哪些组件对最终性能最重要;

  • 在经验上,神经模型优于非神经特征模型。


最后,我们在第 3.4 节中总结了神经阅读理解的最新进展。


3.1 Previous Approaches:Feature-based Models

我们首先描述了在 Chen et al. ( 2016 ) 这篇论文中针对完形填空风格问题构建的一个强大的基于特征的模型,主要是针对 CNN/DAILY MAIL 数据集 ( Hermann 等人,2015 )。然后,我们将讨论为多项选择和范围预测问题建立的类似模型。


对于完形填空式问题,任务表述为预测正确的实体 ,该实体 可以根据阅读短文 p 来填补问题 q 的空白 ( 表 2.1 中有一个例子 ),其中 表示候选实体集。传统的线性、基于特征的分类器通常需要为每个候选实体 构造一个特征向量 ,并学习一个权向量 ,使得正确答案 a 的排名要高于所有其他候选实体:



译者注:变成了一个排序问题。我猜测在深度学习那边,思路是一致的,只是在特征构造的时候不一样,我们之后验证一下


在为每个实体 e 构造好所有特征向量后,我们就可以应用任何流行的机器学习算法 ( 如 logistic 回归或 SVM )。在 Chen 等人 ( 2016 ) 中,我们选择使用 LAMBDAMART ( Wu 等人,2010 ),因为它是一个自然的排序问题,而近来应用 boost 的决策树森林非常成功。


剩下的关键问题是我们如何从文章 p,问题 q 和每个实体 e 中构建有用的特征向量?表 3.1 列出了我们为 CNN/DAILY MAIL 任务提出的 8 组特性。如表所示,这些特征被很好地设计并描述了实体的信息 ( 例如,频率、位置以及它是否是一个问题/短文词 ),以及它们如何与短文/短文对齐 ( 例如,共现、距离、线性和句法匹配 )。一些特性 ( #6 和 #8 ) 还依赖于语言工具,比如依赖关系解析和词性标记 ( 决定一个单词是否是动词 )。一般来说,对于非神经模型,如何构造一组有用的特征始终是一个挑战。有用的特征必须是有意义的,并且能够很好地适应特定的任务,同时又不能过于稀疏而不能很好地从训练集中概括出来。我们在之前的 2.1.2 节中已经讨论过,这在大多数基于特征的模型中是一个常见的问题。此外,使用现成的语言工具使模型更加昂贵,它们的最终性能取决于这些 ( 语言工具的 ) 注释的准确性。


译者:同时也添加了潜在的噪声。



Table 3.1: Features used in our entity-centric classifier in Chen et al. (2016).


Rajpurkar 等人 ( 2016 ) 和 Joshi 等人 ( 2017 ) 也尝试分别为 SQUAD 和 TRIVIAQA 数据集构建基于特征的模型。除了范围预测任务,这些模型在本质上与我们的相似,他们需要首先确定一组可能的答案。对于 SQUAD, Rajpurkar et al. ( 2016 ) 将 Stanford CoreNLP ( Manning et al., 2014 ) 生成的 parses 中的所有成分作为候选答案;而对于 TRIVIAQA, Joshi et al. ( 2017 ) 考虑所有出现在句子中的 n-gram ( 1≤n≤5 ),其中至少包含一个与问题相同的单词。他们还试图从选民分析中添加更多的词汇化特性和标签。对 MCTEST 数据集的多项选择问题也进行了其他尝试,如 ( Wang et al., 2015 ),并使用了丰富的特性集,包括语义框架、单词嵌入和指代消解。


我们将展示这些基于特征的分类器的经验结果,并在 3.3 节与神经模型进行比较。


3.2 A Neural Approach:The Stanford Attentive Reader

3.2.1 Preliminaries

下面,我们将概述构成现代神经 NLP 模型基础的最少要素和关键思想。更多细节,请参考 ( Cho, 2015;Goldberg, 2017 )。


Word embeddings


在 cs224n 的课程中,第一时间讲的就是这个方面,可以参考我在这门课的笔记:


https://github.com/DukeEnglish/cs224n_learning_note


第一个关键思想是将单词表示为低维 ( 例如,300 ) 真实值向量。在前深度学习时代,常见的是,把单词用一个词汇表中的索引来代表,这是一个使用一个 one-hot 向量符号变体:每个单词都被表示为一个高维、稀疏向量,只有代表这个单词的地方是 1,其他地方都是 0:



这些稀疏向量最大的问题是它们在单词之间没有任何语义相似性,即,对于任意一对不同的单词 a, b, $\cos({\rm v}a,{\rm v}b)=0\cos({\rm v{car}},{\rm v{vechicle}})<\cos({\rm v_{car}},{\rm v_{man}})$。使用 cos 的值来反映两个向量的相似度


这些单词嵌入可以有效地从大型无标记文本语料库中学习,这是基于单词出现在相似的上下文中往往具有相似的含义这一假设 ( 也称为分布假设 )。的确,从文本中学习单词嵌入有悠久的历史,最近的 scalable 算法和发布的预先训练的单词嵌入集,如 WORD2VEC ( Mikolov et al., 2013 )、GLOVE ( Pennington et al., 2014 ) 和 FASTTEXT ( Bojanowski et al., 2017 ),最终使从文本中学习单词嵌入得到了普及。它们已成为现代 NLP 系统的中流砥柱。


Recurrent neural networks


第二个重要的思想是使用递归神经网络 ( RNNs ) 对自然语言处理中的时态或段落进行建模。递归神经网络是一类适合处理变长序列的神经网络。更具体地说,它们递归地对序列 x1……xn 应用一个参数化函数:



对于 NLP 应用程序,我们将句子或段落表示为单词序列,其中每个单词都转换为向量 ( 通常通过预先训练的单词嵌入 ):可以对 的上下文信息进行建模。


Vanilla 的 RNNs 采用下列的形式:



其中为待学习参数。为了简化优化,提出了许多 RNNs 的变体。其中,长短时记忆网络 ( LSTMs ) ( Hochreiter and Schmidhuber, 1997 ) 和门控循环单元 ( GRUs ) ( Cho et al., 2014 ) 是常用的一种。可以说,LSTM 仍然是当今 NLP 应用中最有竞争力的 RNN 变体,也是我们将描述的神经模型的默认选择。在数学上,LSTMs 可以表示为:



其中所有的 W 和 b 都是待学习参数。


最后,RNN 中一个有用的东西是 bidirectional RNN:想法很简单:对于一个句子或者一个段落来说:x=x1,….xn,一个前向 RNN 从左到右学习,另一个反过来学习。



最后,我们定义 是将公式中的两个 h 做拼接得到的结果。这些表示可以有效编码左边和右边的上下文,并且适用于多种 NLP 任务的通用可训练特征提取组件。


Attention mechanism


第三个重要的组件是 attention 机制。这个机制首次在 sequence-to-sequence 模型 ( Sutskever et al., 2014 ) 中被提出为神经机器翻译提出 ( Bahdanau et al., 2015; Luong et al., 2015 ) 并且之后被延伸应用到别的 NLP 任务中。


关键的想法是,如果我们想要预测一句话的情感 ( sentiment ),或者从一种语言的一句话翻译到另外一种语言,我们通常使用 recurrent neural networks 来对一句话做编码 ( encode ):h1, h2, …hn 并且使用最后一个 time step 的 hn 来预测最后的情感标签或者是目标语言的第一个 word:



这要求模型可以压缩一句话的所有信息到一个固定长度的向量中,这会导致在提升性能上的信息瓶颈。注意力机制 ( attention ) 就是设计来解决这个问题的:与其将所有的信息都压缩在最后一个隐藏向量中,我们监督每一个 time step,并且自适应地选择这些向量的子集:



这里的 w 可以是在训练过程中针对任务学习出来的向量,或者当作机器翻译中现在的目标隐藏状态,g 是一个可以以多种不同方式选择的参数,比如说点乘,bilinear product 或者是 MLP 的一个隐藏层:



简单来说,注意力机制对每一个 计算一个相似度分数,之后使用一个 softmax 方程来为每一个 time step 返回一个离散概率分布。因此 本质上捕获的句子的哪些部分确实是相关,而 c 聚合了所有 time step 的信息,可用于最终的预测。我们不会在这里讨论更多细节,感兴趣的读者可以参考 Bahdanau 等人 ( 2015 );Luong 等 ( 2015 )。


注意力机制已经被证明在大量的应用是有广泛的影响力,并且成为神经 NLP 模型的一个组成部分。最近,Parikn 等人 ( 2016 ) 和 Vaswani 等人 ( 2017 ) 推测注意力机制并不一定非要和 RNN 一起使用,并且可以单纯得基于 word embeddings 和前向神经网络建立,同时提供最小的序列信息。这类方法通常需要更少的参数,并且更加容易并行和规模变化。特别的,Vaswani 等人在 2017 年的论文中提出的 transformer 已经变成了最近的趋势,我们会在 Section3.4.3 中讨论它。



Figure 3.1: A full model of STANFORD ATTENTIVE READER. Image courtesy:Let’s consider the algorithm in detail, following closely the description in Chen.


3.2.2 The Model

目前,我们已经具备了所有的构建模块。我们如何利用他们为阅读理解建立有效的神经模型呢?关键成分是什么?接下来我们会介绍我们的模型:STANFORD ATTENTIVE READER。我们的模型受到 Hermann et al. ( 2015 ) 中描述的 ATTENTIVE READER 以及其他同一时期工作的启发,并且满怀着让模型简单高效的目标。我们首先描述了模型解决范围预测问题的全形式 ( 我们在 Chen et al ( 2017 ) 中预测了 ),之后我们讨论了其他的变种。


让我们首先回顾一下基于范围的预测阅读理解问题的设定:给定一个 passage p,由 组成,以及一个问题 q,有 组成,目标是预测一个范围 ,其中 ,所以对应的字符串: 就是问题的答案。


整个模型如图 3.1 所示。纵观整个模型,模型首先为问题构建一个向量表示,并为文章中的每个 token 构建一个向量来表示。然后计算上下文中问题及其短文词之间的相似度函数,然后使用问题-短文相似度评分来决定答案跨度的起始和结束位置。该模型建立在文章和问题中每个单词的低维、预先训练的单词嵌入的基础上 ( 可以选择使用语言学标注 )。对文章/问题编码的所有参数和相似度函数进行联合优化,实现最终的答案预测。让我们进一步了解每个组件的细节:


Question encoding


问题编码相对简单:我们首先将问题中的每个单词 映射到它相应的 embedding 上,之后我们在他们上面应用一个 Bi-LSTM 模型,最后获得



之后我们通过 attention 层聚合这些隐藏单元到一个向量中。



衡量 question 中的每一个单词的重要性,而 是一个要学习的权重向量。因此, 是最终的问题的向量表示。事实上,将双向 LSTMs 最后的隐层向量拼接来代表 q 既简单又常见。然而,基于经验,我们发现添加 attention 层是有帮助的,因为它对更相关的问题中的单词添加了更多的权重。


Passage encoding


篇章编码类似,因此我们也是先为文章中的每个单词形成一个输入表示,然后将他们通过另一个 Bi-LSTM:



输入表示 p 可以被分成两个类别:一个是编码每个单词本身的属性,另一个编码它和问题的相关属性。


对第一类,除了 word embedding 外,我们也添加了一些手动特征来反映一个单词在上下文中的属性,包括 POS、NER 和它 normalized 之后的 TF:f = (POS,NER,TF)。对于 POS 和 NER 的标签,我们运行现成的工具,并将其转换为一个 one-hot 表示,因为标签集很小。TF 特征是一个真实的数字,衡量了单词在文章中出现的次数除以总单词数量。


对于第二个类型,我们考虑了两种表示:


Exact match:



事实上,我们使用了三个简单的二进制特征,表明 p 是否与一个问题中的单词 q 精确匹配,不管是原始形式,小写或者是词根。


Aligned question embeddings:exact match 特征在问题单词和篇章单词中编码了硬指向指向问题嵌入目标是编码一个在词嵌入空间中指向的软标记,所以相似的单词,例如:car 和 vehicle,也可以被指向。具体地,我们用:



是注意力权重,它捕捉了 和每一个问题单词 的相似性以及是问题中的每一个单词的 word embedding。 通过 word embeddings 的非线性映射之间的点乘 ( dot ) 计算得到:



是一个单一稠密层,带有 ReLU 的非线性变化,其中 and


最后,我们简单的拼接四个组件,并形成输入表示。



Answer prediction


我们有了篇章 的表示,以及问题 q 和目标来预测更像是正确答案的范围。我们应用了 attention 机制的想法,并且分别训练了两个分类起,一个用来预测范围的开始位置,另一个用来预测结束为止。更准确地说,我们用了一个双线性乘积来捕捉两者之间的相似性(p 和 q)



Training and inference


最后的训练目标方程是最小化交叉墒损失:




3.2.3 Extensions

在接下来的内容中,我们将为其他类型的阅读理解问题提供一些 STANFORD READER 的变体。所有这些模型都遵循上述的篇章编码和问题编码过程,因此我们有、……,。我们只讨论了答案预测部分和训练目标。


Cloze style。类似的,我们可以用问题对文章中所有单词的双线性乘积来计算注意力函数,然后计算一个输出向量 o,它对所有段落表示形式进行加权和:



Multiple choice。在这个设定中,k 个假设的答案被给定,我们可以通过应用第三个 BiLSTM ( 类似于我们的问题编码步骤 ) 将它们编码到一个向量 ai 中。然后我们可以计算输出向量 o ( 如式 3.29 所示 ),并通过另一个相似度函数,使用双线性乘积将其与每个假设的答案向量 ai 进行比较:



交叉墒损失也会被用来做训练。这个模型已经在 RACE 数据集上做了研究 ( Lai et al. ( 2017 ) )


Free-form answer。对于这类问题,答案不局限于文章中的一个实体或一个范围,可以取任何单词序列,最常见的解决方案是将 LSTM 序列解码器合并到当前框架中。更详细地,假设答案字符串是 a = (a1, a2,…ala)和一个特殊的“end-of-sequence” token⟨eos⟩ 添加到每个答案。我们可以再次计算输出向量 o,如式 3.29 所示。解码器每次生成一个单词,因此条件概率可以分解为:



这类模型已经在 MS MARCO ( Nguyen et al., 2016 ) 和 NARRATIVEQA ( Kocˇisky et al ., 2018 ) 数据集上面研究过了。然而,由于自由形式的答题阅读理解问题更加复杂,也更难评估,我们认为这些方法与其他类型的问题相比还没有得到充分的探索。最后,我们认为提出了一种用于总结任务 ( summarization tasks ) 的 copy mechanism ( 复制机制 ) ( Gu et al.,2016;See et al. 2017 ) 它允许解码器选择从源文本中复制一个单词,或者从词汇表中生成一个单词,这对于阅读理解任务也非常有用,因为答案单词仍然可能出现在段落或问题中。我们将在第 6.3 节中讨论一个具有复制机制的模型。


3.3 Experiments

3.3.1 Datasets

我们在 CNN/DAILY MAIL ( Hermann et al., 2015 ) 和 SQUAD ( Raj- purkar et al., 2016 ) 上评估了我们的模型。我们在之前的 2.1.3 节中已经描述过数据集的构建方式以及它们在神经阅读理解发展中的重要性。现在我们简要回顾一下这些数据集和统计数据。


CNN /DAILYMAIL 是使用 CNN 和 Daily Mail 里面的文章及其要点摘要进行构建的。一个要点被转换成一个问题,一个实体被一个占位符替换,答案就是这个实体。文本已经通过谷歌 NLP pipeline 运行。Tokenized,小写化以及命名实体识别和指代消歧已经被运行过了。对于每个包含至少一个命名实体的 coreference 链,链中的所有项都用 @entityn 标记替换,以表示不同的索引 n ( Table 2.1 (a) )。平均而言,CNN 和 DAILY MAIL 在文章中都包含了 26.2 个不同的实体。训练、开发和测试示例是从不同时期的新闻文章中收集的。评估使用准确度 ( 预测正确实体的实例的百分比 ) 这个指标。



Table 3.2: Data statistics of CNN/DAILY MAIL and SQUAD. The average numbers of tokens are computed based on the training set.


SQUAD 数据集是根据维基百科上的文章收集的。抽取了 536 篇高质量的维基百科文章作为样本,众包工人根据每一段创建问题 ( 删除长度小于 500 个字符的段落 ),并且要求答案必须在每一段中突出显示 ( 表 2.1 (c) )。训练/开发/测试数据的由文章随机划分获得 ( 80% vs. 10% vs. 10% )。为了评估人类的表现并使评估更可靠,他们为每个问题收集了一些额外的答案 ( 开发集中的每个问题平均有 3.3 个答案 )。如 2.2.2 节所述,我们使用精确匹配和宏观平均 F1 分数进行评估。请注意,SQUAD 2.0 ( Rajpurkar et al., 2018 ) 是最近提出的,它在原始数据集中添加了 53,775 个无法回答的问题,我们将在第 4.2 节中讨论它。在本论文的大部分内容中,除非另有说明,否则“SQUAD”指的是“SQUAD1.1”。


表 3.2 给出了更详细的数据集统计。如图所示,由于数据集的构造方式,CNN/DAILY MAIL 的数据集比 SQUAD 大得多 ( 几乎大一个数量级 )。CNN/DAILY MAIL 中使用的段落也要长得多,CNN 和 DAILY MAIL 分别是 761.8 和 813.1 token,而 SQUAD 是 134.4 token。最后,SQUAD 的答案平均只有 3.1 个令牌,这反映了小队的问题大部分都是陈述型,大部分的答案都是常见的名词或命名实体。


3.3.2 Implementation Details

除了不同体系结构的模型设计,实现细节对这些神经阅读理解系统的最终性能也起着至关重要的作用。在接下来的文章中,我们将重点介绍一些我们还没有涉及到的重要方面,最后给出我们在这两个数据集中使用的模型规范。


Stacked BiLSTMs。一个简单的方法是增加用于问题和篇章编码的双向 LSTMs 的深度。它计算 ,然后将 作为下一层的输入 ,传递给另一层 BiLSTM,以此类推。结果表明,堆叠的 BiLSTM 比单层的 BiLSTM 效果好。在 SQUAD 实验中,我们使用了 3 层。


Dropout。在神经网络正则化中,Dropout 是一种有效且应用广泛的方法。简单地说,dropout 是指在训练过程中随机屏蔽掉一些单元。对于我们的模型,可以将 dropout 添加到每个 LSTM 层的嵌入、输入向量和隐藏向量中。最后,dropout 的变种方法 ( Gal 和 Ghahramani, 2016 ) 已经被证明在 RNNs 规范化方面比标准 dropout 更好。这个想法是应用相同的 dropout 掩盖在每一个时间步骤的输入,输出和重复层,例如,在每一个 time step 中会 drop 相同的单位。我们建议读者在实践中使用这种变体。


Handling word embedding。常用处理字嵌入的方法之一 ( 也是我们的默认选择 ) 是在训练集中保持最常见的 K ( 如 K = 500,000 ) 种 word 并将所有其他 word 映射到一个 令牌,然后使用 pre-trained 字嵌入的初始化 K 个 word。通常,当训练集足够大时,我们对所有单词 embeddings 进行微调;当训练集相对较小时 ( 例如,SQUAD ),我们通常将所有嵌入的单词都固定为静态特性。在 Chen 等人 ( 2017 ) 的研究中,我们发现对最常见的疑问词进行微调是有帮助的,因为这些关键词的表征,如 what, how, which 可能对阅读理解至关重要系统。( Dhingra et al., 2017a ) 等研究表明,对预训练的词嵌入和对集合外单词的应对方式会对阅读理解任务的性能有很大的影响。


Model specifications。对于所有需要语言学标注的实验 ( lemma,part-of-speech tags,named entity tags, dependency parses ),我们使用 Stanford CoreNLP toolkit ( Manning et al., 2014 ) 进行预处理。为了训练所有的神经模型,我们按照它的篇章长度对所有的示例进行排序,并为每次 ( weights 的 ) update 随机抽取大小为 32 的小批样本。


对于 CNN/DAILY MAIL 的结果,我们使用在 Wikipedia 和 Gi- gaword 上训练过的小写的、100 维的预训练好的 GLOVE 词嵌入 ( Pennington et al., 2014 ) 进行初始化。Attention 和输出 ( 层 ) 的参数使用均匀分布初始化,LSTM 权值由高斯分布 N ( 0,0.1 ) 初始化。我们使用一个隐藏大小为 h = 128 的 1 层 BiLSTM 用于 CNN, h = 256 用于 DAILY MAIL。采用 vanilla stochastic gradient descent ( SGD ) 进行优化,固定学习率为 0.1。当梯度范数超过 10 时,我们还将概率为 0.2 的 dropout 应用于嵌入层和梯度裁剪。


对于 SQUAD 的结果,我们使用隐藏单元 h = 128 的的 3 层 BiLSTMs 对段落和问题进行编码。我们使用 ADAMAX 进行优化,如 ( Kingma 和 Ba, 2014 ) 所述。约 0.3 的 Dropout 应用于 word 嵌入和 LSTMs 的所有隐藏单元。我们使用从 840B Web 抓取数据中训练的 300 维 GLOVE 词嵌入进行初始化,只微调了 1000 个最常见的问题词。


其他的实现细节可以在以下的两个 github 的仓库中找到:


https://github.com/danqi/rc-cnn-dailymail


for our experiments in Chen et al. ( 2016 ).


https://github.com/facebookresearch/DrQA


for our experiments in Chen et al. ( 2017 ).


我们也想提醒读者,我们的实验结果发表在了 2016 年和 2017 年的两篇论文中,并且在很多地方有所不同。一个关键的区别是,我们在 CNN /英国《每日邮报》的结果不包括手动特征 ,精确匹配特性 ,对齐问题嵌入 ,仅仅需要词嵌入。另一个不同之处在于,我们之前没有涉及编码问题的 attention 层,而只是在两个方向上连接 LSTMs 的最后一个隐藏向量。我们相信这些补充在 CNN/DAILY MAIL 和其他完形填空任务中也很有用,但我们没有进一步研究。



Table 3.3: Accuracy of all models on the CNN and DAILY MAIL datasets. Results marked † are from Hermann et al. (2015) and results marked ‡ are from Hill et al. (2016). The numbers marked with ∗ indicate that the results are from ensemble models.


3.3.3 Experimental Results

3.3.3.1 Results on CNN/DAILY MAIL

表 3.3 给出了我们在 Chen et al. ( 2016 ) 中报告的结果。我们用不同的随机种子分别运行我们的神经模型 5 次,并报告了每次运行的平均性能。我们还报告了综合结果,平均了 5 个模型的预测概率。我们还展示了我们在 3.1 节中描述的基于特征的分类器的结果。


Baselines。我们是最早研究这第一个大规模阅读理解数据集的小组之一。当时,Hermann et al. ( 2015 ) 和 Hill et al. ( 2016 ) 为这项任务提出了一些基线,包括符号方法和神经模型。基线包括:


  • Hermann et al. ( 2015 ) 中的框架语义模型,他们运行一个最先进的语义解析器,从问题和文章中提取表示为 ( e1, V, e2 ) 的实体谓词三元组,并尝试使用一些启发式规则匹配正确的实体。

  • 赫尔曼等人 ( 2015 ) 的单词距离模型,其中他们将问题的位置持有者与每个可能的实体对齐,并计算问题与对齐实体周围的通道之间的距离度量。

  • 几个基于 lstm 的神经模型 ( Hermann 等人 ) ( 2015 ),分别命名为 deep LSTM READER、attention READER 和 READER。深层 LSTM 阅读器使用深层 LSTM ( 无注意机制 ) 将问题和文章作为一个序列进行处理,并在最后进行预测。ATTENTIVE READER 与我们的模型在本质上是相似的,因为它计算了问题向量与所有文章向量之间的注意函数;而 IMPATIENT READER 则为所有的问题词计算一个注意力函数,并在模型读取每个问题词时递归地积累信息。

  • Hill 等人 ( 2016 ) 提出的 ( WINDOW-BASED MEMORY NETWORKS ) 基于 windows 的内存网络是基于内存网络架构的 ( Weston 等人,2015 )。我们认为这个模型也与我们类似,最大的不同是他们的编码通道方式:他们只使用 5-word 上下文窗口在评估候选实体和它们使用位置编码上下文 embedding。如果一个窗口包含 5 个单词 x1,x2,…,x5 然后将其编码为 ,得到 5 个独立的嵌入矩阵进行学习。它们以类似的方式编码围绕占位符的 5 个单词的窗口,并且忽略问题文本中的所有其他单词。此外,他们只是使用点积来计算问题和上下文嵌入之间的“相关性”。


如表 3.3 所示,我们的基于特征的分类器在 CNN 测试集上的准确率为 67.9%,在 DAILY MAIL 测试集上的准确率为 68.3%,显著优于 Hermann et al. ( 2015 ) 所报道的任何符号方法。我们认为它们的框架语义模型不适合这些任务,因为解析器的覆盖率很低,并且不能代表一个简单的 NLP 系统可以实现什么。事实上,框架语义模型甚至明显低于单词距离模型。令我们惊讶的是,我们的基于特征的分类器甚至比 Hermann et al. ( 2015 ) 和 Hill et al. ( 2016 ) 中所有的神经网络系统都表现得更好。此外,我们的单模型神经网络大大超过了之前的结果(超过 5%),将最先进的精度分别提高到 72.7%和 76.0%。5 个模型的组合始终带来进一步的 2-4%的收益。


3.3.3.2 Results on SQUAD

表 3.4 给出了我们对开发和测试集的评估结果。自创建以来,SQUAD 一直是一个非常有竞争力的基准,我们只列出了一些代表性的模式和单模式的表现。众所周知,集成模型可以进一步提高性能的几个点。我们还包括了逻辑回归基线的结果。( Rajpurkar et al., 2016 )。


我们的系统可以在测试集上达到 70.0%的精确匹配和 79.0%的 F1 成绩,超过了所有已发表的结果,并且与我们的论文中 SQUAD 排行榜上最好的性能相匹配 ( Chen et al., 2017 )。此外,我们认为我们的模型在概念上比大多数现有系统更简单。与 logistic 回归基线 F1 = 51.0 相比,该模型已经接近 30%的绝对改进,对于神经模型来说是一个巨大的胜利。



Table 3.4: Evaluation results on the SQUAD dataset(single model only). The results below "our model" were released after we finished the paper in Feb 2017. We only list representative models and report the results from the published papers. For a fair comparison, we didn't include the results which use other training resouces (e.g. TriviaQA) or data augmentation techniques, except pre-trained language models, but we will discuss them in Secion 3.4


此后,SQUAD 受到了极大的关注,在这个数据集上取得了很大的进步,如表 3.4 所示。最近的进展包括用于初始化的预训练语言模型、更细粒度的注意机制、数据增强技术技巧,甚至更好的训练目标。我们将在第 3.4 节中讨论它们。


3.3.3.3 Ablation studies


Chen 等 ( 2017 ) 对通道表征成分进行消融分析。如表 3.5 所示,所有组件都对最终系统的性能有贡献。我们发现,没有对齐的问题嵌入 ( 只有 word 嵌入和一些手动特性 ),我们的系统仍然能够实现 F1 超过 77%。精确匹配特征的有效性还表明,该数据集上的文章和问题之间存在大量的单词重叠。更有趣的是,如果我们同时去掉伪匹配和非精确匹配,性能会显著下降,因此我们得出结论,这两个特征在特征表示方面发挥着相似但互补的作用,比如问句和短文词之间的硬对齐和软对齐。


3.3.4 Analysis:What Have the Models Learned?

在 Chen et al. ( 2016 ) 中,我们试图更好地理解这些模型实际学到了什么,以及解决这些问题需要多大的语言理解深度。我们通过对 CNN 数据集开发集中的 100 个随机抽样示例进行仔细的手工分析来实现这一点。


我们大致将其分为以下几类 ( 如果一个例子满足一个以上的类别,我们将其分为前面的类别 ):


Exact match 占位符周围最近的单词也可以在围绕实体标记的段落中找到;答案不言自明。


Sentence-level paraphrasing 问题在篇章中作为一句话的结尾或者是一句话的转述,所以答案一定可以从那句话中找出来


Partial clue 在许多情况下,即使我们不能在问题文本和一些句子之间找到一个完全的语义匹配,我们仍然能够通过部分线索来推断答案,比如一些单词/概念重叠。


Multiple sentences 多句话必须被处理才能推测正确答案


Coreference errors 数据集中不可避免地存在许多指代错误。这一类别包括对出现在问题中的答案实体或关键实体具有关键共参考错误的示例。基本上,我们把这个类别视为“不可回答的”。


Ambiguous or hard 这个类别包括那些我们认为人类肯定不能获取正确答案的例子



表 3.6 给出了每个类别的百分比估计值,图 3.2 给出了每个类别的一个代表性示例。我们观察到改写 ( paraphrasing ) 占 41%的例子和 19%的例子属于 partial clue ( 部分线索 ) 类别。加上最简单的 Exact match 精确匹配类别,我们假设大部分示例 ( 这个子集中 73% ) 能够通过识别最相关的 ( 单个 ) 句子并根据它推断出答案。此外,只有两个例子需要多个句子进行推理。这比我们预期的要低,这表明数据集需要的推理比之前认为的要少。令我们惊讶的是,根据我们的手工分析,“共参错误”和“模糊/困难”的情况占这个样本集的 25%,这对于准确率远远高于 75%的训练模型来说肯定是一个障碍 ( 当然,模型有时可能会做出幸运的猜测 )。事实上,我们的集成神经网络模型在开发集上已经能够达到 76.5%,我们认为在这个数据集上进一步改进的前景是很小的。


在上述分类的基础上,我们进一步研究神经网络和基于特征的分类器的分类性能。如图 3.3 所示,我们得到以下观察结果:


① 精确匹配的情况非常简单,两个系统的 tems 都得到 100%的正确。


② 对于模糊/硬连接和实体连接错误的情况,符合我们的预期,这两个系统的性能都很差。


③ 两种系统主要不同之处在于释义的情况,以及部分“部分线索”的情况。这清楚地显示了神经网络能够更好地学习语义匹配,包括释义或两个句子之间的词汇变化。


④ 我们认为神经网络模型在所有的单句和明确的情况下都已经达到了近乎最优的性能。




综上所述,我们发现与传统的基于特征的模型相比,神经网络在识别词汇匹配和释义方面无疑更强大;虽然目前还不清楚他们是否也搞定了需要更复杂的文本推理的例子,因为目前在这方面的数据集仍然非常有限。


3.4 Further Advances

在本节中,我们总结了神经阅读理解的最新进展。我们将它们分为以下四类:单词表示、注意机制、LSTMs 的变体以及其他(如训练目标、数据扩充)。最后对其重要性进行了总结和讨论。


3.4.1 Word Representations

第一类是对疑问词和短文词的更好的单词表示,因此神经模型是建立在更好的基础上的。译者注:原文有笔误,大意是神经模型是建立在 word representations 的基础上的。从文本中学习更好的分布式单词表示或者为特定任务发现更好的词嵌入集合依然是一个活跃的研究话题。例如,Mikolov 等人 ( 2017 ) 发现在我们的模型中将 GLOVE 与训练向量使用最新的 FASTTEXT 向量 ( Bojanowski 等人 2017 ) 可以早 SQUAD 上面取得 1 个百分点的提升。不仅如此,有两个关键的想法已经被证明 ( 非常 ) 有用:


Character embeddings


第一个想法是使用字符级嵌入来表示单词,这对于罕见的或词汇表外的单词尤其有用。现有的研究大多采用了一种能够有效利用 n-gram 字符表面模式的卷积神经网络 ( CNN )。更具体地说,设 C 为字符的词汇表,每个单词类型 x 都可以表示为字符序列 。我们首先将 C 中的每个字符映射到一个 维度的向量,所以单词 x 可以表示成 ${\rm c}1,\dots,{\rm c}{|x|}$。


接下来,我们对宽度为 的滤波器应用卷积层,表示 ${\rm c}{i:i+j}{\rm c}i,{\rm c}{i+1},\dots,{\rm c}{i+j}$ 的级联。因此,对于 i = 1,…,|x| - w + 1,我们可以应用这个滤波器 w,然后我们添加一个偏置 b,应用非线性 tanh 如下:



最后,我们可以在 上应用一个最大池操作,,得到一个标量特征:



这个特性本质上选择一个字符 n-gram,其中 n-gram 对应过滤器的宽度 w。我们可以重复上面的过程,方法是重复 个不同的过滤器 。因此,我们可以获得每个单词类型 的基于字符的单词表示。所有的字符嵌入,过滤器权重 {w} 和偏差 {b} 都是在训练中学习的。更多细节可以在 Kim ( 2014 ) 中找到。实际上,字符嵌入 的维数通常取一个小值 ( 例如 20 ),宽度 w 通常取 3 - 5,而 100 是 的一个典型值。


Contextualized word embeddings


另一个重要的概念是上下文的单词嵌入。与传统的单词嵌入 ( 每个单词类型都映射到一个向量 ) 不同,上下文化的单词嵌入将每个单词作为整个输入语句的函数分配给一个向量。这些词的嵌入可以更好地模拟单词使用的复杂特性 ( 例如,语法和语义 ),以及这些用法如何在不同的语言环境中变化 ( 例如,一词多义 )。


ELMO 在 Peters et al. ( 2018 ) 中详细介绍了一个具体的实现:它们的上下文单词嵌入是一个深层双向语言模型的内部状态的学习函数,该模型是在一个大型文本语料库上预先训练的。基本上,给定一个单词序列 它们运行 l 层正向 LSTM,序列概率模型为:



这些上下文的单词嵌入通常与传统的单词类型嵌入和字符嵌入一起使用。事实证明,这种在非常大的文本语料库上 ( 例如 1B 词库标记 ( Chelba et al., 2014 ) ) 预训练的上下文词嵌入是非常有效的。Peters et al. ( 2018 ) 证明,在现有的竞争模型中添加 ELMo embeddings ( L = 2 个 biLSTM 图层,包含 4096 个单元和 512 个维度投影 ) 可以直接将 F1 成绩从 81.1 提高到 85.8,绝对提高 4.7 分。


在 ELMO 之前,McCann 等人 ( 2017 ) 提出了 COVE,该方法在神经机器翻译框架中学习上下文化的单词嵌入,得到的编码器可以作为单词嵌入的补充。他们也展示了 4.3 分的绝对进步。


最近,Radford et al. ( 2018 ) 和 Devlin et al. ( 2018 ) 发现这些上下文词潜入不仅可以用在一个特定任务的神经结构中作为一个词表示的特征 ( 阅读理解模式的上下文 ),而且我们可以调整深层语言模型直接并进行最小修改来执行下游任务。这在我写这篇论文的时候确实是一个非常惊人的结果,我们将在第 4.4.2 节对此进行更多的讨论,在未来还有很多问题需要回答。此外,Devlin et al. ( 2018 ) 提出了一种训练双向语言模型的聪明方法:他们在输入层随机屏蔽一些单词,而不是总是往一个方向叠加 LSTMs 并预测下一个单词,将双向层叠加,并在顶层预测这些被屏蔽的单词。他们发现这种训练策略在经验上非常有用。


3.4.2 Attention Mechanisms

针对神经阅读理解模型,已经提出了许多注意力机制的变种,它们的目的是在不同层次、不同粒度或分层的方式上捕捉问题和文章之间的语义相似性。在 ( Huang et al., 2018b ) 处可以找到这个方向的典型复合例子。据我们所知,目前还没有一个结论说存在一个变种是十分突出的。我们的 STANFORD ATTENTIVE READER 采用了最简单的注意力形式 ( 图 3.4 是不同层的 attention 的概览图 )。除此以外,我们认为有两个想法可以在通常意义上进一步提升这些系统的性能。



Bidirectional attention


Seo 等 ( 2017 ) 首次提出了双向注意力机制的概念。除了我们已经拥有的 ( 特性 ),关键的区别是他们有问题到段落的注意力,这表示了着哪些段落单词与每个问题单词最相似。在实践中,这可以实现为:对于问题中的每个单词,我们可以计算出所有短文单词的注意图,类似于我们在方程 3.22 和 3.23 中所做的,但方向相反:



之后,我们可以简单的将 输入到问题编码器的输入层。


Seo 等人 ( 2017 ) 的注意机制比较复杂,但我们认为是相似的。我们还认为,在这个方向上的注意力功能没有那么有用,Seo 等人 ( 2017 ) 也证明了这一点。这是因为问题通常很短 ( 平均 10- 20 个单词 ),使用一个 LSTM 进行问题编码 ( 无需额外的注意力 ) 通常就足够了。


Self-attention over passage


第二种观点是对段落词的自我关注,最早出现在 Wang 等人 ( 2017 ) 的文章中。直观的感觉是,文章中的单词可以与其他文章中的单词对齐,希望它可以解决相互参照的问题,并从文章中的多个地方收集 ( 同一实体的 ) 信息。


Wang 等 ( 2017 ) 首先计算了这篇文章的隐藏向量:${\rm p}_1,{\rm p}2,\dots,{\rm p}{l_p}{\rm p}_1,{\rm p}2,\dots,{\rm p}{l_p}$ 施加一个注意函数:



之后 被连接起来,并且输入到另一个 bilstm 中:



并且可以被用作最终的篇章表示。


3.4.3 Alternative to LSTMs

目前我们讨论的所有模型都是基于递归神经网络 ( RNNs ) 的。众所周知,增加神经网络的深度可以提高模型的容量,并带来性能的提高 ( He et al., 2016 )。我们之前还讨论了 3 或 4 层的深层 BiLSTM,这通常比单层 BiLSTM 性能更好 ( 第 3.3.2 节 )。然而,随着 LSTM 模型深度的进一步提高,我们面临着两个挑战:① 由于梯度消失问题,优化变得更加困难;② 可扩展性成为一个问题,因为随着层数的增加,训练/推理时间呈线性增长。众所周知,由于 LSTMs 的顺序性,它很难并行化,因此伸缩性 ( scale ) 很差。


一方面,有一些工作尝试在层与层之间添加高速连接 ( Srivastava et al., 2015 ) 或残差连接 ( He et al., 2016 ),从而简化优化过程,能够训练更多层的 LSTMs。另一方面,人们开始寻找 LSTMs 的替代品,在消除重复结构的同时,性能仍然类似甚至更好。


这方面最值得注意的工作是谷歌研究人员提出的 TRANSFORMER 模型 ( Vaswani et al., 2017 )。TRANSFORMER 只构建在 word 嵌入和简单的位置编码之上,这些位置编码具有堆叠的自我关注层和位置明智的完全连接层。通过残差连接,该模型能够在多个层次上快速训练。它首先在 L = 6 层的机器翻译任务 ( 每层由一个自我注意和一个完全连接的前馈网络组成 ) 上表现出优越的性能,然后被 Yu 等人 ( 2018 ) 改编用于阅读理解。


该模型名为 QANET ( Yu et al., 2018 ),它堆叠了多个卷积层,以自我关注和完全连接层为中心,作为问题和段落编码的构建块,以及在最终预测之前堆叠的几个层。该模型显示了当时最先进的性能 ( 表 3.4 ),同时显示了显著的加速。


Lei 等人 ( 2018 ) 的另一项研究工作提出了一种轻量级的递归单元,称为简单递归单元 ( SIMPLE unit,SRU ),它简化了 LSTM 公式,同时支持 cuda 级优化以实现高并行化。研究结果表明,简化递归模型通过层堆积保持了较强的建模能力。他们还证明了用 SRU 单元替换我们模型中的 LSTMs 可以提高 F1 成绩 2 分,同时训练和推理速度更快。


3.4.4 Others

训练目标:通过改进训练目标也有可能取得进一步进展。对于完形填空或多项选择题,通常直接使用交叉熵或最大边际损失。然而,对于跨度预测问题,Xiong 等 ( 2018 ) 认为预测答案两个端点的交叉熵损失与最终的评价指标存在差异,这涉及到 gold answer 与 ground truth 之间的单词重叠。例如:


  • passage:Some believe that the Golden State Warriors team of 2017 is one of the greatest teams in NBA history …

  • question:Which team is considered to be one of the greatest teams in NBA history?

  • ground truth answer:the Golden State Warriors team of 2017


范围“Worriors”也是一个正确的答案,但是从跨熵训练的角度来看,它并不比跨度“历史”更好。熊等人 ( 2018 ) 提出了一种混合训练目标,将位置交叉熵损失和训练后的单词重叠量与强化学习相结合。基本上,他们使用经过交叉 entroy loss 训练的 来采样答案的开始和结束位置,然后使用 F1 分数作为奖励函数。


对于阅读理解问题的自由形式回答,近年来在训练更好的 SEQ2SEQ 模型方面取得了许多进展,尤其是在神经 ma- chine 翻译环境下,如句子水平训练 ( Ranzato et al., 2016 ) 和最小风险训练 ( Shen et al., 2016 )。然而,我们在阅读理解问题上还没有看到很多这样的应用。


数据增加。数据增强是一种非常成功的 image 识别方法,但在 NLP 问题中研究较少。Yu 等 ( 2018 ) 提出了一种为阅读理解模型创建更多训练数据的简单技术。技术称为 backtranslation——基本上就是他们利用两个最先进的神经机器翻译模型:一个模型从英语到法语和其他模型从法语,英语,和解释文章中的每一句话贯穿两个模型 ( 如果需要一些修改答案 )。在 F1 值上,他们通过在 SQUAD 上这样做获得了 2 分。Devlin 等 ( 2018 ) 也发现,SQUAD 与 TRIVIAQA 联合训练 ( Joshi 等,2017 ) 可以适度提高 SQUAD 上的性能。译者注,用这种方式,理论上可以共享大多数语言的数据集


3.4.5 Summary

到目前为止,我们已经讨论了不同方面的最新进展,总而言之,这些进展有助于当前阅读理解基准 ( 尤其是 SQUAD ) 的最新进展。哪些组件比其他组件更重要?我们需要把这些都加起来吗?这些最新的进展是否可以推广到其他阅读理解任务?它们如何与不同的语言理解能力相关联?我们认为这些问题中的大多数还没有一个明确的答案,仍然需要大量的调查。



我们在表 3.7 中编制了对 SQUAD 不同组件的改进。我们想提醒读者,这些数字并不是直接可比较的,因为它们是建立在不同的模型架构和不同的实现之上的。我们希望这个表格至少反映了一些关于这些组件在 SQUAD 数据集中重要性的想法。正如所看到的,所有这些组件或多或少都会对最终的性能做出贡献。最重要的创新可能是使用上下文的单词嵌入 ( 例如 ELMO ),而注意力函数的制定也很重要。研究这些进步是否可以推广到未来的其他阅读理解任务,将是非常重要的。


4. The Future of Reading Comprehension

在前一章中,我们描述了神经阅读理解模型如何在当前的阅读理解基准测试中取得成功,以及它们的关键见解。尽管其发展迅速,但要达到真正的人的阅读理解水平还有很长的路要走。在这一章,我们将讨论未来的工作和开放的问题。


我们首先在第 4.1 节中检查了现有模型的错误情况,并得出结论,尽管它们的平均准确率很高,但在“简单”或“琐碎”的情况下,它们仍然会失败。


正如我们前面所讨论的,最近阅读理解的成功归功于大规模数据集的创建和神经阅读理解模型的开发。在未来,我们相信这两个组成部分仍然同样重要。我们将在 4.2 节和 4.3 节分别讨论数据集和模型的未来工作。现有的数据集和模型中还缺少什么?我们该怎么做呢?


最后,我们在第 4.4 节中回顾了这一领域的几个重要研究问题。


4.1 Is SQuAD Solved Yet?

尽管我们已经在 SQUAD 数据机上达到了超人的性能,这能说明我们的阅读理解模型已经能够解决所有的 SQUAD 例子或者其他同等难度的例子么?


图 4.1 展示了我们在 3.2 节中描述的 STANFORD ATTENTIVE READER 模型的一些失败案例。正如我们所看到的,该模型完美地预测了所有这些例子的答案类型:它预测了问题的一个数字,即……吗?人口是多少……吗?哪支球队赢得了超级碗 50 强?然而,该模型无法理解文本中表达的微妙之处,也无法区分候选答案。细节如下:


① The number 2,400 modifies professors, lecturers, and instructors while 7,200 modifies undergraduates. However, the system failed to identify that and we believe that linguistic structures ( e.g., syntactic parsing ) can help resolve this case.


② Both teams Denver Broncos and Carolina Panthers are modified by the word champion, but the system failed to infer that “X defeated Y” so “X won”.


③ The system predicted 100,000 probably because it is closer to the word population. However, to answer the question correctly, the system has to identify that 3.7 million is the population of Los Angles, and 1.3 million is the population of San Diego and compare the two numbers and infer that 1.3 million is the answer because it is second largest. This is a difficult example and probably beyond the scope of all the existing systems.


我们还仔细研究了迄今为止最佳阵容模型的预测,7 个 BERT 模型的集合 ( Devlin et al., 2018 )。如图 4.2 所示,我们可以看到这个强大的模型仍然会犯一些人类几乎不会犯的简单错误。可以推测,这些模型一直在进行非常复杂的文本匹配,但它们仍然难以理解实体和文本中所表达的事件之间的内在结构。


最后,Jia 和 Liang ( 2017 ) 发现,如果我们在文章末尾添加一个让人分心的句子 ( 见图 4.3 中的例子 ),目前阅读理解系统的平均性能将会从 75.4%大幅下降到 36.4%。这些让人分心的时态与问题有词汇重叠,但实际上并不与正确答案相矛盾,也不会误导人类的理解。如果允许分散注意力的句子添加不符合语法的单词序列,那么效果会更糟。这些结果表明:


  • 目前的模型在很大程度上依赖于文章和问题之间的词汇线索。这就是为什么分散注意力的句子会如此具有破坏性;

  • 虽然模型在原始开发集上取得了很高的精度,但对于对抗性的例子,它们的鲁棒性并不强。这是标准监督学习范式的一个关键问题,它使得现有的模型难以在现实世界中部署。我们将在第 4.3 节中更多地讨论鲁棒性的特性。


综上所述,我们认为,目前的模型虽然在 SQUAD 数据集上已经获得了很高的精度,但目前的模型只关注文本的表层信息,在理解的 ( 稍微 ) 更深层次上仍然存在简单的错误。另一方面,高准确度也表明,大多数球队的例子是相当容易的,需要很少的理解。有一些困难的例子需要在 SQUAD 中进行复杂的推理 ( 例如,图 4.1 中的(c) ),但是由于它们的稀缺性,它们的准确性并没有真正反映在平均度量中。此外,高精度只有在训练和发展来自同一分布时才成立,当它们不同时仍然是一个严重的问题。在接下来的两部分中,我们将讨论创建更具挑战性的数据集和构建更有效模型的可能性。



4.2 Future Work:Datasets

我们主要关注的是 CNN/DAILY MAIL 和 SQUAD,并证明了以下两点:


1、神经模型在这两种数据集上都能够实现比人类更好的效果或者达到目前的上限;


2、虽然这些数据集非常有用,但大多数例子都很简单,还不需要太多推理。


这些数据集中还缺少哪些需要的属性?接下来我们应该处理什么样的数据集?如何收集更好的数据集?


我们认为像 SQUAD 这样的数据集主要有以下的局限性:


  1. 这些问题是根据这篇文章提出的。也就是说,如果一个提问者在提问时看着这篇文章,他们很可能会模仿句子结构,重复使用相同的单词。这减轻了回答问题的难度,因为许多问题的单词与文章中的单词重叠。

  2. 它只允许文章中一个跨度可以回答的问题。这不仅意味着所有的问题都是可回答的,而且还排除了许多可能提出的问题,如是/否、计算问题。正如我们之前所讨论的,大部分的问题都是真实的问题,并且答案通常都很简短 ( 平均 3.1 个 token )。因此,数据集中也很少有为什么 ( 因果关系 ) 和如何 ( 过程 ) 的问题。

  3. 大多数问题的答案只有一个句子,不需要多句推理。Rajpurkar 等 ( 2016 ) 估计只有 13.6%的例子需要多句推理。其中,我们认为大多数的案例都是指代消解,可以通过一个指代消解系统来解决。


为了解决这些局限性,最近出现了一些新的数据集。他们和 SQUAD 有类似的地方,但以不同的方式构建。表 4.1 给出了一些代表性数据集的概述。正如我们所看到的,这些数据集具有相似的数量级 ( 范围从 33k 到 529k 的训练示例 ),并且在最先进的性能和人类性能之间仍然存在差距 ( 尽管有些差距比其他差距更大 )。下面,我们将详细描述这些数据集,并讨论它们如何解决上述限制及其优缺点:


TriviaQA ( Joshi 等,2017 )。这个数据集的关键思想是在构建相应的段落之前收集问题/答案对。更具体地说,他们从琐事和测验联盟网站上收集了 95k 对问答对,并收集了包含答案的虚拟证据,这些答案要么来自网络搜索结果,要么来自与问题中提到的实体对应的维基百科页面。结果,他们总共收集了 650k ( 短文,问题,答案 ) 的三倍。该范式有效地解决了问题依赖于文章的问题,并且更容易廉价地构建大型数据集。值得注意的是,该数据集中使用的段落大多是长文档 ( 平均文档长度为 2895 个单词,是 SQUAD 的 20 倍 ),并且对现有模型的可拓展性也提出了挑战。然而,它有一个类似于 CNN/DAILY MAIL 数据集的问题——由于数据集是启发式地整理的,因此不能保证文章真正提供了问题的答案,这影响了训练数据的质量。


RACE ( Lai 等,2017 )。人的标准化测试是评价汉语阅读理解能力的一种有效方法。RACE 是一个多选题数据集,收集了 12-18 岁中国中学生和高中生的英语考试数据。所有的问题和答案选项都是由专家创建的。因此,该数据集比大多数现有数据集更加困难,据估计,26%的问题需要多句推理。最先进的性能只是 59% ( 每个问题有 4 个候选答案 )。


NarrativeQA ( Kocˇisky et al., 2018 )。这是一个具有挑战性的数据集,它要求工作人员根据维基百科上一本书或一部电影的情节摘要提出问题。答案是自由形式的人类生成的文本,特别是,在交互界面上,标注者被鼓励使用自己的语言,并且不允许复制。情节总结通常比新闻文章或维基百科的段落包含更多的人物和事件,而且更复杂。数据集包含两个设置:一个是基于摘要回答问题 ( 平均 659 个令牌 ),这更接近于 SQUAD;另一个是基于完整的书籍或电影脚本回答问题 ( 平均 62528 个 token )。第二个设置尤其困难,因为它要求 IR 组件在长文档中定位相关信息。这个数据集的一个问题是,由于其自由形式的答案形式,人类的一致性很低,因此很难评估。


SQUAD2.0 ( Rajpurkar 等,2018 )。SQUAD2.0 提出在原有 SQUAD 数据集中增加 53,775 个反面例子。这些问题不能从文章中得到答案,但是看起来和积极的问题很相似 ( 相关的,文章中有一个可信的答案 )。为好地处理数据集,系统不仅需要回答问题,还需要确定段落中什么时候不支持回答,并避免回答。这是实际应用中的一个重要方面,但在以前的数据集中被忽略了。


HotpotQA ( Yang et al., 2018 )。该数据集旨在构造需要多个支持文档才能回答的问题。为了达到这个目的,众包工作者被要求根据维基百科的两个相关段落提问 ( 一篇文章的第一段到另一篇文章有一个超链接 )。它还提供了一种新的仿真陈述比较问题,系统需要在一些共享属性上比较两个实体。该数据集由两个评估设置组成——一个称为干扰设置,其中每个问题都提供 10 个段落,包括用于构建问题的两个段落和从 Wikipedia 检索到的 8 个干扰段落;第二个设置是使用完整的 Wikipedia 来回答这个问题。


与 SQUAD 相比,这些数据集要么需要更复杂的跨时态或文档推理,要么需要处理更长的文档,要么需要生成自由形式的答案而不是提取单个跨度,要么需要预测文章中何时没有答案。它们带来了新的挑战,许多挑战仍然超出了现有模型的范围。我们相信这些数据集将在未来进一步激发一系列的建模创新。当我们的模型达到下一个性能级别后,我们将需要开始构建更加困难的数据集来解决。


4.3 Future Work:Models

接下来,我们转向未来工作模型的研究方向。我们首先描述了阅读理解模型的期望。现有的大部分工作只注重准确性,给定一个标准 train/dev/test 数据集分割,主要目标是得到最好的测试准确性分数。但是,我们认为还有其他重要的方面被忽视了,我们需要工作在未来,包括速度和可扩展性、鲁棒性和可解释性。最后,我们讨论了在目前的模型中还缺少哪些重要的元素,以解决更多的阅读理解难题。


4.3.1 Desiderata

除了准确性 ( 在标准数据集上获得更好的性能分数 ),以下的需求对未来的工作也非常重要:


Speed and Scalability。如何构建更快的模型 ( 用于训练和推理 ),以及如何扩展到更长的文档,这些都是需要研究的重要方向。建立更快的训练模型可以降低实验的周转时间,还可以使我们在更大的数据集上进行训练。在实际应用中部署模型时,为推理构建更快的模型非常有用。此外,用 RNN 编码一个很长的文档 ( 例如 TRIVIAQA ) 甚至是一本书 ( 例如 NARRATIVEQA ) 都是不现实的,这仍然是一个严峻的挑战。例如,TRIVIAQA 的平均文档长度为 2,895 个 token,为了可伸缩性,作者将文档缩减为前 800 个 token。NARRATIVEQA 的平均文档长度为 62,528 个 token,作者必须首先使用 IR 系统从故事中检索少量相关段落。


现有的对这些问题的解决方法如下:


  1. 如我们在 3.4.3 节中讨论的,用 transformer ( Vaswani et al., 2017 ) 或更轻的 non-recurrent 模型 ( Lei et al., 2018 ) 取代 LSTMs。

  2. 训练学习跳过部分文档的模型,这样他们就不需要阅读所有内容。这些模型可以运行得更快,同时仍然保持类似的性能。该领域的代表作品有 Yu 等 ( 2017 ) 和 Seo 等 ( 2018 )。

  3. 优化算法的选择也会极大地影响收敛速度。多 gpu 训练和硬件性能也是需要考虑的重要方面,但超出了本文的研究范围。Coleman 等人 ( 2017 ) 提供了一个基准:

  4. https://dawn.cs.stanford.edu/benchmark/

  5. 用于测量端到端训练和推理时间,以实现对包括 SQUAD 在内的广泛任务的最先进的准确性水平。


Robustness。我们在 4.1 节中讨论了现有的模型对于对抗性例子来说是非常脆弱的,这将成为我们在现实世界中部署这些模型时所面临的一个严重问题。此外,目前的大多数工作都遵循标准范例:对一个数据集的分割进行培训和评估。众所周知,如果我们在一个数据集上训练我们的模型,并在另一个数据集上进行评估,由于它们的文本来源和构造方法不同,性能将显著下降。对于今后的工作,我们需要考虑:


  1. 如何创造更好的对抗训练示例并且将它们加入到训练过程中

  2. 对迁移学习和多任务学习进行更多深入的研究,建立跨数据集的高性能模型。

  3. 我们可能需要打破监督学习的标准范式,并考虑如何创建更好的方法来评估我们当前的模型,以便构建更健壮的模型。


Interpretability。最后一个重要的方面是可解释性,在目前的系统中,可解释性一直是被忽略的。我们未来的系统不仅应该能够提供最终的答案,而且还应该提供预测背后的理由,这样用户就可以决定是否可以信任输出并利用它们。神经网络尤其臭名昭著的一个事实是,端到端训练范式使这些模型像一个黑匣子,很难解释它们的预测。如果我们想将这些系统应用到医疗或法律领域,这一点尤其重要。


可解释性可以有不同的定义。在我们的背景下,我们认为有几种方法可以解决这个问题:


  1. 最简单的方法是要求模型学会从文档中提取输入片段作为支持证据。这在以前 ( e.g., ( Lei et al., 2016 ) ) 对于句子分类问题已有研究,但在阅读理解问题中还没有。

  2. 更复杂的方法是,这些模型确实能够生成理论依据。模型需要解释这些部分是如何连接的,并最终得到答案,而不是只突出显示文章中相关的部分。以图 4.1 © 为例,系统需要解释两个城市是最大的两个,以及因为 370 万大于 130 万,所以它是第二大城市。我们认为这种需求非常重要,但远远超出了当前模型的范围。

  3. 最后,需要考虑的另一个重要方面是,我们可以获得哪些培训资源来达到这种可解释性水平。从最终答案中推断出理论依据是可行的,但相当困难。我们应该考虑收集人类的解释作为未来培训理论的监督 ( 标签 )。


4.3.2 Structures and Modules

在这个章节,我们会讨论如果我们想要解决更多困难的阅读理解问题的话,目前模型中缺失的元素。


首先,当前的模型要么建立在序列模型的基础上,要么对称地处理所有单词对 ( 例如 TRANSFORMER ),并且忽略了语言的固有结构。一方面,这迫使我们的模型从头开始学习所有相关的语言信息,这使得我们的模型的学习更加困难。另一方面,NLP 社区多年来投入了大量精力研究语言表示任务 ( 例如语法解析、指代 ) 并且构建许多语言资源和工具。语言按照单词序列上的层次结构和嵌套结构对意义进行编码。在我们的阅读理解模型中更明确地编码语言结构是否仍然有用?


Figure 4.4 表明了 CORENLP 在 SQUAD 中输出的几个例子。我们相信在合格结构信息会是有意义的:


  1. 2400 是教授的数字修饰符应该可以帮助我们回答 What is the total number of professors, instructors, and lecturers at Harvard?

  2. 指代信息,it 代表 Harvard 应该可以帮助回答问题:Starting in what year has Harvard topped the Academic Rankings of World Universities?


因此,我们认为这些语言知识/结构仍然是对现有模型的有益补充。剩下的我们需要回答的问题是:① 将这些结构合并到序列模型中的最佳方法是什么?② 我们是想将结构建模为潜在变量,还是依赖现成的语言工具?对于后一种情况,当前的工具是否足够好,使模型能够获得更多的好处 ( 而不是遭受噪声 )?我们能进一步提高这些代表任务的性能吗?


我们认为,大多数现有模型仍然缺少的另一个方面是模块 ( modules )。阅读理解的任务本质上是非常复杂的,不同类型的例子需要不同类型的推理能力。如果我们想通过一个巨大的神经网络来学习所有的东西,这仍然是一个巨大的挑战 ( 这让人想起为什么提出注意力机制,因为我们不想把一个句子或一段话的意思压缩成一个向量! ) 我们相信,如果我们想达到更深层次的阅读理解,我们未来的模型将更加结构化,模块化,解决一个综合任务可以分解成许多子问题,我们可以单独解决每一个规模较小的子问题 ( 例如,每个推理类型 ) 并组合它们。


modules 的思想以前已经在神经模块网络 ( NMN ) 中实现过 ( Andreas et al., 2016 )。它们首先对问题进行依赖解析,然后根据解析结构将回答问题分解为几个“模块”。他们在视觉问答 ( VQA ) 任务中使用的一个例子是:一个问题“鸟是什么颜色的?”可以分解为两个模块。一个模块用于检测给定图像中的鸟,另一个模块用于检测发现区域(鸟)的颜色。我们相信这种方法有望回答诸如加州第二大城市的人口是多少之类的问题。( 图 4.1 © )。然而,迄今为止,NMN 只在视觉问答或小知识库问题上进行了研究,由于语言变异和问题类型的灵活性,将其应用于阅读理解问题可能更具挑战性。


4.4 Research Questions

在最后一个小节中,我们讨论一些这个领域的中心研究问题,这些依然是 open 的,并且等待在未来被回答。


4.4.1 How to Measure Progress?

第一个问题是:How can we measure the progress of this field?


评估指标无疑是衡量我们阅读理解水平进步的清晰指标。这是否意味着我们在阅读理解上取得了真正的进步?我们如何判断一个基准上的一些进展是否可以推广到其他基准上?如果模型 A 在一个数据集上比模型 B 工作得更好,而模型 B 在另一个数据集上工作得更好呢?如何判断这些计算机系统与真正的人类阅读理解水平之间的差距?


一方面,我们认为参加人的标准化考试可以作为评价机器阅读理解系统性能的一个好策略。这些问题通常是精心策划和设计的,以测试人类阅读理解能力的不同水平。在构建自然语言理解系统时,使计算机系统与人类测量系统保持一致是一种正确的方法。


另一方面,我们认为在未来,我们需要将许多阅读理解数据集集成为一个测试套件进行评估,而不是只在一个数据集上进行测试。这将帮助我们更好地区分什么是阅读理解的真正进步,什么可能只是对一个特定数据集的过度拟合。


更重要的是,我们需要更好地理解我们现有的数据集:描述它们的质量和回答问题所需的技能。这将是构建更具挑战性的数据集和分析模型行为的重要一步。Sugawara 等人 ( 2017 ) 在分析 Chen et al. ( 2016 ) 的 CNN/DAILY MAIL 例子的基础上,尝试将阅读理解技能分为两个不同的部分:前提技能和可读性。前提技能测量不同类型的推理和回答问题所需的知识,并定义了 13 个技能:对象跟踪、数学推理、指代解析、逻辑推理、类比、因果关系、时空关系、省略、搭桥、精化、元知识、示意性从句关系和标点符号。可读性度量“文本处理的易用性”,并使用了广泛的语言特性/人类可读性度量。作者的结论是,这两个集合是弱相关的,从易于阅读的上下文中设计难的问题是可能的。这些研究表明,我们可以分别基于这些属性构建数据集和开发模型。


此外,Sugawara 等人 ( 2018 ) 设计了一些简单的过滤启发式算法,并将许多现有数据集中的例子划分为一个硬子集和一个简单子集,这是基于:① 是否可以只用头几个单词来回答问题;② 答案是否包含在文章中最相似的句子中。他们发现,与整个数据集相比,硬子集的基线性能显著下降。此外,Kaushik 和 Lipton ( 2018 ) 使用仅传递或仅提问的信息分析了现有模型的性能,发现这些模型有时可以工作得惊人地好,因此在一些现有数据集中存在注释构件。


综上所述,我们认为,如果我们想在今后的阅读理解中取得平稳的进步,我们必须首先回答这些关于例题难度的基本问题。了解数据集需要什么,我们当前的系统能做什么和不能做什么,这将帮助我们识别我们面临的挑战,并衡量进展。


4.4.2 Representations vs. Architecture:Which is More Important?

第二个重要的问题是理解表示和架构在对阅读理解模型性能影响上的角色。自 SQUAD 建立以来,最近出现了一种增加神经结构复杂性的趋势。特别是,人们提出了越来越复杂的注意力机制来捕捉文章和问题之间的相似性 ( 第 3.4.2 节 )。然而,最近的研究 ( Radford et al., 2018;Devlin et al ., 2018 ) 提出,如果我们能在大型文本语料库上预训练深度语言模型,一个拼接问题和篇章的简单模型,并且不需要在这两者 ( 问题和篇章 ) 之间建立任何直接互动,都可以在 SQUAD 和 RACE 这辆的阅读理解数据集上表现十分良好。( 见表 3.4 和表 4.1 )。


如图 4.5 所示,第一个类的模型 ( 左 ) 基于顶层的在未标记文本上预训练的词嵌入 ( 每个单词类型有一个向量表示 ) 构建,而所有其余的参数 ( 包括所有的权重来计算各种注意力功能 ) 需要从有限的训练数据学习。第二类模型 ( 右 ) 使模型体系结构非常简单,它只将问题和篇章建模为单个序列。对整个模型进行预训练,保留所有参数。只增加了几个新的参数 ( 如预测 SQUAD 起始和结束位置的参数 ),其他参数将在阅读理解任务的训练集上进行微调。


我们认为这两类模型表明了两个极端。一方面,它确实展示了非监督表示的不可思议的力量。由于我们有一个从大量文本中预先训练的强大的语言模型,该模型已经编码了大量关于语言的属性,而一个连接篇章和问题的简单模型足以学习两者之间的依赖关系。另一方面,当只给出单词嵌入时,似乎对文章和问题之间的交互进行建模 ( 或者为模型提供更多的先验知识 ) 会有所帮助。在未来,我们怀疑我们需要将两者结合起来,像 BERT 这样的模型太粗糙,无法处理需要复杂推理的例子。


4.4.3 How Many Training Examples Are Needed?

第三个问题是实际需要多少个训练实例?我们已经多次讨论过神经阅读理解的成功是由大规模的数据集驱动的。我们一直在积极研究的所有数据集都包含至少 50,000 个示例。我们能否始终保持数据的丰富性,并进一步提高系统的性能?是否有可能训练一个只有几百个注释例子的神经阅读理解模型?


我们认为目前还没有一个明确的答案。一方面,有明确的证据表明,拥有更多的数据会有所帮助。Bajgar et al. ( 2016 ) 证明,使用相同的模型,膨胀通过古登堡计划 ( project Gutenberg ) 从书籍中构建的完形填空 ( cloze-style ) 的训练数据可以在 CHILDREN BOOK TEST ( CBT ) 数据集合 ( Hill et al., 2016 )。我们之前讨论过使用数据增强技术 ( Yu et al.2018 ) 或使用 TRIVIAQA 增强训练数据可以帮助提高在 SQUAD 上的性能 ( # training examples = 87,599 )。


另一方面,预训练 ( 语言 ) 模型 ( Radford 等,2018;Devlin et al., 2018 ) 可以帮助我们减少对大规模数据集的依赖。在这些模型中,大部分参数已经在大量的未标记数据上进行了预训练,并且只会在训练过程中进行微调。


在未来,我们应该鼓励更多在非监督学习和迁移学习上的研究。利用非标注数据 ( 例如 text ) 或者别的廉价的资源或者监督 ( 例如 CNN/DAILY MAIL 这样的数据集 ) 会将我们从收集昂贵的标注数据中解放出来。我们也应该寻找更好和更加便宜的方式来收集监督数据。


译者 注

关于这篇论文的中文翻译在这里:


https://chendq-thesis-zh.readthedocs.io/en/latest/


同时我强烈推荐 phD Grind:


http://www.pgbovine.net/PhD-memoir.htm


这篇文章,也是讲述了斯坦福大学的博士生的学习心路历程。推荐理由引用其中的一段话:有些人可以通过博士的学习生涯学习到一种思维方式,有的人没有通过博士的学习生涯,但是通过别的方式同样达到了这样的高度。


NLP 领域逐渐进入人们的视野,从 word2vec 到 BERT 再到后来提出的一些模型,都是在 dig 预训练这个环节。


在未来,有时间的情况话,我会对文中提到的一些有代表性的论文进行解读。部分论文会进行复现。


才疏学浅,有不足之处,还望指出。谢谢。可以直接提出 issue 或者通过邮件联系:4ljy@163.com。


本文翻译已经咨询过原作者。


本文仅供学习交流所用,一切权利由原作者及单位保留,译者不承担法律责任。


论文原文地址:


https://www.cs.princeton.edu/~danqic/papers/thesis.pdf


陈丹琦博士个人主页:


https://www.cs.princeton.edu/~danqic/


译者介绍


Duke Lee。前美团点评 NLP 算法工程师。曾负责自然语言处理平台。


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247492593&idx=1&sn=76859c1437aed7d28f6c76cbaced14e9&chksm=fbd7519dcca0d88b5f6183e5a4d2ae81931e7bcdb31100d360c8ce216845e1e6e89b02766734&scene=27#wechat_redirect


2019 年 8 月 03 日 08:002868

评论

发布
暂无评论
发现更多内容

融云 Web SDK 如何实现只有一个设备登入

融云 RongCloud

《MySQL》系列 - 小胖要的 MySQL 索引详解(附 20 张图解)

一个优秀的废人

Java MySQL 数据库 索引 B+树

最常用的设计模式-模板方法

sdutyq

第八周笔记

Ashley.

产品经理训练营--大作业

月亮 😝

榨干服务器:一次惨无人道的性能优化

程序员小毕

Java 数据库 架构 面试 性能优化

融云 Web 播放声音(AMR 、WAVE)

融云 RongCloud

融云 Web 播放声音 — Flash 篇 (播放 AMR、WAV)

融云 RongCloud

中关村软件园与百度飞桨启动AI人才培养计划:AI发展,人才先行

百度大脑

人工智能 百度 人才培养

产品经理训练营——大作业

产品经理训练营

第八周作业

Ashley.

使用面向行为编程解除项目耦合

sdutyq

越过山丘,遇见更美的风景

boshi

创业 七日更

融云 IM SDK 发送语音消息

融云 RongCloud

(28DW-S8-Day25) 用流程重新定义职位

mtfelix

28天写作

有感于最近的一些事件

ES_her0

28天写作 3月日更

领域驱动设计101 -领域、知识、组织结构及模型

luojiahu

领域驱动设计

Apache Pulsar在能源互联网领域的落地实践

Apache Pulsar

大数据 开源 Apache Pulsar 消息系统 工业物联网

SDK 兼容 JSON

融云 RongCloud

区块链如何走向云端?

CECBC区块链专委会

云技术

最高法两会报告聚焦区块链惩治抄袭,区块链在保护网络著作权方面如何作为?

CECBC区块链专委会

法律

什么是 Git? - 探索分布式版本控制工具

信码由缰

git DevOps

大作业用例

产品经理训练营

融云 IM 那些事儿

融云 RongCloud

集成融云 IM 问题总结

融云 RongCloud

作业5-待完成

YING꯭YING

图片社区类APP增加评论表情包功能

🙈🙈🙈

极客大学产品经理训练营

重来:更为简单有效的商业逻辑

张老蔫

28天写作

阿里强推服务治理全栈笔记!服务治理体系+架构+实践三飞

程序员小毕

Java 程序员 架构 微服务 服务治理

第九周作业

MR.X

OLAP技术选型思路总结,你绕不开的“不可能三角”

关二爷大数据笔记

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

神经阅读理解与超越:基础篇-InfoQ