NEURAL READING COMPREHENSION AND BEYOND
https://cs.stanford.edu/~danqi/papers/thesis.pdf
NEURAL READING COMPREHENSION AND BEYOND
总算是把陈丹琦学姐的毕业论文看完了,这篇长达156页的论文不得不服啊。这篇笔记会总结一下各个部分的中心思想,帮助大家理解论文所讲的内容和模型。
在其他笔记当中提到过的模型就不会再详细讲解了,链接都会在文章相应的位置给出来,希望大家都能有所收获。
1. 论文简介
论文的第一章首先借助MCtest数据集中的一个儿童故事的例子,介绍了机器阅读理解所包含的内容(需要完成的任务)并提出阅读理解是用来评估机器对于人类自然语言的理解程度的有效工具。
阅读理解的任务:
- part of speech tagging 词性标注
- named entity recognition 命名实体识别
- syntactic parsing 句法分析
- coreference resolution 指代消除
机器阅读理解的研究已经有了很长的历史,而近期得到较好发展归因于:
(1)大规模的监督数据集的产生
(2)神经阅读理解模型的发展
相关贡献:
- 首次对神经阅读理解进行研究,提出Stanford attentive reader
- 分析深层次神经阅读理解学到的内容,理解神经模型和现有基于特征模型的差异
- 提出基于开放域问答的DrQA
- 提出基于对话的问答系统CoQA
(第一章涉及的其他内容在之后的章节都会详细讲解,此处不再赘述)
(一)神经阅读理解:基础
2. 阅读理解回顾
2.1 机器阅读理解历史
先对早期机器阅读理解的发展进行介绍,当时由于数据集以及模型两方面的原因,阅读理解被视为一项太难的任务,没能得到突破性的进展。
到2013年,机器学习的方法得到了快速的发展,更多的监督数据集产生了,如MCtest和Processbank,进而带来了一大波机器学习模型的产生(主要产生于2015年)但是,这些改进依旧存在一定的问题,如高度依赖已有的语言工具,难以构造有效的特征,数据集规模不够大。
突破性的进展发生在2015年,Hermann提出了一个廉价的用于创建大规模监督学习阅读理解数据集的方法,构建了CNN/daily mail数据集,并提出了一个包含注意力机制的LSTM模型,attentive reader,而陈丹琦等人在2016年提出了另外一个基于简单的神经网络的阅读理解模型,达到了这一数据的最佳效果。但是,由于数据集的构建存在噪音,且有共指错误的现象,限制了阅读理解的进一步发展。
于是,2016年新数据集SQuAD的出现带动了一大波阅读理解模型的产生,这些模型都是端到端的深度学习/神经阅读理解模型,具有以下优点:自动学习特征;词嵌入缓解变量稀疏的问题;概念简单,将任务转换为构建神经网络结构的问题。
2.2 任务定义
阅读理解任务可以被看做一个监督学习问题,给定 { ( 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
根据答案的不同,现有的阅读理解任务可以分为以下几类:
- 完形填空(使用正确率评估模型好坏)
- 单项选择(正确率);
- 范围预测(与ground truth比较,用exact match或F1 score);
- 开放式回答(BLEU,Meteor,ROUGE等评估方法)
2.3 阅读理解 vs. 问答
阅读理解可以视为问答的一个例子,两者存在关系也有一定的区别。
问答的最终目标是回答人们各种类型的问题,需要有足够多的资源才能回答。这就涉及到如何找到并识别出相关资源,如何从不同的资源中整合出答案,人们经常问哪些问题。
而阅读理解只要求对某一段特定文字有足够的理解,不要求给定文字外的资源。
2.4 数据集和模型
正如前文所述,模型和数据集是推动机器阅读理解的动力。下图给出了近年来各数据集和模型的发展情况:
3. 神经阅读理解模型
3.1 以往的方法:基于特征的模型
以往对于阅读理解任务的研究方法大多基于特征建模,以陈丹琦(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
正如前文所述,特征提取相关的模型具有需要选取特征,且不具备较大的泛化能力的缺点,因此引入神经网络方法。
3.2 神经网络方法:Stanford Attentive Reader
相关思想:
在正式介绍Stanford Attentive Reader之前,对需要了解的一些模型相关的知识点进行了简短的概括,包括word embedding,RNN,注意力机制等基础知识,此处不再赘述,直接从模型部分开始整理。
模型:
在介绍模型细节之前先把模型的整体框架图拿出来以便理解。
该图是陈丹琦(2017)的论文中Stanford attentive reader模型在阅读理解范围预测类问题上的使用。总的来说,模型分成两个部分,对问题进行encoding(即下图左),以及对文章进行encoding(即下图右)
先对简单一点的左边部分,即问题encoding部分进行介绍。
- 将问题中的每一个单词 q i q_i qi 进行word embedding得到 E ( q i ) ∈ R d \mathbf{E}(q_i) \in \mathbb{R}^d E(qi)∈Rd
- 对embedding得到的词向量使用一个双向的LSTM,得到隐藏层信息: q 1 , q 2 , . . . . . . , q l q = B i L S T M ( E ( q 1 ) , E ( q 2 ) , . . . . . . , E ( q l q ) ; Θ ( q ) ) ∈ R h \mathbf{q}_1,\mathbf{q}_2,......,\mathbf{q}_{l_q}=BiLSTM(\mathbf{E}(q_1),\mathbf{E}(q_2),......,\mathbf{E}(q_{l_q});\Theta^{(q)})\in \mathbb{R}^h q1,q2,......,qlq=BiLSTM(E(q1),E(q2),......,E(qlq);Θ(q))∈Rh
- 通过一层注意力将这些BiLSTM的隐藏单元加和得到单个向量表示,其中 b j b_j bj衡量问题中每个单词的重要性, w q ∈ R h \mathbf{w}^q\in \mathbb{R}^h wq∈Rh是需要学习的权重参数,得到问题最终的向量表示 q ∈ R h \mathbf{q}\in \mathbb{R}^h q∈Rh: b j = e x p ( w q T q j ) ∑ j ′ e x p ( w q T q j ′ ) q = ∑ j b j q j b_j=\frac{exp(\mathbf{w}^{qT}\mathbf{q}_j)}{\sum _{j'}exp(\mathbf{w}^{qT}\mathbf{q}_j')} \\ \mathbf{q} = \sum_j b_j\mathbf{q}_j bj=∑j′exp(wqTqj′)exp(wqTqj)q=j∑bjqj(tip: 在以往的实验中,有学者会直接将双向LSTM中两个方向的隐藏单元的向量concate,但是作者发现添加注意力机制能让模型更加关注有关联的单词,对结果更加有效)
上述过程用图形表示如下:
然后是复杂一点的文章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 可以被分为两部分,第一部分是单词自身的属性,第二部分是文章单词和问题的相关性,分别用以下内容表示:
- 对于第一个部分,即单词自身性质的表示,作者将其分为四个小部分,第一是单词的embedding,即 f e m b ( p i ) = E ( p i ) ∈ R d f_{emb}(p_i)=\mathbf{E}(p_i) \in \mathbb{R}^d femb(pi