《NEURAL READING COMPREHENSION AND BEYOND》解读(陈丹琦博士论文)

本文深入探讨了深度学习在阅读理解任务中的应用,包括模型发展、数据集构建、任务定义及评估方法。重点介绍了Stanford Attentive Reader模型,解析其结构与训练策略,并讨论了模型在不同场景下的扩展与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在听standford的cs224n自然语言处理课程的时候,就有一段是请陈丹琦来这边讲她最近的一些工作,我记得还是在embedding上的进展。听的时候,就觉得像是一个中国小姐姐,后面在这篇爆款博士论文出来的时候,就特意去查了一下,果然是大神~

陈丹琦的博士论文是关于机器阅读理解的,这是近期的一个研究热点,与笔者的专业也比较相关,因此就拜读了一下,并将其主要内容梳理如下:

Chapter 1

这一章主要是对整个thesis的一个overview:

1.1 为啥要研究RC?

介绍了为什么要研究Reading Comprehension,阐述了两点动机:
a. Reading Comprehension可能是评估机器是否理解语言的最合适的任务(可以从人的角度来理解,你说我看了一篇文章,那么怎么证明我理解了这篇文章,可以通过回答关于这篇文章的问题来证明)
b. Reading Comprehension研究好了之后,将会是一个重要的技术,可以用于问答和对话系统领域

1.2 论文研究点

介绍了这篇论文主要研究的东西,主要有两点:
a. Reading Comprehension任务本身,包括问题的形式化定义、组成部分、系统的关键趴,并look deeper into系统所擅长和欠缺的地方
b. 基于在Reading Comprehension系统上所取得的成功,看怎么应用到实际的应用当中去,主要有两个实际应用方向:
1) 开放域的问答任务:主要是结合了信息检索和阅读理解的一个任务,从Web或者百科中找到通用问题的回答
2) 对话中的问答任务:主要结合了对话和阅读理解,着力解决文章是多轮对话时的QA问题(好像不是为了研究对话系统?而是有大量对话上下文的QA?)

PS: 作者主要研究的是Neural Reading Comprehension,这与我们现在Deep Learning的发展强烈相关,也与笔者的专业强相关。

Chapter 2

这一章主要是对RC的一个overview,包含几点内容:

2.1 RC的历史发展

Automatic Reading Comprehension的历史发展:
a. 早期的系统主要是基于规则的,可能会结合一些浅层的语言处理,包括词干提取、指代消解,或者词法分析等。这种的在检索可能包含正确答案的句子这种任务上,大概是能达到30%~40%的准确率。
b. 13~15年涌现了一批机器学习的方法,主要还是基于一些手提特征,包括句法依赖、共指消解、词向量等,来建立模型。这种模型相对于前面的基于规则的方法得到了一些提升,但仍有几点不足:1)过多地依赖于现有的语义分析工具,如依赖关系分析等,这种的可能是在别的专有语料上训练,扩展性差,同时可能会引入噪声;2)很难提取有效的模拟人类水平的特征;3)数据集太小,不足以进行训练
c. 15年以后,数据集也涨上来了(SQuAD等),也同时涌现了一大批深度学习模型(端到端模型,即Neural Reading Comprehension),相比于基于手提特征的分类器,这种模型具有几点优势:1)不需要任何的先验语义特征,减少噪声,也具有可扩展性;2)特征十分稀疏,泛化性能较差;3)解放手提特征的人力

2.2 RC任务定义

主要还是定义成三元组的形式,即(P, Q, A),具体可以参见论文中2.2节的详细定义。

根据Answer的不同形式,可以分为几种问题的定义:1)完形填空:可以从预先设定的选项中或者整个词表集中选出合适的词语或或者实体;2)选择题:从预设答案中选择一个合适的答案;3)抽取式QA:直接从文章中选取一小短句作为答案;4)自然语言回答:直接从词表集中选择词语组成一句话进行回答

评估方式:对于完形填空和选择题,可以用准确率来衡量;对于抽取式QA,可以用是否完全匹配和词语重合度的F1计算;对于自然语言的,可以用BLEU、Meteor、ROUGH这种NLG相关的指标进行衡量。一般对于每个问题,都会设定多个golden的答案,计算这些指标的时候,是选择最大的那个

2.3 RC和QA的区别

RC可以看做是QA的一种?但在其最终目标上,还是强调了不同的东西。总结来看就是,QA是为了实现无指定文本依赖的这种问答,它需要完成很多事情:1)搜寻相关的资料;2)从大量的资料中生成答案;3)考虑用户经常问什么问题等,但RC的主要精力还是在文本理解上,它需要依赖指定的文本,主要测试对这段文本的理解程度。

2.4 数据集和模型

现有RC的成功主要离不开两个因素的驱动:一个是大数据集的出现,一个是端到端模型的演进。这两者是互惠互利的关系,好的数据集驱动了好的模型的发展,而模型的发展又促使更有挑战的数据集的出现。

下面是它们之间发展的时间线:

PS:NRC才兴起了3年,真的是一个巨大的热点了,赶紧入坑啊~

Chapter 3

这一章就开始进入到了大家最关心的模型部分,包括以下几点:

3.1 基于特征的模型

在深度学习模型兴起之前,传统的方法基本都是集中在如何提取更有效的语言特征上,后面就用一些机器学习算法来解决即可,比如LambdaMART、SVM等。作者以他们16年发的论文举了一个例子,里面就提取了8种类型的语言特征,比如在文章中出现的次数啊,单词距离啊,出现的位置等等,这种还是要很靠手工的,所以也就比较麻烦。

3.2 深度学习模型SAR

深度学习模型和大数据集的出现,可以说是带动了MRC的高速发展,各种模型层出不穷,在各个数据集上的分数也越来越高。这里主要介绍一个作者在17年提出的一个比较base的模型:SAR(Stanford Attentive Reader)。它长下面这样:

这里的SAR主要用来解决的是span prediction的MRC问题。设给定一篇文章 p p p,由 l p l_p lp个tokens组成,记为 ( p 1 , p 2 , . . . , p l p ) (p_1, p_2, ..., p_{l_p}) (p1,p2,...,plp),同时给定一个问题 q q q,由 l q l_q lq个tokens组成,记为 ( q 1 , q 2 , . . . , q l q ) (q_1, q_2, ..., q_{l_q}) (q1,q2,...,qlq)。目的是预测一个span ( a s t a r t , a e n d ) (a_{start}, a_{end}) (astart,aend),满足 1 &lt; = a s t a r t &lt; = a e n d &lt; = l p 1 &lt;= a_{start} &lt;= a_{end} &lt;= l_p 1<=astart<=aend<=lp,并且这个span是这个问题的答案。模型将这个任务转化为序列上的二分类问题,即对于文章中的每个词,都预测这个词分别是start和end的得分,最后用这个分数来预测 ( a s t a r t , a e n d ) (a_{start}, a_{end}) (astart,aend)

下面来一步一步看这个模型结构:

  1. 首先是左侧的question编码部分

主要是对question进行编码,先经过embedding层,而后用BiLSTM进行序列建模,最终每个词的表征为:

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 q_1, q_2, ..., q_{l_q} = BiLSTM(E(q_1), E(q_2), ..., E(q_{l_q}); \Theta^{(q)}) \in \R^h q1,q2,...,qlq=BiLSTM(E(q1),E(q2),...,E(qlq);Θ(q))Rh

然后用一个类似self-attention的东西,将这些词编码成一个向量 q q q

b j = e x p ( w q T q j ) ∑ j ′ e x p ( w q T q j ′ ) b_j = \frac{exp(w^{qT}q_j)}{\sum_{j&#x27;}exp(w^{qT}q_{j&#x27;})} bj=jexp(wqTqj)exp(wqTqj)

q = ∑ j b j q j q = \sum_j b_j q_j q=jbjqj

为啥这里要用self-attention?而不用更简单的比如两个方向的最后一个表示拼接之类的?实践证明,这种可学习的能捕捉到所有词信息,并能进行重要性建模的方式会更好!因为总有些词在回答问题的时候会相对重要一些。

  1. 接着是右侧下半部分的passage编码部分

主要是对passage进行编码,在编码的过程中融入了question的信息,可以形象地理解为带着问题找答案。它是先经过输入表征层(可理解为embedding+一堆其他的feature),而后用BiLSTM进行建模,最终每个词的表征为:

p 1 , p 2 , . . . , p l p = B i L S T M ( p ~ 1 , p ~ 2 , . . . , p ~ l p ) ; Θ ( p ) ) ∈ R h p_1, p_2, ..., p_{l_p} = BiLSTM(\tilde p_1, \tilde p_2, ..., \tilde p_{l_p}); \Theta^{(p)}) \in \R^h p1,p2

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值