赞
踩
https://cs.stanford.edu/~danqi/papers/thesis.pdf
NEURAL READING COMPREHENSION AND BEYOND
总算是把陈丹琦学姐的毕业论文看完了,这篇长达156页的论文不得不服啊。这篇笔记会总结一下各个部分的中心思想,帮助大家理解论文所讲的内容和模型。
在其他笔记当中提到过的模型就不会再详细讲解了,链接都会在文章相应的位置给出来,希望大家都能有所收获。
论文的第一章首先借助MCtest数据集中的一个儿童故事的例子,介绍了机器阅读理解所包含的内容(需要完成的任务)并提出阅读理解是用来评估机器对于人类自然语言的理解程度的有效工具。
阅读理解的任务:
机器阅读理解的研究已经有了很长的历史,而近期得到较好发展归因于:
(1)大规模的监督数据集的产生
(2)神经阅读理解模型的发展
相关贡献:
(第一章涉及的其他内容在之后的章节都会详细讲解,此处不再赘述)
先对早期机器阅读理解的发展进行介绍,当时由于数据集以及模型两方面的原因,阅读理解被视为一项太难的任务,没能得到突破性的进展。
到2013年,机器学习的方法得到了快速的发展,更多的监督数据集产生了,如MCtest和Processbank,进而带来了一大波机器学习模型的产生(主要产生于2015年)但是,这些改进依旧存在一定的问题,如高度依赖已有的语言工具,难以构造有效的特征,数据集规模不够大。
突破性的进展发生在2015年,Hermann提出了一个廉价的用于创建大规模监督学习阅读理解数据集的方法,构建了CNN/daily mail数据集,并提出了一个包含注意力机制的LSTM模型,attentive reader,而陈丹琦等人在2016年提出了另外一个基于简单的神经网络的阅读理解模型,达到了这一数据的最佳效果。但是,由于数据集的构建存在噪音,且有共指错误的现象,限制了阅读理解的进一步发展。
于是,2016年新数据集SQuAD的出现带动了一大波阅读理解模型的产生,这些模型都是端到端的深度学习/神经阅读理解模型,具有以下优点:自动学习特征;词嵌入缓解变量稀疏的问题;概念简单,将任务转换为构建神经网络结构的问题。
阅读理解任务可以被看做一个监督学习问题,给定 { ( p i , q i , a i ) } i = 1 n \{(p_i,q_i,a_i)\}_{i=1}^n {(pi,qi,ai)}i=1n,学习一个预测函数来完成基于文章和问题的答案生成任务 f : ( p , q ) → a f:(p,q) \rightarrow a f:(p,q)→a
根据答案的不同,现有的阅读理解任务可以分为以下几类:
阅读理解可以视为问答的一个例子,两者存在关系也有一定的区别。
问答的最终目标是回答人们各种类型的问题,需要有足够多的资源才能回答。这就涉及到如何找到并识别出相关资源,如何从不同的资源中整合出答案,人们经常问哪些问题。
而阅读理解只要求对某一段特定文字有足够的理解,不要求给定文字外的资源。
正如前文所述,模型和数据集是推动机器阅读理解的动力。下图给出了近年来各数据集和模型的发展情况:
以往对于阅读理解任务的研究方法大多基于特征建模,以陈丹琦(2016)的在CNN/daily mail上使用的方法为例。
它的主要思想是构建一个传统的基于特征提取的分类器,以检测哪些特征对于该任务而言比较重要。
为每一个候选实体设计一个特征向量 f p , q ( e ) f_{p,q}(e) fp,q(e),学习一个权重向量 W T W^T WT 使得正确答案的ranking比其他候选实体高(即转换成候选实体的ranking问题,将ranking得分最高的实体作为答案) W T f p , q ( a ) > W T f p , q ( e ) , ∀ e ∈ E ∩ p ∖ { a } W^Tf_{p,q}(a) > W^Tf_{p,q}(e), \forall e \in E\cap p \setminus \{a\} WTfp,q(a)>WTfp,q(e),∀e∈E∩p∖{a}
模型的具体实现可以参考对该论文的解析:斯坦福机器阅读理解模型Stanford Attentive Reader
正如前文所述,特征提取相关的模型具有需要选取特征,且不具备较大的泛化能力的缺点,因此引入神经网络方法。
相关思想:
在正式介绍Stanford Attentive Reader之前,对需要了解的一些模型相关的知识点进行了简短的概括,包括word embedding,RNN,注意力机制等基础知识,此处不再赘述,直接从模型部分开始整理。
模型:
在介绍模型细节之前先把模型的整体框架图拿出来以便理解。
该图是陈丹琦(2017)的论文中Stanford attentive reader模型在阅读理解范围预测类问题上的使用。总的来说,模型分成两个部分,对问题进行encoding(即下图左),以及对文章进行encoding(即下图右)
先对简单一点的左边部分,即问题encoding部分进行介绍。
上述过程用图形表示如下:
然后是复杂一点的文章encoding的部分。
总体来说也是需要用一个向量来表示文章中的每一个单词,然后feed到一个BiLSTM当中,得到每个词对应的表示,即: p 1 , p 2 , . . . . . . , p l p = B i L S T M ( p ~ 1 , p ~ 2 , . . . . . . , p ~ l p ; Θ ( p ) ) ∈ R h \mathbf{p}_1,\mathbf{p}_2,......,\mathbf{p}_{l_p}=BiLSTM(\tilde{\mathbf{p}}_1,\tilde{\mathbf{p}}_2,......,\tilde{\mathbf{p}}_{l_p};\Theta^{(p)})\in \mathbb{R}^h p1,p2,......,plp=BiLSTM(p~1,p~2,......,p~lp;Θ(p))∈Rh注意,这里biLSTM的输入不再是简单的embedding,而是由多个部分组成。
文章每个词的词表示 p ~ i \tilde{\mathbf{p}}_i p~i 可以被分为两部分,第一部分是单词自身的属性,第二部分是文章单词和问题的相关性,分别用以下内容表示:
最后,我们可以得到文章单词的四个部分的表示:
p
i
~
=
(
f
e
m
b
(
p
i
)
,
f
t
o
k
e
n
(
p
i
)
,
f
e
x
a
c
t
_
m
a
t
c
h
(
p
i
)
,
f
a
l
i
g
n
(
p
i
)
)
\tilde{\mathbf{p}_i}=(f_{emb}(p_i), f_{token}(p_i),f_{exact\_match}(p_i),f_{align}(p_i))
pi~=(femb(pi),ftoken(pi),fexact_match(pi),falign(pi))同样的,将这个部分的模型思想在图中表示出来。
得到两个部分(问题和文章)的encoding之后,就需要进行答案预测了,即检测答案所在的范围,为此再次使用注意力机制的思想,并训练了两个单独的分类器,分别用来判断单词作为开始和作为结尾的可能性。
使用一个双线性乘积(被证实有效的工具)来获取文章和问题之间的相似性:
P
(
s
t
a
r
t
)
(
i
)
=
e
x
p
(
p
i
W
(
s
t
a
r
t
)
q
)
∑
i
′
e
x
p
(
p
i
′
W
(
s
t
a
r
t
)
q
)
P
(
e
n
d
)
(
i
)
=
e
x
p
(
p
i
W
(
e
n
d
)
q
)
∑
i
′
e
x
p
(
p
i
′
W
(
e
n
d
)
q
)
P^{(start)}(i) = \frac{exp(\mathbf{p}_i\mathbf{W}^{(start)}\mathbf{q})}{\sum_{i'}exp(\mathbf{p}_{i'}\mathbf{W}^{(start)}\mathbf{q})} \\ P^{(end)}(i) = \frac{exp(\mathbf{p}_i\mathbf{W}^{(end)}\mathbf{q})}{\sum_{i'}exp(\mathbf{p}_{i'}\mathbf{W}^{(end)}\mathbf{q})}
P(start)(i)=∑i′exp(pi′W(start)q)exp(piW(start)q)P(end)(i)=∑i′exp(pi′W(end)q)exp(piW(end)q) 其中,
W
(
s
t
a
r
t
)
,
W
(
e
n
d
)
∈
R
h
∗
h
\mathbf{W}^{(start)},\mathbf{W}^{(end)}\in \mathbb{R}^{h*h}
W(start),W(end)∈Rh∗h是需要学习的参数。其实,这里和注意力机制有一定的差别,注意力机制是先求出注意力权重,再用权重对词向量进行加权求和,而这里直接用归一化的权重来进行预测。
训练的过程中使用交叉熵损失函数:
L
=
−
∑
l
o
g
P
(
s
t
a
r
t
)
(
a
s
t
a
r
t
)
−
∑
l
o
g
P
(
e
n
d
)
(
a
e
n
d
)
L = -\sum logP^{(start)}(a_{start})-\sum logP^{(end)}(a_{end})
L=−∑logP(start)(astart)−∑logP(end)(aend)参数更新过程中使用SGD进行更新。
模型扩展
上文讲述的是模型在范围预测类阅读理解方面的运用,现在将模型扩展到其他类型的阅读理解问题上:
Tips:对比以上几种类型的阅读理解任务,可以发现后面三种都对整个passage进行了encoding,而范围预测类问题是对文章的每一个单词进行encoding,这是因为进行范围预测时,需要对每一个词作为开头和结尾的概率进行预测,而其他类型的阅读理解中只需要根据文章整体与问题之间的关系来找到答案,因此可以用一个向量来表示整篇文章。
数据集:
CNN/daily mail,SQuAD
实现细节:
(以上模型在陈丹琦2016和2017的论文中进行了详细描述,两者存在细微差别,读者可自行查看)
实验结果:
在CNN/Daily Mail上的实验结果:
在SQuAD上的实验结果:
由于向量是作者自己构造的,因此通过切除分析来说明各个构造的向量的重要性,可知align和exact match两个特征的组合对于模型而言最为重要。
Tips:由切除分析的结果可知,token向量,也就是和文章自身相关属性的向量对于模型效果影响不大,直观的说,给定一篇文章的自身性质对于回答问题没有太大帮助,跟问题联系起来的部分特征才具有真正的价值。
另外,exact match和aligned向量单独的影响不大,这个可以解释为两者之间存在一定的overlap,当去掉其中一个时,其包含的信息可以用另外一个向量部分表示,因此两者都去掉对模型的影响更大。
另外,在文章中还对模型学到的内容进行了分析,具体的内容作者已经在2016年的论文中详细介绍,这里不再赘述。
【笔记1-3】斯坦福机器阅读理解模型Stanford Attentive Reader
尽管前文所述的神经阅读理解在阅读理解领域已经有了很大的进步,但是与人工表现相比依旧存在很大的进步空间。
尽管在SQuAD数据集上,机器已经实现了超越人类的表现,但是通过分析可以发现,模型依旧存在一些问题。从一些错误的例子可以看出,即便是在该数据集上表现最佳的bert模型,仍然缺乏对文本主体和事件之间内在结构的理解。
还有学者发现在文末添加一些分散注意力或存在语法问题的句子,会让模型表现大幅下降。这说明目前的模型严重依赖于文章和问题之间的词汇线索,且模型对于对抗性样本存在鲁棒性差等缺点。
总之,尽管模型在SQuAD上有了很高的正确率,但这些模型依旧停留在对文本浅层次结构信息的理解上,对于深层次结构的理解还是会犯很多简单的错误。因此,需要建立更为全面的数据集以及更有效的模型。
到目前为之提到的数据集CNN/Daily Mail以及SQuAD虽然都已经实现了机器阅读理解的超常表现,但这些数据集依旧属于比较简单的数据集,以SQuAD为例,它存在以下缺点:
为了处理这些问题,产生了很多新的数据集,比如:
TriviaQA(先收集问题/答案对,然后构建相应的段落)RACE(用人类的标准化测试评估机器阅读理解能力,专家设定问题和答案)NarrativeQA(根据书或电影的情节摘要进行提问回答,由于答案缺乏一致性,很难评估)SQuAD 2.0(增加负样本例子)HotpotQA(问答问题需要分析多个支持文档)
开放领域的问答于1999年开始时兴,TREC的比赛将QA track作为一个部分,要求提取出回答某一开放领域问题的文本。当时的模型普遍包含两个部分:信息提取系统IR(information retrieval)和基于窗口的单词评分系统。近来,KBs(knowledge bases)的出现,让这个领域得到了较大的发展,基于此产生的模型大多以语义分析和信息提取为主,但KBs依旧存在不完整,模式固定的缺点。
后来发展出了发展较为完善的问答系统,比如微软的AskMSR(基于数据冗余的搜索引擎问答系统)IBM的DeepQA(最具代表性的现代问答系统,依靠非结构化的信息和结构化的数据生成答案)和YodaQA(开源问答系统),为模型DrQA的表现评估提供了一个参考上界。
这一部分主要基于陈丹琦2017年的论文展开,附上论文的详细解读【笔记1-2】基于维基百科的开放域问题问答系统DrQA
模型概述:目标是从维基百科中提取相关信息来回答问题,包含两个部分,document retriever用于提取与问题相关的文章,document reader用于从提取的文章中找到对应问题的答案。
(1)document retriever
对于相关文章提取部分,作者采用了经典的信息检索(非机器学习)思想来缩小搜索范围:分别计算问题和文章的bigram的TF-IDF向量,然后结合两个TF-IDF得到与问题最相关的五篇文章。
(2)document reader
对于问答部分,刚好符合前文所述的检测答案范围(span-based QA)的模型,Stanford attentive reader可以直接在这里使用。为了保证各个备选答案分数之间的可比性,使用未归一化的exp并对所有的文章范围取argmax作为最终的预测结果
(3)Distant supervision(DS)
如果将前文所述的在SQuAD上训练的模型放在开放领域问答上,会存在几个问题:首先,SQuAD的问题是基于文章内容产生的,这与开放域问答中的,先提出问题再从开放资源中找到答案不同;其次,问题对文章的依赖性太大;最后,SQuAD的数据集对于开放域问答而言太小了。因此引入一个可以自动生成训练样本的模型,distant supervision。
DS的基本思想是根据问题答案对,利用前面训练出来的document retriever提取最可能包含答案的文章,用找的文章和原本的问题答案对组成新的训练样本,即
f
(
q
,
a
)
⇒
f
(
p
,
q
,
a
)
i
f
p
∈
d
o
c
u
m
e
n
t
r
e
t
r
i
e
v
e
r
(
q
)
a
n
d
a
a
p
p
e
a
r
s
i
n
p
f(q,a)\Rightarrow f(p,q,a)\\ if \ p \in document \ retriever \ (q) \ and \ a \ appears \ in \ p
f(q,a)⇒f(p,q,a)if p∈document retriever (q) and a appears in p
基于DrQA已经达到的成果,提出未来在开放域问答上改进的方向:
本部分内容取自 CoQA: A Conversational Question Answering Challenge (Siva Reddy, Danqi Chen, Christopher D. Manning) 详细解读请参考【笔记1-1】基于对话的问答系统CoQA (Conversational Question Answering)
基于对话的问答系统和对话直接相关,常见的有两种类型:任务导向型和聊天机器人。前者是为了完成某个任务(如餐厅点餐)任务完成率和完成时间来衡量效果,后者只是以无目的的日常聊天为主,用聊天时长评估模型好坏。
本文提到的CoQA与基于图表进行对话的系统(Visual Dialog,Complex Sequential Question Answering)类似,与sequential question answering(将问题分解成简单问题)相关。
CoQA (Conversational Question Answering)对应的中文发音为“扣卡”,是一个用来衡量机器进行对话式问答能力的数据集,包含来自8000个对话的127000对问题+答案。设计这一数据集是为了还原人类对话的性质;保证答案的自然性;实现QA系统在不同领域的稳健性。
(1)目标任务: 给定一篇文章和一段对话,回答对话中的下一个问题。对话中的每一轮由问题(Q),答案(A),依据( R)组成,答案往往比依据简洁很多。回答问题时,需要考虑对话中的历史信息,比如回答 Q 2 Q_2 Q2时,要基于对话历史 Q 1 Q_1 Q1, A 1 A_1 A1以及回答依据 R 2 R_2 R2,可以简单表示为: A 2 = f ( Q 2 , Q 1 , A 1 , R 2 ) A n = f ( Q n , Q 1 , A 1 , . . . Q n − 1 , A n − 1 , R n ) A_2 = f(Q_2, Q_1, A_1, R_2) \\ A_n = f(Q_n, Q_1, A_1,...Q_{n-1},A_{n-1},R_n) A2=f(Q2,Q1,A1,R2)An=f(Qn,Q1,A1,...Qn−1,An−1,Rn)对于无法回答的问题,给出“unknown”的回答,不标注任何依据(R)
(2)数据收集过程:CoQA数据收集过程中,每个对话都包含一个提问者和回答者:
相对于单方面的回答系统,对话更加自然;
当一方给出模棱两可的问题或者错误的答案时,另一方可以据此进行标记;
当两者意见不统一时,可以在一个独立的聊天窗中进行讨论;
(3)数据集分析:
模型任务: 对话反馈问题 + 阅读理解问题(分别针对两个部分及其组合提出baseline)
给定文章
p
p
p,对话历史
{
q
1
,
a
1
,
.
.
.
,
q
i
−
1
,
a
i
−
1
}
\{q_1,a_1,...,q_{i-1},a_{i-1}\}
{q1,a1,...,qi−1,ai−1}
输入:问题
q
i
q_i
qi
输出:答案
a
i
a_i
ai
实验结果表明:
各模型中,seq2seq表现最差;Hybrid效果最好;最好的模型比人类表现差23.7%;模型在域外数据集上效果更差,尤其是reddit
历史对话轮数分析:
模型表现会随着历史对话轮数的增加而降低,PGNet除外。大部分模型在有一轮历史对话的时候模型效果会有一定的提升,但之后会随着历史对话轮数上升而下降。
CoQA baseline模型在数据集上的表现为65.1%,与人类表现相比依旧有很大的改进空间,因此作者提出了以下几个改进方向:
另外,对数据集CoQA进行改进是另外一个可以考虑的发展方向。
本文对神经读理解的基础(第一部分)和应用(第二部分)以及作者在这方面的贡献进行了较为详细的介绍。
第二章:阅读理解的历史;从兴起到视为监督学习再到神经阅读理解的出现;数据集的完善以及模型的涌现成为该领域快速发展的两大动力;阅读理解的任务;四种主要类型及对应的评估方法。
第三章:神经阅读理解;Stanford attentive reader在CNN/Daily mail完形填空类问题上的应用;Stanford attentive reader在SQuAD上的应用;详细分析数据和结果,了解模型学到的内容;提出在该领域进行改善的思路和方法。
第四章:当前模型在了解文章内部结构上依旧欠缺;在模型上除了准确率之外还有其他需要关注的指标(速度和规模,稳健性,可解释性);SQuAD之后的数据集引入了更多复杂的问题。
第五章:将信息提取和阅读理解结合,构建开放域问答系统DrQA;在多个数据集上对模型进行评估;引入远距离监督(DS)生成样本提高模型表现。
第六章:基于对话的问答系统;构建数据集CoQA;构建模型确认数据集的baseline
【完结撒花,再次膜拜丹琦学姐 *·*】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。