NLP-阅读理解:“阅读理解”综述(Machine Reading Comprehension, MRC)【完形填空、多项选择、抽取式(答案片段抽取)、生成式(自由作答)】《机器阅读理解数据集》

NLP/阅读理解 专栏收录该内容
7 篇文章 0 订阅

《原始论文:Neural Machine Reading Comprehension: Methods and Trends》

一、阅读理解概述

所谓的机器阅读理解(Machine Reading Comprehension, MRC)就是给定一篇文章,以及基于文章的一个问题,让机器在阅读文章后对问题进行作答。

机器阅读理解(MRC)是一项任务,用于测试机器通过要求机器根据给定的上下文回答问题来理解自然语言的程度。早期的MRC系统是基于规则的,性能非常差。随着深度学习和大规模数据集的兴起,基于深度学习的MRC显著优于基于规则的MRC。

1、机器阅读理解的发展历程

2016年以前主要是统计学习的方法,2016年在 SQuAD 数据集发布之后,出现了一些基于注意力机制的匹配模型,如 match-LSTMBiDAF 等。2018年之后浮现了各种预训练语言模型,如 BERT 和 ALBERT 等。

机器阅读理解数据集的发展极大的促进了机器阅读理解能力的发展,其中 SQuAD 是斯坦福大学推出的一个关于机器阅读理解的数据集,在2018年,斯坦福大学 NLP 团队又更新了该数据集的 2.0 版本,在新版本的数据集中加入了部分没有答案的问题。

下图中蓝色的是比较重要的几个模型,当然这只是一部分,不全。
在这里插入图片描述
机器阅读理解方法发展阶段:

  • 特征+传统机器学习
  • BERT以前:各种神奇的QA架构
  • BERT以后:预训练+微调+trick

2、常见任务定义

MRC 的常见任务主要有六个:完形填空、多项选择、片段抽取(答案抽取)、生成式(自由作答)、会话、多跳推理:

  • 完形填空(Cloze Tests):将文章中的某些单词隐去,让模型根据上下文判断被隐去的单词最可能是哪个。
  • 多项选择(Multiple Choice):给定一篇文章和一个问题,让模型从多个备选答案中选择一个最有可能是正确答案的选项。
  • 片段抽取式(Span Extraction):给定一篇文章和一个问题,让模型从文章中抽取连续的单词序列,并使得该序列尽可能的作为该问题的答案。
  • 生成式(Free Answering):给定一篇文章和一个问题,让模型生成一个单词序列,并使得该序列尽可能的作为该问题的答案。与片段抽取任务不同的是,该序列不再限制于是文章中的句子。
  • 会话:目标与机器进行交互式问答,因此,答案可以是文本自由形式(free-text form),即可以是跨距形式,可以是“不可回答”形式,也可以是“是/否”形式等等。
  • 多跳推理:问题的答案无法从单一段落或文档中直接获取,而是需要结合多个段落进行链式推理才能得到答案。因此,机器的目标是在充分理解问题的基础上从若干文档或段落中进行多步推理,最终返回正确答案。

在这里插入图片描述
这四个任务构建的难易程度越来越难,对自然语言理解的要求越来越高,答案的灵活程度越来越高,实际的应用场景也越来越广泛。

  • Construction: This dimension measures whether it is easy to construct datasets for the task or not. The easier it is, the higher the score.
  • Understanding: This dimension evaluates how well the task can test the machine’s ability to understand. If a task needs more understanding and reasoning, the score is higher. - Flexibility: The flexibility of the answer form can measure the quality of the tasks. When answers are more flexible, the flexibility score is higher.
  • Evaluation: Evaluation is a necessary part of MRC tasks. Whether a task can be easily evalu- ated also determines its quality. Tasks that are easy to evaluate get high scores in this dimension.
  • Application: A good task is supposed to be close to real-world application. Therefore, scores in this dimension are high, if a task can easily be applied to the real world.

2.1 完形填空(Cloze Test)

给定上下文 C C C ,一个词或实体 a ( a ∈ C ) a(a\in C) a(aC) 被移除,完形填空任务要求模型使用正确的词或实体进行填空,最大化条件概率 P ( a ∣ C − { a } ) P(a|C − \{a\}) P(aC{a})

数据集:CNN & Daily Mail 、CBT、LAMBADA、Who-did-What、CLOTH、CliCR

在这里插入图片描述
在这里插入图片描述

2.2 多项选择(Multiple Choice)

给定上下文 C C C ,问题 Q Q Q,候选答案列表 A = { a 1 , a 2 , . . . , a n } A=\{a_1,a_2,...,a_n\} A={a1,a2,...,an} ,多项选择任务要求模型从A中选择正确的答案 a i a_i ai ,最大化条件概率 P ( a i ∣ C , Q , A ) P(a_i|C,Q,A) P(aiC,Q,A) 。与完形填空任务的区别就是答案不再局限于单词或实体,并且候选答案列表是必须要提供的

数据集:MCTest、RACE

在这里插入图片描述

2.3 片段抽取(Span Extraction)

尽管完形填空和多项选择一定程度上可以机器阅读理解的能力,但是这两个任务有一定的局限性。首先,单词或实体可能不足以回答问题,需要完整的句子进行回答;其次,在很多情形是没有提供候选答案的。所以片段抽取任务应运而生。

给定上下文 C C C ,问题 Q Q Q,其中 C = { t 1 , t 2 , . . . , t n } C=\{t_1,t_2,...,t_n\} C={t1,t2,...,tn},片段抽取任务要求模型从 C C C 中抽取连续的子序列 a = { t i , t i + 1 , . . . , t i + k } ( 1 ≤ i ≤ i + k ≤ n ) a=\{t_i,t_{i+1},...,t_{i+k}\}(1\leq i\leq i+k\leq n) a={ti,ti+1,...,ti+k}(1ii+kn) 作为正确答案,最大化条件概率 P ( a ∣ C , Q ) P(a|C,Q) P(aC,Q)

数据集:SQuAD、NewsQA、TriviaQA、DuoRC

在这里插入图片描述

2.4 自由作答(Free Answering)

对于答案局限于一段上下文是不现实的,为了回答问题,机器需要在多个上下文中进行推理并总结答案。自由回答任务是四个任务中最复杂的,也更适合现实的应用场景。

给定上下文 C C C 和问题 Q Q Q,在自由回答任务中正确答案可能不是 C C C 中的一个子序列, a ⊆ C a\subseteq C aC a ⊈ C a\nsubseteq C aC ,自由回答任务需要预测正确答案 a a a,并且最大化条件概率 P ( a ∣ C , Q ) P(a|C,Q) P(aC,Q)

数据集:bAbI、MS MARCO 、SearchQA、NarrativeQA、DuReader

在这里插入图片描述

3、评价指标(Evaluation Metrics)

对于不同的MRC任务,有不同的评估指标。一般有Accuracy,F1 Score,ROUGE-L,BLEU。

  • 对于完形填空和多项选择类型的任务,由于答案都是来源于已经给定的选项集合,因此使用 Accuracy 这一指标最能直接反映模型的性能。
  • 对于抽取式和多跳推理类型的任务,使用 Exact Match(EM) 和 F1 值。EM 是指数据集中模型预测的答案与标准答案相同的百分比,F1 值是指数据集中模型预测的答案和标准答案之间的平均单词的覆盖率。多跳推理数据集,还提出了针对支持证据(supporting fact)的 EM 和 F1 值。
  • 对于会话类型的任务,由于其答案是文本自由形式,因此并没有一种通用的评价指标,该类任务的评价指标主要由数据集本身决定。
  • 对于生成式类型的任务,由于答案是人工编辑生成的,而机器的目标是使生成的答案最大限度地拟合人工生成的答案,因此该类任务一般使用机器翻译任务中常用的 BLEU-4 和 Rouge-L 两种指标。Rouge(recall-oriented understudy for gisting evaluation)同时也是自动文本摘要任务的重要评测指标。

3.1 Accuracy(准确率)

当给定一个问题集 Q = { Q 1 , Q 2 , ⋯   , Q m } Q=\{Q_1,Q_2,\cdots,Q_m\} Q={Q1,Q2,,Qm} m m m 个问题时,如果模型正确地预测了 n ( n < m ) n(n<m) n(n<m) 个问题的答案,那么Accuracy计算如下:

A c c u r a c y = n m . (1) Accuracy=\frac{n}{m}.\tag{1} Accuracy=mn.(1)

Accuracy指标一般用于Cloze Test和Multiple Choice任务。

3.2 F1 Score

F1 Score是分类任务中常用的度量标准。

在MRC方面,候选答案和参考答案都被视为标记袋,真阳性(TP)、假阳性(FP)、真阴性(TN)和假阴性(FN)如Table1所示。

Table 1: The definition of true positive (TP), true negative (TN), false positive (FP), false negative(FN).
在这里插入图片描述
精确率(precision)和召回率(recall) 计算如下:

p r e c i s i o n = T P T P + F P . (2) precision=\frac{TP}{TP+FP}.\tag{2} precision=TP+FPTP.(2)

r e c a l l = T P T P + F N . (3) recall=\frac{TP}{TP+FN}.\tag{3} recall=TP+FNTP.(3)

F1 Score,是精确率和召回率的调和平均值:

F 1 = 2 × P × R P + R . (4) F1=\frac{2\times P\times R}{P+R}.\tag{4} F1=P+R2×P×R.(4)

其中P是precision,R是recall,分别表示召回率和准确率。

3.3 ROUGE-L

ROUGE (Recall-Oriented Understudy for Gisting Evaluation)是一种用于评估自动摘要好坏的指标,它有多种变体,其中ROUGE-L广泛用于MRC任务,用于衡量候选答案和参考答案的相似性,“L”表示最长公共子序列(LCS),其计算如下:

R l c s = L C S ( X , Y ) m . (5) R_{lcs}=\frac{LCS(X,Y)}{m}.\tag{5} Rlcs=mLCS(X,Y).(5)

P l c s = L C S ( X , Y ) n . (6) P_{lcs}=\frac{LCS(X,Y)}{n}.\tag{6} Plcs=nLCS(X,Y).(6)

F l c s = ( 1 + β ) 2 R l c s P l c s P l c s + β 2 P l c s . (7) F_{lcs}=\cfrac{(1+\beta)^{2}R_{lcs} P_{lcs}}{P_{lcs}+\beta ^{2}P_{lcs}}.\tag{7} Flcs=Plcs+β2Plcs(1+β)2RlcsPlcs.(7)

其中, X X X 是长度为 m m m 个词的真实答案, Y Y Y 是长度为 n n n 个词的预测答案, L C S ( X , Y ) LCS(X,Y) LCS(X,Y) 表示 X X X Y Y Y 的最长公共子序列的长度,所以 R l c s R_{lcs} Rlcs 和​ P l c s P_{lcs} Plcs分别表示召回率和准确率, β \beta β 用于控制指标的准确率和召回率的重要程度。

3.4 BLEU

BLEU(Bilingual Evaluation Understudy),被广泛用于评价翻译的表现(可以通俗的理解为两个句子的相似度)。当适应MRC任务时,BLEU评分衡量预测答案和真实答案之间的相似性。其计算方法如下:

P n ( C , R ) = ∑ i ∑ k m i n ( h k ( c i ) , m a x ( h k ( r i ) ) ) ∑ i ∑ k h k ( c i ) . (8) P_n(C,R)=\cfrac{\sum_i \sum_k min(h_k(c_i),max(h_k(r_i)))}{\sum_i \sum_k h_k(c_i)}.\tag{8} Pn(C,R)=ikhk(ci)ikmin(hk(ci),max(hk(ri))).(8)

其中 h k ( c i ) h_k(c_i) hk(ci) 等于第 k k k 个 n-gram 出现在候选答案 c i c_i ci 中的个数,同理, h k ( r i ) h_k(r_i) hk(ri) 等于第 k k k 个n-gram出现在参考答案 r i r_i ri中的个数。

当预测的候选答案较短时, P n ( C , R ) P_n(C,R) Pn(C,R) 值较高,这种精度不能很好地衡量相似性。因此引入惩罚因子 B P BP BP 来缓解这种情况,即 B P BP BP 用来惩罚较短的预测答案,计算公式如下:

B P = { 1 , l c > l r e 1 − l r l C . (9) BP=\begin{cases} 1,l_c>l_r\\ e^{1-\frac{l_r}{l_C}}\\ \end{cases}.\tag{9} BP={1,lc>lre1lClr.(9)

最后,BLEU score 计算如下:

B L E U = B P ⋅ e x p ( ∑ n = 1 N w n l o g P n ) . (10) BLEU=BP\cdot exp(\sum_{n=1}^{N}w_n logP_n).\tag{10} BLEU=BPexp(n=1NwnlogPn).(10)

二、阅读理解模型架构

典型的MRC系统以上下文和问题为输入,然后输入答案,系统包含四个关键模块:Embeddings, Feature Extraction, Context-Question Interaction,Answer Prediction。

  • Embeddings(嵌入层):将单词映射为对应的词向量,可能还会加上POS、NER、question category等信息;
  • Feature Extraction(特征提取/编码层):抽取question和context的上下文信息,可以通过CNN、RNN等模型结构;
  • Context-Question Interaction(交互层):context和question之间的相关性在预测答案中起着重要作用。有了这些信息,机器就能够找出context中哪些部分对回答question更为重要。为了实现该目标,在该模块中广泛使用attention机制,单向或双向,以强调与query相关的context的部分。为了充分提取它们的相关性,context和question之间的相互作用有时会执行多跳,这模拟了人类理解的重读过程。
  • Answer Prediction(输出层):基于上述模块获得的信息输出最终答案。因为MRC任务根据答案形式分为了很多种,所以该模块与不同任务相关。对于完形填空,该模块输出context中的一个单词或一个实体;对于多项选择,该模块从候选答案中选择正确答案。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、阅读理解深度学习模型方法(Typical Deep-Learning Methods)

以下是对MRC系统四大关键模块所使用的方法的介绍。
在这里插入图片描述

1、Embeddings(嵌入层)

基于神经网络的机器阅读理解模型的第 1 个关键步骤就是将单词表示成实值向量。

Embeddings模块将单词转换为对应的向量表示。如何充分编码context和question是本模块中的关键任务。在目前的MRC模型中,词表示方法可以分为传统的词表示预训练上下文表示。为了编码更丰富的语义信息,MRC系统在原来的词级别表示的基础上,还会融合字向量、POS、NER、词频、问题类别等信息。

1.1 传统的词嵌入(Conventional Word Representation)

1.1.1 One-Hot

One-Hot:向量长度为词表大小,只有单词的位置为1,其它全0。

  • One-Hot 词向量表示方法最大的问题在于这种稀疏向量无法体现任何单词之间的语义相似度信息。

1.1.2 分布式词向量表示(Distributed Word Representation)

高维映射的词嵌入方法可以有效解决上述One-Hot方法带来的问题,语义相似的单词可以在几何空间中被编码成距离相近的向量。

词向量能够基于单词的分布式假设,从大规模无标签的文本语料库中学习获得。在机器阅读理解任务中,使用最多的是 Word2Vec、GloVe 以及 Fasttext 这 3 种单词级别的嵌入模型。

  • Word2Vec 词向量:该模型具体可以分为连续词袋模型(continuous bag-of-word,简称 CBoW)以及跳跃元语法模型(skip-gram)两种:前者是从上下文对目标单词的预测中学习词向量;后者则相反,是从目标单词对其上下文的预测中学习词向量。
  • GloVe 词向量:GloVe 学习的是词向量的共现概率比值,而不是词本身的出现概率。
  • Fasttext 词向量:Fasttext 词向量本质上是 Fasttext 快速文本分类算法的副产物,该模型的提出,旨在解决 Word2Vec 和 GloVe 模型忽略单词内部结构,从而导致词的形态学特征缺失的问题。

1.2 基于上下文的预训练词嵌入(Pre-Trained Contextualized Word Representation)

尽管分布式词表示可以在编码低维空间中编码单词,并且反映了不同单词之间的相关性,但是它们不能有效地挖掘上下文信息。

具体来说,就是分布式词表示在不同上下文中都是一个常量。为了解决这个问题,研究学者提出了上下文的词表示,在大规模数据集预训练,直接当做传统的词表示来使用或者在特定任务 Fine-tuning。

将词的表征扩展到上下文级别,将每个单词表示为整个输入句子的函数映射,即根据当前的句子来体现一个词在特定上下文的语境里面该词的语义表示,使其动态地蕴含句子中上下文单词的特征,从而提高模型的性能。

目前较为流行的用于上下文级别嵌入的模型有 CoVe、ELMo 、GPT、BERT等预训练模型。

  • CoVe:一个单词除了和与之有着语义相似性的单词在向量空间中距离较近以外,还和出现这个单词的句子中的上下文单词也有着一定的关联。一个句子中的每一个单词应该共享其上下文中其他单词的表征能力,这样可以进一步提升模型性能。实验表明:将上下文向量与词向量拼接得到新的词嵌入表征,即 w~=[GloVe(w);CoVe(w)] 作为模型的输入,能进一步提高模型性能。
  • ELMo:一个好的词嵌入应该包括两个部分:一是包含诸如语法和语义等复杂特征;二是能够识别这个单词在不同上下文中的不同使用意义,即一词多义的区分;此外词表征应该结合模型的所有内部状态。实验表明:高层次的 LSTM 倾向于捕捉上下文相关的信息,而低层次的 LSTM 倾向于捕捉语法相关的信息。ELMo 采用了耦合双向 LSTM 语言模型(biLM)来生成预训练的上下文词向量。
  • GPT:采用单向的Transformer在大规模语料上预训练;
  • BERT:ELMo 存在的两个潜在问题:一是 biLM 模型并不是完全双向的,即句子从左到右和从右到左的 LSTM 过程并不是同时进行的;二是传统语言模型的数学原理决定了它的单向性,对于完全双向的 Bi-LSTM 来说,只要层数增加,就会存在预测单词“自己看见自己”的问题。BERT 预训练模型通过建立双向 Transformer 架构,加以采用遮蔽语言模型以及连续句子预测来解决上述问题该模型进一步增强了词向量模型的泛化能力,充分描述了字符级别、单词级别和句子级别的关系特征。

1.3 字符嵌入

字符嵌入用来获取一个单词在字符级别的向量表示,采用 char-level 的词向量能够在一定程度上缓解文本中出现未登录词(out-of-vocabulary,简称 OOV)的问题。

1.4 多粒度特征嵌入(Multiple Granularity)

Word2Vec或GloVe预先训练的词级嵌入不能编码丰富的句法和语言信息,如词性、词缀和语法,这可能不足以进行深入的机器理解。为了将细粒度的语义信息整合到单词表示中,一些研究人员引入了不同粒度的上下文和问题编码方法。

特征嵌入本质上就是将单词在句子中的一些固有特征表示成低维度的向量,包括单词的位置特征(position)、词性特征(POS)、命名实体识别特征(NER)、完全匹配特征(em)以及标准化术语频率(NTF)等等,一般会通过拼接的方式将其与字符嵌入、词嵌入、上下文嵌入一起作为最后的词表征。

  • Character Embeddings:与词级表示(word-level representations)相比,它们不仅更适合于子词形态的建模,而且可以缓解词汇表外(OOV)问题。
  • Part-of-Speech Tags:词性(POS)是一类特殊的语法词汇,如名词、形容词或动词。在NLP任务中标记POS标签可以说明单词使用的复杂特征,进而有助于消除歧义。为了将POS标签转换成固定长度的向量,将POS标签作为变量,在训练过程中随机初始化并更新。
  • Name-Entity Tags:名称实体是信息检索中的一个概念,是指一个真实世界中的对象,如一个人、一个地点或一个组织,它有一个合适的名称。当询问这些对象时,名称实体可能是候选答案。因此,嵌入上下文单词的名称实体标记可以提高答案预测的准确性。名称实体标签的编码方法类似于上述POS标签的编码方法。
  • Binary Feature of Exact Match (EM):如果context中的一个单词在query中存在,那么值为1,否则为0;
  • Query-Category:问题的类型(what,where,who,when,why,how)通常可以提供线索来寻找答案。

2、Feature Extraction(特征提取/编码层)

特征提取模块通常放置在嵌入层之后,分别提取上下文和问题的特征。它进一步关注基于嵌入模块所编码的各种句法和语言信息在句子层次上挖掘上下文信息。该模块采用了RNNs、CNNs和Transformer architecture。

编码层的目的是将已经表示为词向量的 Tokens(词的唯一标记单位)通过一些复合函数进一步学习其内在的特征与关联信息。提取特征的本质就是在对样本进行编码。

2.1 循环神经网络(RNN/LSTM/GRU)

循环神经网络是神经网络的一种,主要用来处理可变长度的序列数据。不同于前馈神经网络,RNNs 可以利用其内部的记忆来处理任意时序的输入序列,这使得它更容易处理机器阅读理解数据集中的问题和段落序列。

为了优化传统 RNN 模型的性能(例如解决 RNN 出现的梯度消失问题),研究者们提出了许多 RNN 的变体,其中比较著名且常用的变体有长短期记忆网络(long short-term memory,简称 LSTM)和门控循环单元(gatedrecurrent unit,简称 GRU)。在 MRC 甚至整个 NLP 领域的应用中,LSTM 是最具有竞争性且使用最为广泛的 RNN 变体,研究者们常用双 LSTM(BiLSTM)模型对问题 Q 和段落 C 进行编码。

2.1.1 问题的特征提取

在问题方面,双向RNNs的特征提取过程可以分为两类:词级(word-level)句子级(sentence-level)

  • 词级编码中,在第 j j j 个时间步处嵌入的问题 x q j x_{qj} xqj 的特征提取输出可以表示为:
    Q j = [ R N N → ( x q j ) ; R N N ← ( x q j ) ] . (11) Q_j=[\overrightarrow{RNN}(x_{qj});\overleftarrow{RNN}(x_{qj})].\tag{11} Qj=[RNN (xqj);RNN (xqj)].(11)
    其中, R N N → ( x q j ) \overrightarrow{RNN}(x_{qj}) RNN (xqj) R N N ← ( x q j ) \overleftarrow{RNN}(x_{qj}) RNN (xqj) 分别表示双向 RNN 的前向和后向隐藏状态,该特征提取过程下图所示:
    在这里插入图片描述
  • 句子级编码将疑问句视为一个整体。
    Q = [ R N N → ( x q ∣ l ∣ ) ; R N N ← ( x q 0 ) ] . (12) Q=[\overrightarrow{RNN}(x_{q|l|});\overleftarrow{RNN}(x_{q0})].\tag{12} Q=[RNN (xql);RNN (xq0)].(12)
    其中, ∣ l ∣ |l| l 表示问题的长度 R N N → ( x q ∣ l ∣ ) \overrightarrow {RNN}(x_{q|l|}) RNN (xql) R N N ← ( x q 0 ) \overleftarrow {RNN}(x_{q0}) RNN (xq0) 分别表示双向rnn的前向和后向的最终输出。
    特征提取过程可以表示为:
    在这里插入图片描述

2.1.2 上下文的特征提取(Content)

因为MRC任务中的上下文通常是一个长句子,所以研究者一般使用词级特征提取法来编码上文信息

和问题在词级编码中类似,在第 j j j 个时间步处嵌入的上下文 x p j x_{pj} xpj 的特征提取输出可以表示为:

P i = [ R N N → ( x p i ) ; R N N ← ( x p i ) ] . (13) P_i=[\overrightarrow{RNN}(x_{pi});\overleftarrow{RNN}(x_{pi})].\tag{13} Pi=[RNN (xpi);RNN (xpi)].(13)

2.2 卷积神经网络(CNN)

使用 RNN 模型对问题 Q 和段落 C 进行编码时,会导致模型训练和推理的速度变得非常缓慢,这使得模型无法应用于更大的数据集,同时无法应用于实时系统中。

利用 CNN 模型善于提取文本局部特征的优点,同时采用自注意力机制来弥补 CNN 模型无法对句子中单词的全局交互信息进行捕捉的劣势。

CNNs广泛应用于计算机视觉领域。应用于NLP任务时,一维cnn在利用滑动窗口挖掘局部上下文信息方面显示出其优越性。在CNNs中,每个卷积层应用不同尺度的特征映射来提取不同窗口大小的局部特征。然后将输出反馈到池化层以降低维数,但最大程度地保留最重要的信息。下图显示了特征提取模块如何使用CNN挖掘问题的本地上下文信息。

在这里插入图片描述
如上图所示,给定一个问题 x q ∈ R ∣ l ∣ × d x_q \in \mathbb{R}^{|l| \times d} xqRl×d 的词嵌入,其中 ∣ l ∣ |l| l 代表问题的长度, d d d 代表词嵌入的维度,图中卷积层有两个过滤器,带有 k k k 个输出通道(图中 k = 2 k=2 k=2),大小为 f t × d ( ∀ t = 2 , 3 ) f_{t}\times d(\forall{t}=2,3) ft×d(t=2,3),每个过滤器产生一个形状为 ( ∣ l ∣ − t + 1 ) × k (|l|-t+1)\times{k} (lt+1)×k 的 feature map,该feature map进一步池化为一个 k k k 维向量。最终,两个过滤器产生的feature map经过池化后的两个k维向量连接为一个 2 k 2k 2k 维的向量,用 Q Q Q 表示。

尽管n-gram模型和CNNs都可以关注句子的局部特征,但n-gram模型中的训练参数随着词汇量的增加呈指数增长。相比之下,无论词汇量大小如何,CNNs都可以更紧凑、更有效地提取局部信息,因为CNNs不需要表示词汇量中的每一个n-gram。此外,CNNs可以并行训练15次,比RNNs快。CNNs的一个主要缺点是只能提取局部信息,不能处理长序列。

实验结果表明:在不失准确率的情况下,Yu 等人提出的模型在训练时间上较先前的模型快了 3~13 倍。但总体而言,CNN 模型在 MRC 任务中仍使用较少。

2.3 Transformer

Transformer是一个强大的神经网络模型,在各种NLP任务中显示出了良好的性能。与基于RNN或cnn的模型相比,该模型主要基于注意机制,既没有递归,也没有卷积。多个头部的注意力结构不仅在对齐方面有优势,而且可以并行运行。

与RNNs相比,Transformer需要更少的训练时间,同时它更关注全局依赖性。但是,如果没有递归和卷积,模型就不能利用序列的位置信息。为了整合位置信息,Transformer添加由正弦和余弦函数计算的位置编码。位置和字嵌入的总和作为输入。

下图展示了Transformer架构。在实际应用中,模型通常采用多头自关注和前馈网络来叠加多个块。
在这里插入图片描述

3、Context-Question Interaction(交互层)

交互层是整个神经阅读理解模型的核心部分,它的主要作用是负责段落与问题之间的逐字交互,从而获取段落(问题)中的单词针对于问题(段落)中的单词的加权状态,进一步融合已经被编码的段落与问题序列。

通过提取context和question之间的相关性,模型能够找到答案预测的证据。根据模型是如何抽取相关性的方式,目前的工作可以分为两类,一跳交互多跳交互

无论哪种交互方式,在MRC模型中,attention机制在强调context哪部分信息在回答问题方面更重要发挥着关键作用。

当段落和问题序列通过注意力机制后,神经阅读理解模型就能学习到两者之间单词级别的权重状态,这大大提高了最后答案预测或生成的准确率。

在机器阅读理解中,attention机制可以分为无向和双向的。

3.1 单向注意力机制(Unidirectional Attention)

单向的attention主要是根据问题关注context中最相关的部分。如果context中的单词与问题更相似,那么该单词更可能是答案。通过计算公式 S i = f ( P i , Q ) S_i=f(P_i,Q) Si=f(Pi,Q) 得到context中的单词与question的相似度,其中 f ( ⋅ ) f(\cdot) f() 表示计算相似度的函数, P i P_i Pi 是context中的单词的embedding,Q是question的句子表示,最后通过softmax进行权重归一化,获得上下文中每个词的注意力权重 α i \alpha_i αi:

α i = e x p S i ∑ j e x p S j (14) \alpha_i=\frac{expS_i}{\sum_{j}expS_j}\tag{14} αi=jexpSjexpSi(14)
在这里插入图片描述
不同的模型对 f ( ⋅ ) f(\cdot) f() 有不同的选择,一般有以下两种:
S i = t a n h ( W P P i + W Q Q ) S i = Q T W S P i \begin{aligned} S_i&=tanh(W_{P}P_{i}+W_{Q}Q)\\ S_i&=Q^{T}W_{S}P_{i} \end{aligned} SiSi=tanh(WPPi+WQQ)=QTWSPi
其中, W P , W Q , W S W_P,W_Q,W_S WP,WQ,WS 是训练可得的参数。

单向的attention可以关注context中最重要的词来回答问题,但是该方法无法关注对答案预测也至关重要的question的词。因此,单向的attention不足以抽取context和query之间的交互信息。

3.2 双向注意力机制(Bidirectional Attention)

同时计算 query-to-context attention 和 context-to-query attention。

下图显示了计算Bidirectional Attention的过程。首先,通过计算上下文语义嵌入 P i P_i Pi 和问题语义嵌入 Q j Q_j Qj 之间的匹配分数,得到成对匹配矩阵 M ( i , j ) M(i,j) M(i,j)。然后:

  • column-wise SoftMax函数的输出可以被视为query-to-context注意力的权重,用 α \alpha α 表示;
  • row-wise SoftMax函数的输出表示context-to-query注意力权重 β \beta β

在这里插入图片描述

3.3 一跳交互(One-Hop Interaction)

单跳交互是一种浅层架构,上下文和问题之间的交互只计算一次。

虽然这种方法可以很好地处理简单的完形填空测试,但当问题需要在上下文中对多个句子进行推理时,这种单跳交互方法很难预测正确答案。

3.4 多跳交互(Multi-Hop Interaction)

Multi-Hop Interaction可以记住之前的context和question信息,能够深度提取相关性并聚合答案预测的证据。

4、输出层(Answer Prediction)

该模块基于上述三个模块累积得到的信息进行最终的答案预测。

该模块与任务高度相关,之前我们将MRC分为四类,分别是完形填空、多项选择、片段抽取、自由回答,那么对应的答案预测方法也有四种,分别是word predictor,option selector,span extractor,answer generator。

输出层主要用来实现答案的预测与生成,根据具体任务来定义需要预测的参数。

  • 完形填空任务:神经阅读理解模型需要从若干个答案选项中选择一项填入问句的空缺部分,因此,模型首先需要计算出段落针对问题的注意力值,然后通过获取选项集合中候选答案的概率预测出正确答案。【答案输出是原文中的一个词或实体,一种做法是将文中相同词的注意力权重得分进行累加,最终选择得分最高的词作为答案】
  • 多项选择任务:神经阅读理解模型需要从 k k k 个选项中选出正确答案,因此,模型可以先通过 BiLSTM将每一个答案进行编码得到 a i a_i ai,之后与 u u u 进行相似度对比,预测出正确的答案。【从多个候选答案中挑选出正确答案,一般是对备选答案进行打分,选择得分最高的候选者作为答案】
  • 抽取式任务:神经阅读理解模型需要从某一段落中找到一个子片段(span or sub-phrase)来回答对应问题,这一片段将会以在段落中的首尾索引的形式表示,因此,模型需要通过获取起始和结束位置的概率分布来找到对应的索引。【常用方法是 (Wang S, Jiang J. Machine comprehension using match-lstm and answer pointer[J].arXiv preprint arXiv:1608.07905, 2016.) 提出的预测答案开始和结束位置的概率的边界模型】
  • 生成式任务:由于答案的形式是自由的(free-form),可能在段落中能找到,也可能无法直接找到而需要模型生成,因此,模型的输出不是固定形式的,有可能依赖预测起止位置的概率(与抽取式相同),也有可能需要模型产生自由形式的答案。【对于自由作答任务,答案灵活度最高,不再限制于原文中,可能需要进行推理归纳,现有的方法常用抽取和生成相结合的模式。】
  • 会话类和多跳推理任务:由于只是推理过程与抽取式不同,其输出形式基本上与抽取式任务相同,有些数据集还会预测“是/否”、不可回答以及“能否成为支持证据”的概率。
  • 开放域的阅读理解:由于模型首先需要根据给定问题,从例如 Wikipedia 上检索多个相关文档(包含多个段落),再从中阅读并给出答案。

四、数据集

在这里插入图片描述

五、神经网络模型

在这里插入图片描述
前面提到过,机器阅读理解模型主要可以分为基于机器学习的、基于注意力机制的,以及基于预训练的。由于基于机器学习的模型效果都比较差,出现的时间也是较早之前了,所以下面只介绍基于注意力机制的几个经典模型—— match-LSTM、BiDAF 和 QA-Net,以及基于预训练的经典模型—— BERT 和 ALBERT。

1、match-LSTM

该模型整合了 match-LSTM 和 Pointer-Net 两个模块,前者也是该作者提出的,但是用于文本蕴含任务。后者可以让预测答案中的单词来源于原文,而不是一个固定长度的词汇表。

在经典的 match-LSTM 中输入有两个,一个是前提(premise),另一个是假说(hypothesis)。其目的是判断根据前提是否能推断出假说。这里可以将问题看作是前提,把文章看作是假说,这样做相当于带着问题去文章中寻找答案。这解决了原文和问题的匹配问题。
在这里插入图片描述
Pointer-Net 用于从原文中选取答案,这里又提出了两种预测答案的模式:

  • 序列模型(Sequence Model):不做连续性假设,预测答案存在与原文的每一个位置;
  • 边界模型(Boundary Model):直接预测答案在原文中起始和结束位置。相比于序列模型加快了速度,并且效果更好。因此后来的模型普遍使用边界模型来进行答案范围的预测。

以上两个模块都运用了注意力机制,match-LSTM 模块使用注意力机制来计算文章中第 i i i 个 token 和问题中第 j j j 个 token 的匹配程度。Pointer-Net 模块使用注意力机制来预测位置。

2、BiDAF

BiDAF 是 Bi-Directional Attention Flow(双向注意力流)的缩写。在该模型之前的注意力机制大致有三个特点:

  • 如前面提到的 match-LSTM 模型,它们通常都是单向的从问题到文本的注意力权重;
  • 注意力权重通常通过将上下文概括为固定长度的向量,进而从上下文中提取强相关信息用来回答问题;
  • 在文本域中,注意力权重通常在时间上是临时动态的,其中当前时间步的注意权重是前一时间步参与向量的函数。

而 BiDAF 的贡献主要有:(1) 采用了双向的注意力机制 (2) 采用了多粒度结合的编码方式

在这里插入图片描述
BiDAF 的注意力机制特点如下:

  • 计算了 query-to-context ( Q2C ) 和 context-to-query ( C2Q ) 两个方向的注意力信息,认为 C2Q 和 Q2C 实际上能够相互补充。
  • BiDAF 并不是将文本总结为一个固定长度的向量,而是将向量流动起来,以便减少早期信息加权和的损失;
  • Memory-less,在每一个时刻,仅仅对问题和当前时刻的上下文进行计算,并不直接依赖上一时刻的注意力,这使得后面的注意力计算不会受到之前错误的注意力信息的影响;

多粒度结合的编码方式:网络的前三层分别对字符(character)、单词(word)和上下文(context)进行嵌入编码,也就是具有多层级不同粒度的表征编码器。

3、QA-Net

在 QA-Net 之前的网络的关键技术主要有 RNN 模型和注意力机制。但是由于 RNN 的存在,所以模型的训练和推断速度都比较慢。QA-Net 就使用了卷积来代替传统的 RNN 结构,并采用了多种技巧(trick),较大的提高了模型的训练和推断速度,并保证了模型的精度。该模型中卷积用来捕获文本的局部信息,注意力用来学习每对单词之间的全局交互。
在这里插入图片描述
该模型还提出了新型的数据增强(data augment)技术 ,这种技术类似于CV中的数据增强技术。即先将原始句子从英语转化为其他语言,然后再将其转化回英语。这样的优点是可以增加可以使用的数据量。

在这里插入图片描述
该模型还使用了较多的技巧来减少参数、提升模型的速度,主要有:深度可分离卷积、层正则化、自注意力机制等。

  • 深度可分离卷积
    如果卷积核大小是 3 × 3 3 × 3 3×3,输入图像的通道数是5,输出图像的通道为10,则普通的卷积会在每个通道上设置一个 3 × 3 3 × 3 3×3 卷积核,与对应的通道做完卷积后相加得到输出图像中的一个通道。用 10 组 4通道 × ( 3 × 3 ) × ( 3 × 3 ) ×(3×3) 卷积核重复以上过程,就得到了要求的 10 通道的图像。
    在这里插入图片描述
    如上图所示,而深度可分离卷积将以上过程拆分为了两个子过程,先用 4通道 × ( 3 × 3 ) × ( 3 × 3 ) ×(3×3)卷积核在每个通道上做卷积,得到 4 通道的图像,然后用 10 组大小为 1 × 1 1 × 1 1×1,通道为 4 的卷积核与 4 通道的图像做卷积,得到最终 10 通道的输出图像。
    这种卷积方式的优点是大大的降低了参数的数量,从而加快了模型的速度。
  • 层正则化
    类似于 batch normalization,因为数据在网络中每经过一层,其分布会发生变化,这会导致模型训练的收敛比较慢。layer norm 可以通过调整输出数据的均值和方差,让输出值符合一定的分布,从而减少训练时间。
  • 自注意力机制
    使用了 Multi-Head Attention(《Attention is all you need》),也就是 Attention 做多次然后拼接,类似于先用不同大小的卷积核分别做卷积,然后拼接。

4、BERT

BERT 是 Bidirectional Encoder Representations from Transformers 的缩写,即来自 Transformer 的双向编码器表示,其中 Transformer 是另一种模型结构,BERT 就是在这种模型的基础上提出的。BERT 的最大特点是用遮蔽语言模型来利用上下文信息并使用自监督数据进行训练,并使用“next sentence prediction”任务来捕获句子之间的关系,此外用预训练(pre-train)加微调(fine-tune)的方式增强模型的泛化能力。

预训练+微调

在这里插入图片描述

预训练+微调就是先对模型的上层结构进行参数的预训练,然后根据任务的不同改变网络的下层结构,并对上层参数进行微调,这样可以使得模型的泛化能力更强,并且训练所需要的时间也得到了缩减。

在将预训练好的语言表达应用到下流任务有两种策略:(1) 基于特征的方法,即在处理不同的任务时,将预训练得到的表达作为附加特征 (2) 微调的方法,只引入少量需要从头开始训练的参数,其他参数只需要在预训练模型的基础上简单微调。

遮蔽语言模型
对于字符(token)级的任务来说,以上两种方式都限制了模型充分的结合上下文信息。同时 BERT 的参数非常多,所以需要大量的训练数据,为了解决该问题,BERT 使用了遮蔽语言模型(masked language model, MLM)。这种模型收到了完形填空的启发,它会随机的遮蔽输入中的某些 token,并让模型根据上下文去预测被遮蔽的 token 是什么。这使得表达能够混合上下文信息并且可以充分地利用无监督(自监督)的数据来进行训练。

但是 MLM 又带来了两个问题,一是造成了预训练和微调过程的不匹配,因为 [mask] 标志在微调过程中并不存在(预训练过程使用的是mask过的无监督数据,而微调过程使用的是有监督的真实数据),为了解决该问题,并不总是真的用 [mask] 标记来替换被选择的单词,而是在一定概率下不替换或者换成其他随机选取的单词。第二个问题是因为只有部分数据(而不是全部的数据)被标记为 [mask] 并需要预测,所以需要更多的训练时间(需要更多的batch来训练),但是这与所带来的效果相比是值得的。

预测下一个句子
另外某些任务是基于对两个句子之间关系的理解的,但是这并不能由语言模型直接捕获。这可以用“预测下一个句子(NSP)”的任务来解决,输入的两个句子 A 和 B,B 有一半的几率是 A 的下一句,另一半的几率是随机的句子。用模型来预测 B 是不是 A 的下一句话,从而让模型能够捕获句子之间的关系。

BERT 模型提出后,在11种文本挖掘任务中取得了当时最好的结果,并且对之前的最好的模型有很大的提升,被广泛认为是一个具有里程碑意义的模型。

5、ALBERT

ALBERT 是 A Lite BERT 的缩写,是一个轻量级的 BERT 模型,到目前为止(2019.11.8),它在 SQuAD2.0 数据集上达到了最好的效果。其最大的特点是参数少、速度快。

ALBERT 结合了两种参数约简(parameter reduction)技术:

  • 第一个技术是对嵌入参数进行因式分解(factorized embedding parameterization)。通过将大的词汇表嵌入矩阵分解为两个小的矩阵,将隐藏层的大小与词汇表嵌入的大小分离开来。这种分离使得在不显著增加词汇表嵌入的参数大小的情况下,更容易增加隐藏层大小。
  • 第二种技术是跨层参数共享(cross-layer parameter sharing)。这种技术可以防止参数随着网络深度的增加而增加。

下图是 BERT 和 ALBERT 模型参数的对比:
在这里插入图片描述
由于 BERT 中基于 NSP 任务的损失效果并不好,所以 ALBERT 还引入了基于预测句子顺序(sentence-order prediction, SOP)的预训练损失,SOP 主要聚焦在句子的句内连贯性。

六、机器阅读理解的研究趋势

1. 基于外部知识的机器阅读理解

在人类阅读理解过程中,当有些问题不能根据给定文本进行回答时,人们会利用常识或积累的背景知识进行作答,而在机器阅读理解任务中却没有很好的利用外部知识。

其挑战有:(1) 相关外部知识的检索 (2) 外部知识的融合

2. 带有不能回答的问题的机器阅读理解

机器阅读理解任务有一个潜在的假设,即在给定文章中一定存在正确答案,但这与实际应用不符,有些问题机器可能无法进行准确的回答。这就要求机器判断问题仅根据给定文章能否进行作答,如若不能,将其标记为不能回答,并停止作答;反之,则给出答案。

其挑战有:(1) 不能回答的问题的判别 (2) 干扰答案的识别

3. 多条文档机器阅读理解

在机器阅读理解任务中,题目都是根据相应的文章进行设计的。而人们在进行问答时,通常先提出一个问题,再利用相关的可用资源获取回答问题所需的线索。不再仅仅给定一篇文章,而是要求机器根据多篇文章对问题进行作答。

其挑战有:(1) 相关文档的检索 (2) 噪声文档的干扰 (3) 检索得到的文档中没有答案 (4) 可能存在多个答案 (5) 需要对多条线索进行聚合

4. 对话式阅读理解

当给定一篇文章时,提问者先提出一个问题,回答者给出答案,之后提问者再在回答的基础上提出另一个相关的问题,多轮问答对话可以看作是上述过程迭代进行多次。

其挑战有:(1) 对话历史信息的利用 (2) 指代消解




参考资料:

  • 1
    点赞
  • 0
    评论
  • 5
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

忍者の乱太郎

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值