Home

gentlesnow

29 Jul 2019

【论文研读】 006 Neural Reading Comprehension and Beyond

https://stacks.stanford.edu/file/druid:gd576xb1833/thesis-augmented.pdf

作者: 陈丹琦


论文动机

为了处理这样一段文本,NLP社区花了几十年的时间来解决文本理解各个方面的不同任务,包括:

  1. 词性标注(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)。
  2. 命名实体识别(named entity recognition)。我们的机器也应该明白,故事中是Alyssa、Ellen、Kristen人物的名字,而Charlotte、Atlanta和Miami是地点的名字。
  3. 语法解析(syntactic parsing)。为了理解每个句子的意思,我们的机器还需要理解单词之间的关系,或者语法(grammatical)结构。还是用故事中的第一句话举例:Alyssa got to the beach after a long trip,,机器应该理解Alyssa是主语,beach是动词got的宾语,而after a long trip作为一个整体是一个介词短语,它描述了动词与时间的关系。
  4. 指代消解。此外,我们的机器甚至需要理解句子之间的关系。例如,She ‘s now in Miami这句话中提到的She指的是第一句中提到的Alyssa,而提到的The girls指的是前面句子中提到的Alyssa、Ellen、Kristen和Rachel。

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

我们的计算机系统必须理解文本的各个方面来正确地回答这些问题。

由于问题可以被设计成问询我们关心的方面,所以阅读理解可能是评估语言理解最合适的任务(reading comprehension could be the most suitable task for evaluating language understanding)。

神经阅读理解(neural reading comprehension)已经被证明比非神经(网络)的、基于特征的模型更有效。

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

如果我们能够构建出高性能的阅读理解系统,它们将成为问答和对话系统等应用的关键技术(they would be a crucial technology for applications such as question answering and dialogue 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%的准确率。

在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%的准确率。

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

  1. 这些模型严重依赖于现有的语言工具,如依赖依存解析和语义角色标记(SRL)系统。然而,这些语言表示任务还远远没有解决,现成的工具通常是从单个领域(的文章)(例如,newswire文章)训练而来,在实际使用中存在泛化问题。因此,利用现有的语言注释作为特性有时会在这些基于特性的机器学习模型中增加噪音,而更高级别的注释(例如,篇章关系与词性标记),会让情况变得更糟糕。
  2. 模拟人类水平的理解是一个难以捉摸的挑战,而且总是很难从当前的语言表征中构建有效的特征。例如,对于图1.1中的第三个问题:How many friends does Alyssa have in this story?,当证据散布在整个文章中,基本不可能构建出一个有效特征的。
  3. 尽管我们可以从人类标记的阅读理解示例中训练模型,这确实激励人心,但这些数据集仍然太小,无法支持表达性统计模型。例如,用于训练依存解析器的English Penn Treebank数据集包含39,832个示例,而在MCTEST中,用于训练的示例仅为1480个——更不用说阅读理解了,作为一项综合性的语言理解任务,阅读理解更加复杂,并且需要不同的推理能力。

这个领域的转折点出现在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万个数据示例。

更进一步,我们的工作(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值。

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

  1. 他们不依赖于任何下游的语言学特征(比如,依存分析或者指代消解),并且所有的特征是在一个统一的端到端的的框架中独立学习来的。这避免了语言学标注的噪音,并且也在可用的特征空间中提供了更好的了灵活性。
  2. 传统的符号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模型中是一个共有的问题。利用低维,稠密的词向量共享相似词语之间在统计上的强度,可以有效的缓解稀疏性。
  3. 这些模型从从构建大量手工特征的劳动中解脱出来。因此,神经模型在概念上更简单,(研究)重点可以转移到神经结构的设计(译者注:可以从构建手工特征中解放,转而研究神经网络结构)。由于现代深度学习框架如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),并且以不同的方式构建。他们的目的是应对许多之前没有被解决的挑战:独立于段落的问题,需要多个句子甚至多个文档来回答的问题,基于长文档(比如一本书)的问题,或者不能从段落中回答的问题。在撰写本文时,这些数据集大多还没有得到解决,并且最先进的方法和人类的水平之间仍然存在很大的差距。阅读理解已成为当今自然语言处理中最活跃的领域之一,仍有许多待解决的问题。

任务定义

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

给定一组训练实例${(p_i, q_i, a_i)}^n_{i=1}$ ,目标是学习一个预测器f,它以一段文本p和一个相应的问题q作为输入,给出答案a作为输出。

f:(p, q) →a (2.1)

令$p=(p_1,p_2, … , p_{l_p})$,$q = (q_1,q_2,…,q_{l_q})$,其中$l_p$和$l_q$分别表示文本(passage)和问题(question)的长度。V为预定义词汇表,则对于i=1,。。。。,$l_p$,$p_i∈V$,且i=1,。。。。,$l_q$,$q_i∈V$。在这里,我们只把文本p看作一个由lp单词序列表示的短段落。将其扩展到多段形式(Clark and Gardner, 2018)非常简单,其中p是一组段落,或者将其分解为更小的语言单元,如句子。

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

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

​ RTottenham manager Juande Ramos has hinted he will allow _____ to leave if the Bulgaria striker makes it clear he is unhappy. 在这些任务中,系统必须基于文本来猜测哪些词或实体来完善句子(问题)。并且答案要么是选择从一组预定义的候选集中选择要么是从一个完整的词汇表中选择。比如说,,在WHO-DID-WHAT数据集中 (Onishi et al ., 2016),答案必须是文本中的一个人名,而其候选集的大小平均为3.5。

  1. 多项选择类型(Multiple choice):在这个类别下,正确答案从k个假设答案中选择(比如:k=4) A={a1, …, ak} where ak = (ak,1,ak,2,…ak,la,k),ak,I < V 正确的答案可以是一个单词,一个短语或者是一句话。给出的假设答案中有一个是正确的,所以a必须从{a1,…ak}中选择。
  2. 范围预测类型(Span prediction):这个类别也被称为抽取式问答(extractive question answering)并且答案必须是文本中的一个范围。因此,答案可以表示为(a_start, a_end),其中1<=a_start<=a_end<=lp。并且答案对英语pastart,…paend。
  3. 自由形式回答类型(Free-form answer):最后一种类型允许答案是任何形式的文本(即,任意长度的单词序列),形式上:a∈V。

每个类型的问题所属典型数据集的示例:

  1. CNN/DAILY MAIL (Hermann et al., 2015) (cloze style),
  2. MCTEST (Richardson et al., 2013) (multiple choice),
  3. SQUAD (Rajpurkar et al., 2016) (span prediction)
  4. NARRA- TIVEQA (Kocˇisky et al., 2018) (free-form answer).

它们的评估指标。

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

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

  1. 精准匹配(Exact match,EM)如果预测的答案等于正确答案,则精确匹配(EM)将分配满分1.0分,否则将分配满分0.0分。
  2. F1得分(F1 score)计算预测答案和正确答案之间的平均单词重叠。预测答案和正确答案被看作一堆token,所以token-level的F1得分计算如下: ​ F1 = 2×Precision×Recall/(Precision+Recall)

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

阅读理解和问答系统

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

  1. 问答的最终目标是建立一个能够自动回答人类提出的问题计算机系统,系统可以依赖任何资源。这些资源可以是结构化的知识库、非结构化的文本集合(百科全书、词典、新闻专线文章和一般Web文档)、半结构化的表,甚至是其他模式。为了提高QA系统的性能,人们在(1)如何搜索和识别相关资源,(2)如何集成来自不同信息片段的答案,甚至(3)研究人类在现实世界中通常会问哪些类型的问题上进行了大量的工作。
  2. 然而,阅读理解(reading comprehension)强调的是文本理解(text understanding)和一些被认为是衡量语言理解程度的尖锐问题。因此,要回答这个问题,需要对给定的段落有深刻的理解。由于这一关键的区别,这一领域的早期作品大多集中在虚构的故事(Lehnert, 1977)(后来扩展到Wikipedia或Web文档),所以所有回答理解问题的信息都来自文章本身,而不是任何世界知识。这些问题也是专门为测试文本理解的不同方面而设计的。这种区别类似于人们通常在搜索引擎上问的问题与在人类阅读理解测试中通常会提出的问题。

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

数据集和模型

近年来阅读理解的成功主要是由两个关键部分驱动的:大型阅读理解数据集和端到端神经阅读理解模型。

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

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

ml-06-01

阅读理解神经网络模型

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

\[w􏰇^Tf_{p,q}(a) > w􏰇^Tf_{p,q}(e), ∀e ∈ \epsilon \ {a},\]

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

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

ml-06-02

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),并使用了丰富的特性集,包括语义框架、单词嵌入和指代消解。

Word embeddings

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

\[V_{car}=[0, 0, … 0, 0, 1, 0, … 0]^T\] \[V_{vehicle}=[0, 1, … 0, 0, 0, 0, … 0]^T\]

这些稀疏向量最大的问题是它们在单词之间没有任何语义相似性,即,对于任意一对不同的单词a, b, cos(v_a, v_b) = 0。低维单词嵌入有效地解决了这一问题,相似的单词可以在几何空间中编码为相似的向量:cos(v_car, v_vechicle) < cos(v_car, v_man)。【使用cos的值来反映两个向量的相似度】

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

\[V_{car}=[0, 0, … 0, 0, 1, 0, … 0]^T\] \[V_{vehicle}=[0, 1, … 0, 0, 0, 0, … 0]^T\]

这些稀疏向量最大的问题是它们在单词之间没有任何语义相似性,即,对于任意一对不同的单词a, b, cos(v_a, v_b) = 0。低维单词嵌入有效地解决了这一问题,相似的单词可以在几何空间中编码为相似的向量:cos(v_car, v_vechicle) < cos(v_car, v_man)。

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

Recurrent neural networks

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

\[h_t=f(h_{t-1},x_t; \theta)\]

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

Vanilla的RNNs采用下列的形式:

\[h_t=tanh(W^{hh}h_{t-1}+W^{hx}x_t+b)\]

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

ml-06-03

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

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

ml-06-04

最后,我们定义h_t是将公式中的两个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:

\[P(Y = y) = exp(W_yh_n) / \sum_{y’}exp(W_{y’}h_n)\]

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

\[\alpha_i= exp(g(h_i, w; \Theta_g)) / \sum_{i’=1}^n exp(g(h_{i’}, w; \Theta_g))\] \[c= \sum_{i=1}^n \alpha_ih_i\]

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

\[g_{dot}(h_i, w) = h_i^Tw\] \[g_{bilinear}(h_i, w) = h_i^TWw\] \[g_{MLP}(h_i, w) = v^Ttanh(W^hh_i + W^ww)\]

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

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

ml-06-05

阅读理解的发展方向

Is SQuAD Solved Yet?

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

Jia和Liang(2017)发现,如果我们在文章末尾添加一个让人分心的句子(见图4.3中的例子),目前阅读理解系统的平均性能将会从75.4%大幅下降到36.4%。这些让人分心的时态与问题有词汇重叠,但实际上并不与正确答案相矛盾,也不会误导人类的理解。如果允许分散注意力的句子添加不符合语法的单词序列,那么效果会更糟。这些结果表明,1)目前的模型在很大程度上依赖于文章和问题之间的词汇线索。这就是为什么分散注意力的句子会如此具有破坏性;2)虽然模型在原始开发集上取得了很高的精度,但对于对抗性的例子,它们的鲁棒性并不强。这是标准监督学习范式的一个关键问题,它使得现有的模型难以在现实世界中部署。我们将在第4.3节中更多地讨论鲁棒性的特性。

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

数据集

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

  1. 神经模型在这两种数据集上都能够实现比人类更好的效果或者达到目前的上限;
  2. 虽然这些数据集非常有用,但大多数例子都很简单,还不需要太多推理。

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

  1. 这些问题是根据这篇文章提出的。也就是说,如果一个提问者在提问时看着这篇文章,他们很可能会模仿句子结构,重复使用相同的单词。这减轻了回答问题的难度,因为许多问题的单词与文章中的单词重叠。
  2. 它只允许文章中一个跨度可以回答的问题。这不仅意味着所有的问题都是可回答的,而且还排除了许多可能提出的问题,如是/否、计算问题。正如我们之前所讨论的,大部分的问题都是真实的问题,并且答案通常都很简短(平均3.1个token)。因此,数据集中也很少有为什么(因果关系)和如何(过程)的问题。
  3. 大多数问题的答案只有一个句子,不需要多句推理。Rajpurkar等(2016)估计只有13.6%的例子需要多句推理。其中,我们认为大多数的案例都是指代消解,可以通过一个指代消解系统来解决。

为了解决这些局限性,最近出现了一些新的数据集。

  1. TriviaQA (Joshi等,2017)。这个数据集的关键思想是在构建相应的段落之前收集问题/答案对。更具体地说,他们从琐事和测验联盟网站上收集了95k对问答对,并收集了包含答案的虚拟证据,这些答案要么来自网络搜索结果,要么来自与问题中提到的实体对应的维基百科页面。结果,他们总共收集了650k(短文,问题,答案)的三倍。该范式有效地解决了问题依赖于文章的问题,并且更容易廉价地构建大型数据集。值得注意的是,该数据集中使用的段落大多是长文档(平均文档长度为2895个单词,是SQUAD的20倍),并且对现有模型的可拓展性也提出了挑战。然而,它有一个类似于CNN/DAILY MAIL数据集的问题——由于数据集是启发式地整理的,因此不能保证文章真正提供了问题的答案,这影响了训练数据的质量。
  2. RACE (Lai等,2017)。人的标准化测试是评价汉语阅读理解能力的一种有效方法。RACE是一个多选题数据集,收集了12-18岁中国中学生和高中生的英语考试数据。所有的问题和答案选项都是由专家创建的。因此,该数据集比大多数现有数据集更加困难,据估计,26%的问题需要多句推理。最先进的性能只是59%(每个问题有4个候选答案)。
  3. NarrativeQA (Kocˇisky et al., 2018)。这是一个具有挑战性的数据集,它要求工作人员根据维基百科上一本书或一部电影的情节摘要提出问题。答案是自由形式的人类生成的文本,特别是,在交互界面上,标注者被鼓励使用自己的语言,并且不允许复制。情节总结通常比新闻文章或维基百科的段落包含更多的人物和事件,而且更复杂。数据集包含两个设置:一个是基于摘要回答问题(平均659个令牌),这更接近于SQUAD;另一个是基于完整的书籍或电影脚本回答问题(平均62528个token)。第二个设置尤其困难,因为它要求IR组件在长文档中定位相关信息。这个数据集的一个问题是,由于其自由形式的答案形式,人类的一致性很低,因此很难评估。
  4. SQUAD2.0 (Rajpurkar等,2018)。SQUAD2.0提出在原有SQUAD数据集中增加53,775个反面例子。这些问题不能从文章中得到答案,但是看起来和积极的问题很相似(相关的,文章中有一个可信的答案)。为好地处理数据集,系统不仅需要回答问题,还需要确定段落中什么时候不支持回答,并避免回答。这是实际应用中的一个重要方面,但在以前的数据集中被忽略了。
  5. HotpotQA (Yang et al., 2018)。该数据集旨在构造需要多个支持文档才能回答的问题。为了达到这个目的,众包工作者被要求根据维基百科的两个相关段落提问(一篇文章的第一段到另一篇文章有一个超链接)。它还提供了一种新的仿真陈述比较问题,系统需要在一些共享属性上比较两个实体。该数据集由两个评估设置组成——一个称为干扰设置,其中每个问题都提供10个段落,包括用于构建问题的两个段落和从Wikipedia检索到的8个干扰段落;第二个设置是使用完整的Wikipedia来回答这个问题。

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

模型

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

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

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)提供了一个基准(https://dawn.cs.stanford.edu/benchmark/),用于测量端到端训练和推理时间,以实现对包括SQUAD在内的广泛任务的最先进的准确性水平。

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

  1. 如何创造更好的对抗训练示例并且将它们加入到训练过程中
  2. 对迁移学习和多任务学习进行更多深入的研究,建立跨数据集的高性能模型。
  3. 我们可能需要打破监督学习的标准范式,并考虑如何创建更好的方法来评估我们当前的模型,以便构建更健壮的模型。

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

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

  1. 最简单的方法是要求模型学会从文档中提取输入片段作为支持证据。这在以前(e.g., (Lei et al., 2016))对于句子分类问题已有研究,但在阅读理解问题中还没有。
  2. 更复杂的方法是,这些模型确实能够生成理论依据。模型需要解释这些部分是如何连接的,并最终得到答案,而不是只突出显示文章中相关的部分。以图4.1 (c)为例,系统需要解释两个城市是最大的两个,以及因为370万大于130万,所以它是第二大城市。我们认为这种需求非常重要,但远远超出了当前模型的范围。
  3. 最后,需要考虑的另一个重要方面是,我们可以获得哪些培训资源来达到这种可解释性水平。从最终答案中推断出理论依据是可行的,但相当困难。我们应该考虑收集人类的解释作为未来培训理论的监督(标签)。

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

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

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

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

中心研究问题

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

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

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

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

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

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

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

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

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

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

第三个问题是实际需要多少个训练实例?我们已经多次讨论过神经阅读理解的成功是由大规模的数据集驱动的。我们一直在积极研究的所有数据集都包含至少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这样的数据集)会将我们从收集昂贵的标注数据中解放出来。我们也应该寻找更好和更加便宜的方式来收集监督数据。


参考资料

  1. Welcome to chendq-thesis-ZH’s documentation!

Til next time,
gentlesnow at 13:13

scribble