写在前面:Danqi Chen的这篇论文很好地概括了从1977年以来的阅读理解领域发展,通读一遍对初学者(我)也是受益匪浅,文章以“数据集和模型的相互促进”为脉络,穿插讲解了各种数据集和模型方法的发展,并拿自己的一个典型模型做了详细讲解,值得一读。我在这里基本是对论文内容进行了压缩和总结,我自己的想法以引用块的形式写在中间。

《Neural Reading Comprehension and Beyond》

1. introduction

NLP问题是人工智能领域最难以捉摸并长期存在的挑战之一。
理解人类语言意味着什么?NLP致力于解决几个不同方面的不同任务。包括以下

  • 词性标注
  • 命名实体识别
  • 语法解析
  • 指代消解
  • 其他更多任务

而阅读理解任务——给定一篇文章,要求回答针对文章的理解性问题——被认为是可以综合检验这些方面的一种恰当的方法,并可以探索更深层次理解。计算机系统必须理解文本的各个方面才可以正确回答问题,所以可能是评估语言理解的最合适的任务。

如何构建一个能够处理阅读理解任务的计算机系统?曾经,人们使用基于特征的模型,而如今,人们更关注神经阅读理解( neural reading comprehension ),使用深度神经网络建立阅读理解模型。它被证明更有效,而且推动了这个领域的发展。

最近阅读理解的成功被认为是两个原因推动的:

  1. 大规模有监督数据集
  2. 各种神经阅读理解模型

本文的上半篇将包括以下方面:

  • 问题的形成
  • 系统构建模块和关键成分
  • 理解当前的工作哪些可以做得更好,哪些依然落后

本文下半篇中,作者认为如果能构建高性能的阅读理解系统,那么它对问答和对话系统都可以起到关键的推动作用。为了证明这一点,本文探索了应用神经阅读理解技术在两个应用领域——开放领域问答和会话形式问答——的可行性。

阅读理解任务相比于那些子任务确实更具综合性。人类评价学生的语言能力,一是考作文,再就是考阅读理解了,所以使用阅读理解来对机器的语言能力进行评判是非常自然、容易接受的。作文这个领域目前研究的尝试应该是生成式模型,但现实情况是现在连一个公认的评判标准都很难找到。阅读理解问题中,也有生成式(自由)问答问题,这方面进展也还不是很行,一个原因也是没有评判标准。
目前来看,基于深度学习的神经阅读理解模型在各个领域都超过了传统的特征方法,它被证明是有效的,也是现在最好的方法。如论文作者所说的两个原因,大规模数据集就像是更好的教科书,而模型的发展又可以让人们了解数据集的不足,它们相辅相成。


2. 历史

2.1 传统方法

1977年,Lehnert提出了QUALM,一个基于脚本和计划(plans)的框架,专注于语用问题,以及故事的上下文在问题中的重要程度实现阅读理解建模。使用手工编码的脚本,规模很小,难以泛化。

在80年代和90年代,由于认为过于复杂,这方面研究被忽视。

1999年,一些小的数据集被建立,例如(Hirschman, 1999 ),和ANLP/NAACL 2000的研讨会上发布的数据集,包括小规模(60个开发,60个测试)的故事,包含一些简单的问题,并只需要返回包含正确答案的句子。这一阶段系统主要是基于规则的bag-of-word方法,例如(Hirschman, 1999 )的DEEP READ使用词干分析(stemming),语义类识别(semantic class identification),指代消解(pronoun resolution )等,最高准确度30-40。

传统的方法是基于语言学规则的,且建立在小规模数据集上,效果很一般。

2.2 机器学习方法

2013-2015年间,人们尝试将阅读理解定义为一类有监督问题,将**(文章、问题、答案)**三元组的形式建立标注数据集,希望可以训练模型
f(passage,question)answer f (passage, question) \rightarrow answer
在此期间,有两个值得关注的数据集被提出:

  • MCTEST ( Richardson et al., 2013 ) ,收集660个虚构的故事,每个故事有4个问题,每个问题4个备选答案,单选正确答案。
  • PROCESSBANK ( Berant et al., 2014 ),收集200余描述生物过程的段落,585个二选一问题,问题要求理解过程中的实体和事件中的关系。

MCTEST发布时提出了两种基线方法:

  1. 启发式滑动窗口方法,对每一个在文章上滑动的窗口,测量它与问题、答案之间的重叠/距离信息
  2. 将每个问答对转换为一个语句,运行现成的文本蕴涵(textual entailment)系统

这个数据集启发了一系列ML模型,大多建立在一个简单的max-margin学习框架上,应用一系列手工设计的特征句法依赖syntactic dependencies、语义框架semantic frames、指代消解 coreference resolution、篇章关系discourse relations和单词嵌入word embeddings)。在此期间该数据集的性能从63提升到了70左右。

相比于基于规则的方法,这些ML方法取得了一定进展,但仍相当有限,缺点有:

  • 严重依赖现有语言工具,现有语言工具通常由于泛化问题,会在实际中引入噪声(即语言工具本身带来的噪声)
  • 仍无法模拟人类水平的语言,因为特征需人工设计,但很难构建语言表征中构建有效的特征。
  • 数据集太小,无法支持表达性统计模型。例如MCTEST中训练示例只有1480个。

机器学习方法由于上述两个数据集启发,多数使用了语言工具构建的特征作为输入,这造成输入向量稀疏且难以判断是否有效,且因为语言工具本身自带误差(噪声)数据集又很小,这个工作很难进行。但是,这些手工特征在现在的深度学习时代仍然可以作为附加信息来提升效果。下文提到了以后的模型可能会分模块、子任务,如果这是发展趋势,也许以后的模型中,仍然非常依赖这些手工特征。具体的一个例子在3.1节有叙述。

2.3 深度学习方法

2015年出现转折,Hermann 等人 ( 2015 ) 提出了一种新颖而廉价的方案,用以生成大规模阅读理解监督数据集,并发布了CNN/DAILY MAIL数据集

该数据集创建逻辑是:CNN 和《每日邮报》附有一些要点总结了文章中所包含的信息。他们将新闻文章本身作为passage在要点中,使用placeholder标记替代一个实体,并给每一个实体四个候选答案,而正确答案就是被替代的实体。这样就将之转换为了一个完形填空的问题。这个过程可以自动化进行,所以该数据集创建成本极低,包含近一百万个数据示例

在数据集中,已经运行了实体识别和指代消解系统,会将所有的实体替代为一个抽象的标记(例如:@entity6, 见图1)。【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)

图1

提出这个数据集的同时,Hermann 等人 ( 2015 ) 也提出了一个神经网络模型——基于Attention机制的LSTM模型,称为THE ATTENTIVE READER——并证明它在很大程度上优于符号 NLP 方法,取得了63.8%的准确度。

更进一步,Chen (本论文作者)等人在2016年提出了一个模型将性能提高到了72.4%,证明了与传统的特征分类器相比,神经网络能够更好地识别词汇匹配和意义(将在下文中介绍)。但该数据集本身由于构建方法,存在很大噪声,对推动领域进展作用有限

为了解决CNN/DAILY MAIL数据集存在的问题,Rajpurkar 等人 ( 2016 ) 收集了一个名为 STANFORD QUESTION ANSWER DATASET ( SQUAD ) 的新数据集。数据集包括107,785个问答对,建立在536篇维基百科文章上,而问题是由众包工作者提出的,每个问题都对应文章中的一段话(a span of text)。这是第一个大规模的自然问题阅读理解数据集,成为了领域的中心基准,启发了一系列新的模型。截止18年10月,最好的单一系统实现了91.8%的F1得分,超过了91.2%的人类表现。而作者在最初基于特征的分类器只取得了51%。

目前在SQUAD上表现最好的模型都是基于端到端神经网络(或者说,深度学习模型)上的。它具有几个优点:

  • 不依赖语言学特征,所有特征都是在一个统一的端到端框架中学习来的,避免了语言工具带来的噪声,并在特征空间中提供了更好的灵活性。
  • 使用word embedding获取的稠密向量,可以解决符号系统中特征稀疏,且泛化性能差的问题。
  • 概念上更简单,研究重点可以转移到模型结构的设计。

虽然SQUAD数据集上的模型的表现已经超过人类,但是并不能表示阅读理解任务已经完成。SQUAD也是有限的,大多数例子非常简单,不需要复杂推理。而如今,阅读理解已经成为NLP中最活跃的领域之一,有许多待解决的问题也变得备受关注关注。目前随着领域逐渐火热,也涌现了更大的,更有挑战性的数据集。这些数据集将在下文第四节中详细介绍。它们的目的是应对之前很多没有被解决的挑战,例如:独立于段落的问题,需要多个句子甚至多个文档回答的问题,基于长文档(例如一本书)的问题,或者不能从段落中回答的问题。

深度学习方法在新的大数据集中已经被证明是优于传统的特征方法、符号规则方法。
作者从数据集的发展穿插模型方法的发展,证明了在introduction里描述的论点:本领域的发展是这两个方面推动的。如何构建数据集,如何构建模型是始终贯穿这条历史线路的问题。而现在,许多问题仍待解决,针对这些问题的数据集也等待着新的模型方法去挑战。


2.4 Task Definition

阅读理解任务可以被描述为一个 监督学习 问题。给定一组训练数据{(pi,qi,ai)(p_i,q_i,a_i)}i=1n^n_{i=1},目标是训练一个预测器f(大多数情况是分类器),使得
f(pi,qi)ai f (p_i, q_i) \rightarrow a_i
我们可以把现有的阅读理解任务分为四类:

  1. 完形填空(Cloze style),在这些任务中,问题包含一个占位符,系统必须根据文章,选择一个答案匹配该占位符。例如CNN/DAILY MAIL (Hermann et al., 2015)。评估非常简单,按传统分类即可。
  2. 多项选择(Multiple choice),(实际上单选题),从k个假设答案中选择正确答案。例如MCTEST (Richardson et al.,2013)。评估方式如完形填空。
  3. 范围预测(Span prediction),也被称为抽取式问答(extractive question answering),答案是文本中一个范围,可以表示为(a^start,a^end)(\hat{a}_{start}, \hat{a}_{end})。例如SQ U AD (Rajpurkar et al., 2016)。评估需要将预测的答案与正确答案进行比较,通常使用 Rajpurkar 等人 ( 2016 ) 提出的两种评估指标,精确匹配(EM)和F1得分。收集每个问题的多个正确答案也很常见。
  4. 自由形式问答( Free-form answer ),允许答案是任意形式、任意长度的文本。例如NARRA-TIVE QA (Kocisky et al., 2018) 。目前还没有最理想的评价标准。常见的方法是使用在自然语言生成 ( NLG ) 任务中使用的标准评估指标,如机器翻译或摘要,包括 BLEU ( Papineni et al., 2002 )、Meteor ( Banerjee 和 Lavie, 2005 ) 和 ROUGE ( Lin, 2004 )。

精确匹配方法是,如果预测的答案等于正确答案,则精确匹配 ( EM ) 将分配满分1.0分,否则将分配满分0.0分。

F1得分计算答案和正确答案之间的平均单词重叠,计算方式不在此列出,百度。

2.5 阅读理解与QA问题

尽管可以把阅读理解看作是问答的一个实例,因为它本质上是基于一篇短文的问答问题。但是,他们最终强调了不同的目标。

  • 问答的最终目标是建立一个能够自动回答人类提出的问题计算机系统,系统可以依赖任何资源。
  • 阅读理解强调的是文本理解 ( text understanding ) 和一些被认为是衡量语言理解程度的尖锐问题。

3. 阅读理解的模型介绍

3.1 先前的方法:基于特征的模型

论文作者在2016年时,在CNN/DAILY MAIL 数据集上提出了两个模型,一个基于深度学习,一个基于特征。在基于特征的模型中,任务描述为:

εε 是候选的答案集合,对每个候选实体 eεe\in ε,根据文章 pp 和问题 qq 构造一个特征向量 fp,q(e)Rdf_{p,q}(e)\in \mathbb{R}^d,并学习一个权重wRd\bf{w}\in \mathbb{R}^d ,使得正确答案 aa 满足:
wTfp,q(a)>wTfp,q(e),eε\bf{w}^T f_{p,q}(a)>\bf{w}^Tf_{p,q}(e), ∀e\in ε
建模fp,q(e)Rdf_{p,q}(e)\in \mathbb{R}^d实际上是找到一种方法构建特征向量。这些特征应该很好地描述实体的信息( 频率、位置以及它是否是一个问题/短文中的词 ),以及它们的文本特征 ( 共现、距离、线性和句法匹配 ),以及一些语言特性(例如依赖关系解析和词性标记)。有用的特征必须是有意义的,并且能够很好地适应特定的任务,同时又不能过于稀疏而不能很好地从训练集中概括出来。由于使用语言工具会引入噪声,特征向量的性能也取决于这些语言工具的准确性。作者建模特征的方式如图2所示。
【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)

图2

另一个问题在于如何学习权重,在确定f之后,这个问题可以应用任何流行的机器学习算法解决,作者使用 LAMBDAMART ( Wu 等人,2010 )来解决。

在SQUAD和TRIVIAQA上,Rajpurkar 等人 ( 2016 ) 和 Joshi 等人 ( 2017 ) 也分别进行了构建基于特征的模型的尝试,本质上与上述模型相似,使用了各种不同的特征

模型的结果将在下文中与神经网络模型进行比较。

基于特征的模型本质上效果取决于如何去构建有效的特征向量。对答案进行特征向量的构建过程中,使用了文章、问题、答案三者的信息,由于文章问题不变,所以本质上是建模答案的函数。之后,不同答案的特征通过一些方法建模判别函数进行比较(这里使用点乘模型,意图在于建模对每一类特征的权重大小,本质上是一个线性模型),训练使得正确答案对应的判别函数最大。如上面2.2所述,仍然具有很大局限性

3.2 深度学习方法

3.2.1 前提方法介绍

在这里作者对Word embeddings ,Recurrent neural networks,Attention mechanism进行了介绍。前两者有很充分的资料进行学习,在此不赘述。只对具体到阅读理解的Attention mechanism进行总结。

Attention mechanism

它首先在神经机器翻译中提出。通常,我们在RNN对输入序列进行编码后,只会取最后一个时间步的hnh_n,其他的舍弃不用。但是这样就要求模型要把所有信息压缩到hnh_n中,这会导致信息瓶颈

这本质上是一个硬对齐的过程,即只取一个。考虑使用软对齐h\bf{h}序列中,对每一个hth_t进行加权求和获取一个向量,就可以获取到更多信息。而获取这个权重的一个方法就是注意力机制,它可以让模型自适应地选择这些向量的权重

在Parikn 等人 ( 2016 ) 和 Vaswani 等人 ( 2017 )的研究中,注意力机制并不一定非要和 RNN 一起使用,并且可以单纯得基于 word embeddings 和前向神经网络建立。与RNN相比,这种方法需要更少的参数,更容易并行化

3.2.2 模型介绍

在本节,论文作者介绍自己提出的模型STANFORD ATTENTIVE READER,用于解决SQUAD上的问题。SQUAD描述的是范围预测问题,具体定义参考2.2所述。

整个模型的思路为:

  1. 构建问题q的向量表示
  2. 构建文章p每个词构建一个向量表示
  3. 计算上下文问题与短文词之间的相似度
  4. 根据相似度评分来预测是否是起始位置或结束位置。

问题编码

首先将问题看做一个单词的序列q\bf{q^*},对q\bf{q^*}的每个单词qiq^*_i,将其进行word embedding。
之后,使用Bi-LSTM模型进行编码
q1,q2,...,qlq=BiLSTM[E(q1i),E(q2),...,E(qlq)]q_1,q_2,...,q_{l_q}=BiLSTM[E(q^*_1i),E(q^*_2),...,E(q^*_{l_q})]
之后通过attention机制居合道一个向量中
bj=exp(wqTqj)k=1lqexp(wqTqk)b_j = \frac{exp(w^T_qq_j)}{\sum^{l_q}_{k=1}exp(w^T_qq_k)}
q=j=1lqbjqjq = \sum^{l_q}_{j=1}b_jq_j

当然,也可以只取BiLSTM的输出qlqq_{l_q},但添加attention是有帮助的,它针对问题中的单词,为更相关(更重要)的单词添加了更大的权重。

文章编码

与问题编码类似,将文章中的每个单词pip^*_i先编码为p^i\hat{p}_i

但是,这里的p^i\hat{p}_i不只是原文单词的词向量表示,它其中将编码入更多的信息。p^i\hat{p}_i中包含两个类别的信息:

一是单词本身的属性,这一类包括word embedding,即E(pi)E(p^*_i),另外还包含该单词在上下文中的属性构建成的特征,特征包括位置,命名实体识别(NER)的标签,和normalized 之后的 TF(单词在文章中出现的次数除以总单词数量),这些特征组成了一个向量ftoken(pi)f_{token}(p^*_i)

第二类信息是与问题q之间的相关属性,包含两种表示,一是与问题的精确匹配(Exact Match),当该单词出现在q中,该项为1.
另一种与问题q之间的相关的表示是使用注意力机制将文章与问题进行软对齐

这是因为EM是对问题进行了精确匹配,但要处理近义词等问题,EM就力有未逮了。也就是说,这里使用注意力机制进行软对齐的目的在于与EM相同,都是为了捕捉问题与文章相似性,这是基于一个假设:在阅读理解的文章中,与问题大致相同的句子附近包含答案。

具体地,我们用
falign(pi)=j=1lqaijE(pi)f_{align(p^*_i)=\sum^{l_q}_{j=1}a_{ij}E(p^*_i)}
aija_{ij}是注意力权重,是pip^*_i与整个答案序列q\bf{q}的点积注意力模型得到的:
aij=exp(MLP(E(pi))TMLP(E(qj)))k=1lqexp(MLP(E(pi))TMLP(E(qk)))a_{ij}=\frac{exp(MLP(E(p^*_i))^TMLP(E(q^*_j)))}{\sum^{l_q}_{k=1}exp(MLP(E(p^*_i))^TMLP(E(q^*_k)))}
其中MLP是一个单层的全连接网络,后接一个ReLU的非线性变化。

最后,将四个组件拼接,获得
p^i=CONCAT(E(pi),ftoken(pi),fEM(pi),falign(pi))\hat{p}_i=CONCAT(E(p^*_i), f_{token}(p^*_i), f_{EM}(p^*_i), f_{align}(p^*_i))

之后通过BiLSTM得到编码
p1,p2,...,plp=BiLSTM[p^1,p^2,...,p^lp]p_1,p_2,...,p_{l_p}=BiLSTM[\hat{p}_1,\hat{p}_2,...,\hat{p}_{l_p}]

文章预测和训练

问题预测两个位置,表现为预测每个位置成为start的概率pstart(i)p^{start}(i)或成为end的概率pend(i)p^{end}(i)
最终进行分类的表示是使用 piWstartqp_iW^{start}qpiWendqp_iW^{end}q 的形式,分别使用softmax进行分类。
【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)

实际上这一步可以解释为lpl_p分类问题,或者是注意力机制。

训练目标采用交叉熵损失。

综合上文,在我的理解中这里的深度学习方法的基本框架与2.2的启发式滑动窗口方法实际上没有本质性区别,这两者都是基于对(文章的一个窗口,问题,答案)进行相似匹配而得到答案的。只不过深度学习方法使用了word embedding,LSTM对输入进行表示,这种学习得到的低维稠密特征比手工稀疏特征相比,借用论文作者的话,更加“灵活”;深度学习方法运用Attention机制进行的匹配,虽然在机制上不同,但本质的思路还很接近。

扩展

该模型可以扩展到其他问题上。

针对完形填空和多项选择问题,实际上是在范围预测问题的基础上为输入添加了一个候选答案集合,最终的分类问题变为了分类问题
P(Y=ep,q),eεP(Y=e | p,q), e\in ε
对p和q的编码和上面的获取方法一样。
之后我们是用注意力机制对p和q的信息进行压缩
【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)
之后和预测位置类似,
【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)
训练时同样适用交叉熵作为损失。

对于Free-form answer问题,常见的解决方案是将一个解码器合并到当前框架中,通过解码输出向量来获得结果。这类问题过于复杂,难以评估。本文作者认为( Gu et al.,2016;See et al. 2017 )提出的copy mechanism对于这类问题可能会有用处,因为答案单词仍可能出现在段落或者问题中。

这些改动同样适用于其他的模型。
对于完形填空问题,有时并不是给了k个选择,而是所有的预测位置共享候选实体集ε,这是因为所有的实体都已经被替代为形如@entity n的形式。在这种情况下,预测函数中aiW(a)a_iW^{(a)} 可以被替换为W(ai)W^{(a_i)},即每一个候选实体对应一个矩阵。实际上,这两种表示等价。

3.3 实验

3.3.1 数据集

不再赘述

3.3.2 实现细节

  • Stacked BiLSTMs: 相比于一层LSTM,多层堆叠效果更好。实验中堆叠了3层。
  • Dropout:对每个LSTM层的嵌入、输入、隐藏变量中。( Gal 和 Ghahramani, 2016 ) 提出了一种在 RNNs 上的Dropout变种方法,证明比标准的更好。
  • Handling word embedding:保持最常见的 K ( 如 K = 500,000 ) 种 word 并将所有其他 word 映射到一个 ⟨unk⟩ 令牌。当训练集足够大时对所有embeddings进行微调,较小时保持不变。对预训练的词嵌入和对集合外单词的应对方式会对阅读理解任务的性能有很大的影响。
  • Model specifications:使用 Stanford CoreNLP toolkit ( Manning et al., 2014 ) 进行语言学标注。

3.3.3 结果

基于特征的分类器在 CNN 测试集上的准确率为67.9%,在 DAILY MAIL 测试集上的准确率为68.3%
神经网络模型则分别是72.7%和76.0%。
而在SQUAD上,则取得了70%的EM和79%的F1。
【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)
图3
对文章的表征进行了消融分析,得到的结果如上图所示。这表明所有组件都对最终系统的性能有贡献。若同时去掉软对齐和EM,性能会显著下降,这一方面意味着文章和问题之间存在大量的单词重叠,另一方面这两个特征起到了相似又互补的作用。

这实际上印证了实际上这个模型做的工作就是一个问题与文章相似度的比较。它就是从文章中搜索最相似的作为答案,这也是由于SQUAD本身的局限性造成的。

3.3.4 分析:模型学到了什么?

对 CNN 数据集开发集中的100个随机抽样示例进行仔细的手工分析,将问题分为了四类:

  • Exact match(13%):占位符周围最近的单词也可以在围绕实体标记的段落中找到。
  • Sentence-level paraphrasing(41%):问题在篇章中作为一句话的结尾或者是一句话的转述,所以答案一定可以从那句话中找出来
  • Partial clue(19%):不能在问题文本之间找到一个完全的语义匹配,能够通过部分线索来推断答案,比如一些单词/概念重叠
  • Multiple sentences(2%):处理多句才能推测正确答案
  • Coreference errors(8%):数据集中不可避免地存在许多指代错误。这个类别视为“不可回答的”。
  • Ambiguous or hard(17%):这个类别包括那些我们认为人类肯定不能获取正确答案的例子。

根据抽样,可以假设大部分示例 ( 这个子集中73% ) 能够通过识别最相关的单个句子并根据它推断出答案。

进一步研究神经网络和基于特征的分类器的分类性能,得到以下结果:

  • 精确匹配的情况非常简单,两个系统的tems都得到100%的正确
  • 实体连接错误的情况,两个系统都很差。
  • 两种系统主要不同之处在于“Sentence-level paraphrasing”的情况,以及部分“Partial clue”的情况。这清楚地显示了神经网络能够更好地学习语义匹配包括释义或两个句子之间的词汇变化

综上,认为神经网络模型在所有的单句和明确的情况下都已经达到了近乎最优的性能,在识别词汇匹配和释义方面无疑更强大。

我推测这里比机器学习特征方法更好的效果,得益于词嵌入中近似语义的词拥有近似的向量,也得益于注意力机制的软对齐性能。

3.4 改进的可能

根据该领域最新进展,将可能的改进分为四类:单词表示、注意机制、LSTMs 的变体以及其他(如训练目标、数据扩充)。

基本上,本节主要讲述了一些16年之后的新技术在阅读理解问题上的可能的应用。

3.4.1 Word Representations

具体地,在单词表示方面的可做的改进有三种:

  1. 使用更好的词嵌入模型,使用FASTTEXT证明可以提升一个百分点。
  2. 加入Char级别的嵌入
  3. 使用上下文嵌入模型

Character embeddings

字符级嵌入来表示单词对于罕见词汇和OOV问题尤其有用。设 C 为字符的词汇表,每个单词类型 x 都可以表示为字符序列(c1,...,cn),ciC(c1,...,c_n),c_i \in C。每个cic_i都是一个dcd_c维向量(通常取20)。
ci:i+jc_{i:i+j} 表示cic_ici+jc_{i+j}的拼接矩阵,接下来,对单词的字符序列应用宽度为wRdcn\bf{w}\in R^{d_c*n}的卷积核,并添加偏置和非线性:
fi=tanh(wTci:i+n1+b)f_i=tanh(w^Tc_{i:i+n-1}+b)
然后取f=maxfif=max{f_i},得到一个标量表示特征。本质上是选择一个字符级的n-gram,其中n对应卷积核的宽度,通常取3-5。可以使用α\alpha个卷积核重复以上操作,通常取100,并对结果进行拼接,就得到了基于字符的单词表示。

Contextualized word embeddings

不同于词嵌入,将每个单词对应到一个向量,上下文词嵌入将整个句子作为函数的输入,将输出的序列分配给每个词,作为每个词的嵌入向量。这样可以更好模拟单词在使用时的复杂特性(例如语法和上下文语义)。
上下文的词嵌入通常与传统的单词类型嵌入和字符嵌入一起使用,被证明不仅可以用在一个特定任务的神经结构中作为一个词表示的特征,而且进行很小的修改就可以用来执行下游任务。

3.4.2 Attention Mechanisms

现阶段有许多注意力机制的变种,目的是在不同层次或不同粒度上捕捉问题和文章之间的语义相似性。但是,目前还没有一个变种能够突出到取代其他的。

双向注意力

Seo 等 ( 2017 ) 首次提出了双向注意力机制的概念。实际上,这里的双向是指,不仅做上述模型中文章与问题的软对齐,还要做问题与文章的软对齐。但是论文作者认为这个方向的注意力没那么有用,这是因为问题通常很短,所以LSTM就够了。

文章上的Self-attention

对文章进行自注意力可以使得文章之间的单词相互对其,以希望它能够从多个地方收集信息,解决互相参照的问题。

3.4.3 Alternative to LSTMs

在训练多层LSTM时,可以添加高速连接(Highway)或残差连接

Transformer模型是LSTM的可选替代,并能够通过并行实现更快的训练速度。QANET是Yu 等人 ( 2018 ) 提出的改编Transformer的阅读理解模型。

另外,Lei 等人 ( 2018 ) 提出了一种新的轻量级递归单元,被称为SRU(SIMPLE unit),简化了LSTM并支持高并行

3.4.4 其他

通过改进训练目标也可能会取得进展。对于跨度预测问题,预测交叉熵与实际的评价需求存在差异,对于这个问题有可以改进的空间。
对于自由形式问答问题,近年来在SEQ2SEQ模型方面取得了很多进展,但在阅读理解问题上还没有看到很多应用。

数据增强技术,令可供训练的数据集扩大,也可以取得很好的效果。

4. 阅读理解的未来

尽管在SQUAD数据集上模型的准确度已经超过了人类,但并不意味阅读理解模型已经足够强大到解决SQUAD所有例子,或其他同等难度的问题。作者实验发现,模型能够预测问题对应的答案类型,却还是无法真正理解表达,也无法区分候选答案。截止18年末,最强大的模型也难以理解实体和事件的内部结构
【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)

Jia 和 Liang ( 2017 ) 发现,如果我们在文章末尾添加一个对抗性的句子 ,目前阅读理解系统的平均性能将会从75.4%大幅下降到36.4%。
这些句子与问题有词汇重叠,但实际上并不与正确答案相矛盾,也不会误导人类的理解

这表明:

  • 模型很大程度上依赖文章和问题之间的词汇线索。推测模型一直在进行复杂的文本匹配。
  • 对于对抗性例子,鲁棒性不够强
  • 模型只关注表层信息,稍微深层次的理解上依然存在简单错误。

4.1 Future work:数据集

针对上面提到的问题,作者认为一个很重要的原因是因为主要关注的是 CNN/DAILY MAIL 和 SQUAD数据集本身例子简单但不需要过多推理。举例说,SQUAD存在以下局限性:

  • 问题都是根据文章提出,这意味着可能会模仿句子结构,使用相同单词,这减轻了难度。
  • 只允许问题可以用文章中的一段来回答,这意味着所有的问题都可回答,并排除了所有推理计算问题,也很少有why(因果)和how(过程)问题。
  • 大多数问题只需要一个句子来回答

为了解决这些局限,出现了一些新的数据集:

  • TriviaQA:( Joshi 等,2017 ),数据集关键思想是在构建相应的文章之前收集问案对,具体说是从其他网站上搜集问答对,再通过问答对的虚拟证据(包括网络搜索结果和对应的维基百科页面)来构建文章。总共收集了650k个(p,q,a)三元组数据,解决了第一个局限,并且成本很小。值得注意的是大多使用了长文档,且不保证文章真正提供了答案。
  • RACE:( Lai 等,2017 ),收集了12-18岁中国学生的英语考试数据,问题和答案都由专家创建,所以更加困难,26%问题需要多句推理,18年末最佳性能是59%。
  • NarrativeQA:( Kocisky et al., 2018 ),根据维基百科上一本书或一部电影情节摘要提问题,答案是自由形式的文本。但由于人类一致性很低,很难评估。
  • SQUAD2.0:( Rajpurkar 等,2018 ),增加了五万多个反例,这些问题不能从文章中找到答案,但是看起来和正例很像。这就要求了模型的鲁棒性。
  • HotpotQA:( Yang et al., 2018 ),旨在构造需要多个文档才能回答的问题,工作者通过维基百科的两个相关段落(一篇文章的一段中到另一篇文章有一个超链接)提问,每个问题再添加8个干扰段落,总共为每个问题提供10个段落用于回答问题。

神经网络模型也总是采取最小的努力去适应数据集,能使用匹配来获取答案时,也很难训练出一个具有推理能力的网络。以上数据集都是面对现有模型中存在的各种局限性来针对性地构建的,这大概也是深度学习发展的一个趋势。

4.2 Future work:模型

大部分模型只注重准确性,但作者认为速度、可扩展性、鲁棒性和可解释性被忽略了。

速度和可扩展性(Speed and Scalability)

如何构建更快的模型 ( 用于训练和推理 ),以及如何扩展到更长的文档是研究的重要方向。速度不用说,用RNN编码很长的文档甚至一本书在现在都是不现实的,仍是严峻的挑战。

针对这两点,现有的解决方法包括:

  1. 用 transformer或更轻的 non-recurrent 模型取代 LSTMs
  2. 训练学习跳过部分文档的模型,不仅可以加速,还可以保持类似的性能。该领域的代表作品有 Yu 等 ( 2017 ) 和 Seo 等 ( 2018 )。
  3. 优化算法的选择也会影响收敛。Coleman 等人 ( 2017 ) 提供了一个基准用于测量端到端训练和推理时间,以实现对现有的广泛任务的最先进水平的参考。

鲁棒性(Robustness)

现有模型不仅对于对抗性例子十分脆弱,在其他数据集的泛化性能也很差。

需要考虑:

  1. 如何创建更好的对抗示例并加入训练
  2. 深入研究迁移学习和多任务学习,建立跨数据集跨任务的模型
  3. 打破监督学习范式,创建更好的方法来评估模型

可解释性(Interpretability)

我们希望未来的系统不仅能够提供答案,还能提供背后的理由。

作者在当前背景下认为有几种方法有希望解决:

  1. 最简单的方法:要求模型学会从文档中提取输入片段作为支持证据。( Lei et al., 2016 ) ) 对于句子分类问题已有研究,在阅读理解中还没有。
  2. 模型能够生成理论依据,解释各部分如何连接得到最终答案,但远超当前模型的能力。
  3. 考虑收集人类的解释来生成监督数据。

4.3 结构和模块

当前模型要么建立在序列模型基础上(RNN一系),要么对所有单词对都对称处理(如Transformer),这就忽略了语言的固有结构

一方面,这迫使模型从头学习相应语言知识

另一方面有许多现有的语言资源和工具,可以将单词序列中的层次结构和嵌套结构进行编码,但还不知道这种编码是否还有作用。

作者举例说明了,他们认为合格的结构信息是有意义的。现有的语言工具提供的知识结构信息,仍然有利于提高现有模型的性能,并提出问题:

  1. 如何将它们合并到现有模型
  2. 将结构建模为潜在的变量(大概指类似词嵌入一样的编码)还是依赖现有工具生成
  3. 如果依赖现有工具,怎么处理噪声,怎么进一步提高性能。

另一个考虑是,阅读理解任务本质非常复杂,不同例子往往需要不同类型推理能力。端到端学习仍然是一个巨大挑战。作者相信模型结构化、模块化,将综合任务分解为几个子问题会有很大进展。

也就是说,只输入word embedding信息时,模型需要从头学习语言信息,而在进行推理时,语言信息是显然有作用的。问题在于如何去加入语言信息到现有模型。

4.4 如何评估进展?

  • 如何判断我们取得了真正的进步?
  • 如果判断一个基准上的一些进展可以推广到其他基准上?
  • 如何判断这些系统和人类的差异?

一方面,用人参加的标准考试来评价机器系统的能力是个好策略。

另一方面,认为将许多数据集集成为一个测试套件进行评估会增强模型的泛化性能。

更重要的是,理解现有数据集,描述他们质量和回答问题所需技能。了解数据集需要什么,系统能做什么和不能做什么。可以分别基于这些属性构建数据集和开发模型。

4.5 架构和表示

最近出现了增加结构复杂性来提高性能的趋势,用越来越复杂的注意力机制来捕捉相似性。

这是研究结构的重要性

但最近的研究提出,使用上下文嵌入的预训练模型,只需要拼接一个简单模型就可以在阅读理解上取得非常好的效果。

这是改进表示带来的强大效果

一方面,强大的预训练模型已经编码了大量语言属性,所以简单的模型就足以学习的很好;
另一方面,只给出词嵌入时,对文章和问题的交互建模(或为模型提供更多先验知识)会有帮助。

作者怀疑将来要将两者结合起来,并认为BERT这样的模型太糙(……)

在这一节实际上也在一定程度上回答了4.3中如何利用现有语言知识的问题,现在的一个很好的解决方案是,将语言知识扔给大规模训练的预训练模型,上下文嵌入确实可以捕捉很好的语言知识。这样既容易结合现有模型又避免了现有工具的噪声(虽然预训练模型也是有噪声的)。

4.6 数据

实际需要多少训练数据?当前被积极研究的数据集都至少包括五万个示例。那么就有两个问题:

  1. 数据更丰富是否能够提高系统性能?
  2. 是否能只靠少量数据就训练模型?

目前没有明确答案,一方面有明确证据证明更多数据会有帮助,另一个方面预训练模型也可以帮我们解决大规模数据集的依赖。

当然,我觉得数据越多越好,就算使用预训练模型也是更多数据更有利。

相关文章:

  • 2021-12-05
  • 2021-04-20
  • 2021-12-02
  • 2021-09-07
  • 2022-03-07
  • 2021-11-20
  • 2022-12-23
猜你喜欢
  • 2021-07-27
  • 2022-12-23
  • 2021-08-10
  • 2021-11-28
  • 2021-08-25
  • 2021-06-25
  • 2021-05-14
相关资源
相似解决方案