作者: 哈工大SCIR博士生 徐俊
1. 摘要
让机器具备阅读理解能⼒是⾃然语⾔研究者长久以来追求的核⼼⽬标之⼀,随着深度学习技术的兴 起和阅读理解相关⼤数据集的发布,⼆者结合引爆了当前⼈们对于阅读理解研究的兴趣。本⽂概要 介绍阅读理解任务和当前两种“经典”神经⽹络模型,同时给出模型的开源代码和实验所需数据集, 便于读者快速上⼿。
2. 阅读理解任务简介
作为⾃然语⾔处理⽅向乃⾄⼈⼯智能领域的⼀个核⼼任务,让机器具备阅读理解能⼒的研究受到⼈ 们⼴泛⽽持续的关注。
为了考察⼈类的阅读理解能⼒,往往采取提问的⽅式,即:给定⼀篇⽂本和与⽂本相关的问 题,要求给出该问题的答案。同样的⽅式也被⽤于衡量机器的阅读理解能⼒,在⾕歌公司 Hermann(Hermann et al. 2015)[2] 发布的 CNN 数据集中,数据以三元组的形式存在:⽂本、问题和 答案,机器阅读⽂本和问题然后给出答案。
CNN 数据集,是基于美国有线电话新闻⽹(The Cable News Network)的新闻构建的,其中新 闻内容会作为“⽂本”,⽽“问题”则是新闻的标题(扣除其中⼀个实体,使⽤ @placeholder 标记),“答 案”是被抠除的那个实体。⽂本中的实体(⼈名、地名、机构等)均被替换成标记符(@entity),同 ⼀个实体使⽤同⼀个标记符表⽰,答案是⼀个在⽂中出现的实体,其在问句中的位置⽤特殊标记 @placeholder 表⽰。Figure 1 展⽰了 CNN 数据集中的⼀个三元组。
Figure 1: CNN 数据集的⼀个样例 [1]
需要注意的是,在 CNN 数据集中答案是⼀个出现在⽂本中的⼀个词(实体),⽽其他数据集却 不⼀定如此,⽐如在斯坦福⼤学 Rajpukar&Liang 发布的 SQuAD[4] 数据集中的答案就可能是由多个词组成且不⼀定是实体。本⽂的阐述基于 CNN 数据集
3. 模型
随着深度学习技术的再度兴起,神经⽹络模型成为阅读理解任务中的主流模型。下⾯简要的介绍其 中两种具有代表性的模型
3.1 Attention Reader
Attention Reader[2] 在处理的时候,⾸先采⽤双向 RNN 分别表⽰⽂本(看做⼀个“长句⼦”)和问 句,再利⽤ attention 机制寻找⽂本表⽰中同问句相关的信息,最后根据相关程度提取⽂本信息做 分类并给出预测的答案。Figure 2是 Attention Reader 的模型框架图。
Figure 2: Attention Reader
- 表示:使⽤双向 RNN(LSTM Cell)获取⽂本表⽰和问句表⽰。其中问句表⽰分别由双向 RNN 两个⽅向各⾃最后⼀个时刻的隐层状态(图中左上⾓双向 RNN 中的橙⾊向量)拼接⽽ 来
- Attention: 使⽤ Attention 机制获得⽂本中各个时刻的隐藏状态向量同问句表⽰之间的相关 程度(也就是权重,最简单的做法就是向量点乘),在图中⽤红⾊线条表⽰(越长表⽰相关程 度越⾼)
- 输出层:⽂本各个时刻隐藏状态向量乘以对应时刻的权值,加和,获取“提取后的⽂本信息”, 过 softmax 在词表上进⾏分类。
在AttentionReader中,核⼼的思路是通过动态的attention机制从⽂本中“寻找相关信息”,再做 依据该信息给出预测结果。关于该模型的具体实现有多个不同的版本,斯坦福⼤学的Chen&Manning (Chen et al. 2016)[1] 利⽤该模型在 CNN 测试集上取得了 72.4% 的效果(当时最好效果),Chen 在 ACL2016 会议中报告该模型的最新效果为 73.8%。
3.2 Attention-Sum Reader
IBM 公司的 Kadlec(Rudolf Kadlec et al. 2016)[3] 提出了 Attention-Sum Reader,该模型直接利 ⽤ attention 机制基于问句表⽰在⽂章中寻找最相关的词作为答案。
Figure3是 Attention-SumReader 的框架图,可以直观看出 Attention-SumReader 同 Attention Reader 在模型框架上⼏乎类似。Attention-Sum Reader 直接利⽤ attention 机制获取⽂本中各个位 置作为答案的概率(需要将同⼀词语在⽂本中不同位置的概率加和作为该词语成为答案概率),⽽ 不再同 Attention Reader 最后⼀步那样,通过分类(softmax)获取各个词语作为答案的概率。
Figure 3: Attention-Sum Reader
虽然做法上同 Attention Reader 区别不是特别明显,但是这是两种不同的思路,基于此⽽衍 ⽣出来的模型的变种则差别甚⼤。二者的本质区别在于最终提供给输出层的信息(特征)类型, Attention Reader 输入给输出层的是经过 attention 机制加权后的文本表示,也就是“根据问 句在文本中提取的信息”,而 Attention-Sum Reader 输入给输出层的是 attention 结果本身。
3.3 对比
(Rudolf Kadlec et al. 2016)[3] 报出的效果是 69.5%,但是在我们的实现中获得了 73% 的效果。可见,两个 Reader 本身的性能在伯仲之间。
Attention Reader 的输出层为词表中每个词学习⼀个权重向量,⽽其中有效候选词是真实实体 的指代(如 @entity0),指代在不同的⽂本中代表不同的真实实体,这就使得有效候选词的权重向 量在⼀定程度上并不能刻画这个词,进⽽加⼤学习难度。⽽ Attention-Sum Reader 中这个问题则 要⼩的多,其直接利⽤问句表⽰在⽂本中寻找最相关的词。
Attention-Sum Reader 的问题在于其严重依赖于问句表⽰,Attention Reader 在“⽂本中寻找相关信息”是对于问句表⽰的丰富,毕竟,⽬标词的表⽰并不等同于问句表⽰。
4. 数据集和开源代码
4.1 开源代码
Attention Reader[1](Theano): https://github.com/danqi/rc-cnn-dailymail; Attention-Sum Reader[3](Theano): https://github.com/rkadlec/asreader;
4.2 数据集
CNN&Daily Mail dataset: http://cs.nyu.edu/~kcho/DMQA/;
More datasets for QA: https://github.com/karthikncode/nlp-datasets;
5. 总结
本⽂概要的介绍了阅读理解任务,以及两种“经典”的阅读理解模型,同时给出对应开源代码和相关 数据集,⽅便对该领域有兴趣的读者快速上⼿,实践出真知。
References
[1] Danqi Chen, Jason Bolton, and Christopher D Manning. A thorough examination of the cnn/daily mail reading comprehension task. arXiv preprint arXiv:1606.02858, 2016.
[2KarlMoritzHermann,TomasKocisky,EdwardGrefenstette,LasseEspeholt,WillKay,Mustafa Suleyman, and Phil Blunsom. Teaching machines to read and comprehend. In Advances in Neural Information Processing Systems, pages 1693–1701, 2015.
[3] Rudolf Kadlec, Martin Schmid, Ondrej Bajgar, and Jan Kleindienst. Text understanding with the attention sum reader network. arXiv preprint arXiv:1603.01547, 2016.
[4] Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev, and Percy Liang. Squad: 100,000+ questions for machine comprehension of text. arXiv preprint arXiv:1606.05250, 2016.
本文来源于哈工大SCIR