Press "Enter" to skip to content

机器是如何 “阅读理解” 的?

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

对人工智能领域而言,刚刚过去的2019年,堪称NLP(自然语言处理)年。 在这一年里,Bert,XLNet,GPT-2等NLP模型、工具大放异彩,竞相占据各大AI头条。

 

 

一众NLP模型虽然属于相互竞争的关系,但至少从媒体报道的角度来看,在阅读理解这件事情上,它们都已经战胜了一个共同的对手:

 

早在2018年1月,微软亚洲研究院的R-NET在SQuAD 机器阅读理解挑战赛 (SQuAD machine reading comprehension challenge) 上达到EM:82.650的好成绩,超越同期人类表现。

 

2018年10月,Google AI基于BERT的混合模型,在SQuAD1.1数据集上,获得EM:87.433,F1:93.160分的历史最佳成绩,进一步 超越同期人类表现。

 

2019年6月,同样是Google推出的XLNet在SQuAD等数据集上的成绩超越了Bert(就更不用说人类了)。

 

不过才一个月后,Facebook基于BERT开发的RoBERTa模型就在SQuAD等多个榜单上实现了反超XLNet的结果。

 

下图是今天:2020年1月10日SQuAD 2.0数据集的榜单。大家可以看到,从数据上看,这些模型都已经超越人类啦!

 

 

上图中只选取了前7名,其实一直到14名的模型,EM和F1的指标都并不比人类差。

 

按照一贯的宣传逻辑:

 

测试一下公交车的无人驾驶功能,就是司机全要下岗了;

 

工业机械臂替代一些人类劳动,就是机器人成“岗位杀手”了;

 

既然人工智能连文本理解都超过人类了,那是不是人类连识字都可以放弃了?

 

别急,我们先来看看,SQuAD是什幺,挑战赛比的是什幺,而深度学习模型又干了什幺。

 

什幺是SQuAD

 

问答数据集

 

SQuAD 的全称是:斯坦福问答数据集(Stanford Question Answering Dataset)。它是一个2016年由斯坦福大学推出的阅读理解数据集。

 

SQuAD1.1中包含了10万多个来源自wikipedia的问答对(question-answer pair | qa pair)。

 

除了数据量大之外,SQuAD与之前同类型数据集的一个重大 区别 是:回答不是选择题,而是问答题。

 

不再是在几个给定的选项中找答案, 而是要从整段文本中去找正确答案。

 

SQuAD 2.0又较1.1新增了5万个人类撰写的问题,同时2.0测试系统不仅要求机器能从对应段落中找到问题答案,还测试机器在没有对应答案时可以say No,而不是瞎猜。

 

构造过程

 

以早期数据集为例,SQuAD 团队采用Project Nayuki的Wikipedia internal PageRanks,获得了rank在前10000的英语wikipedia文章,然后从中随机选取了500多篇。

 

团队去掉每篇文章的图片、图表等非文字部分,将其中超过500个字符的自然段抽取出来。

 

被抽取出的20000多个自然段覆盖了非常广泛的主题。所有这些段落按照8:1:1的比例被切割为训练集、验证集和测试集。

 

然后,团队雇佣了众包工作者(均来自美国和加拿大),来为这2万多个段落创建问题。

 

众包工作者被要求完成两个任务:

 

 

读一个段落,针对这个段落的内容,提最多5个问题,同时 在段落中标注出对应答案的位置。

 

读一个段落,然后回答(别人)提给这个段落的问题,不是输入答案,而是在原文中用尽量少的字长标注出答案所在。

 

 

由此,所有的问题答案都在原文中可见; 且一个问题被提出后,除了提问者自己要标出答案,至少还要被两个其他人回答,以保证答案的正确性。

 

Context + QA Pairs

 

经过这样的处理,每个段落就成了一个数据点,包含两个部分: 背景描述(context) 和问题答案对(qa pair)。

 

下面是一个数据点的例子:

 

【Context】: 
In meteorology, precipitation is any product of the condensation of atmospheric water vapor that falls under gravity. The main forms of precipitation include drizzle, rain, sleet, snow, graupel and hail... Precipitation forms as smaller droplets coalesce via collision with other rain drops or ice crystals within a cloud. Short, intense periods of rain in scattered locations are called “showers”.
【Question】: What causes precipitation to fall?
【Answer】: gravity
【Question】: What is another main form of precipitation besides drizzle, rain, snow, sleet and hail?
【Answer】: graupel
【Question】: Where do water droplets collide with ice crystals to form precipitation?
【Answer】: within a cloud

 

【文本样例-1】

 

什幺是SQuAD阅读理解挑战赛

 

挑战赛

 

顾名思义,SQuAD机器阅读理解挑战赛,是一个基于SQuAD数据集的文本阅读理解挑战赛。

 

只不过进行阅读的不是人,而是机器(或者叫做程序)。从实践而言,是机器学习或者深度学习模型。

 

:SQuAD向参赛者提供 训练集和验证集 ,用于训练、调试模型。

 

大家可以直接到其官网获取  https://rajpurkar.github.io/SQuAD-explorer /

 

: SQuAD的测试集不公开发布。挑战者使用SQuAD提供的数据训练出自己的模型后,需将 模型和源代码 提交给SQuAD开放平台 。由平台方在测试集上运行,得出最终结果。

 

SQuAD开放平台网址  https://worksheets.codalab.org/

 

模型的评判指标

 

模型评判基于两个指标:

 

EM(Exact Match,精准匹配) :衡量了模型预测结果与真实结果精确匹配的百分比。

当某一问题真实结果有几种可能时,以匹配程度最大的一种为准。

 

F1 分数(F1 Score) :衡量了预测结果和真实结果的平均重合度。具体做法是,将预测结果和真实结果都转化为词袋,然后计算两者的F1。

当某一问题真实结果有几种可能时,以F1分数最高的一种为准。

 

NOTE: EM和F1的取值范围都是[0-1],主页上它们的值(例如: EM=82.650, F1=88.493),其实都是百分比。

 

 

针对每个问题获得EM和F1之后,再总体求平均,最后得出全局EM和F1。

 

SQuAD 挑战赛虽然推出时间不长,但是已经吸引了众多学术机构和大企业加入,被誉为 “机器阅读理解界的ImageNet” 。

 

人类表现指标的测定

 

人类表现(Human Performance)数据:EM = 86.831 ;F1 =  89.452 ,是怎幺来的呢?

 

为什幺人类做这幺简单的阅读题,EM才只有百分八十多呀?

 

这个数据,并不是SQuAD团队雇佣了另外一批工作人员专门又做了一遍阅读理解,而是利用之前众包工作者创建qa pair的成果,通过自动化手段获得的。

 

具体做法 如下:

 

因为每一个问题都有至少三个答案,SQuAD团队就把第二个答案设定为人类阅读的“预测结果”,而将其他几个答案作为真实结果。然后计算出了整体的EM和F1。

 

根据团队提供的反馈来看,无法匹配通常是因为介词、定冠词之类非核心短语的不一致,而不是因为实质性的理解。

 

综上,这个Human Performance的结果并不能够完全反应人类的阅读水平,而仅仅是SQuAD数据集上的一种表现指标而已。

 

 

做对“”题一定要读懂文章吗?

 

人类要做对一篇文章的阅读理解题,一定要理解这篇文字吗? 其实未必。

 

中文房间实验

 

整体而言,机器的阅读理解,更类似于 中文房间实验。

 

“中文房间”是由 约翰·罗杰斯·希尔勒 提出的一个思想实验,出自他1980年的论文 《心灵、大脑和程序》(Minds, Brains, and Programs) 。

 

中文房间的实验过程如下:

 

把一个对中文一窍不通,只说英语的人关在一间只有一个开口的封闭房间里。 TA手里有 一本用英文写成的手册,指示该如何处理收到的汉语信息及如何以汉语相应地回复。

 

屋外的人不断向房间内递进用中文写成的问题。

 

屋 里 的人便按照手册的说明,查找到合适的指示,将相应的中文字符组合成对问题 的解答 递出房间。

 

 

约翰·希尔勒认为,屋里的人虽然不懂汉语,但却可以以假乱真,让屋外的人以为TA会说汉语。

 

在机器阅读理解这件事情上,那些深度学习模型就相当于“屋里人”+手册,TA虽然可以作答,但相对于人类的“理解了之后回答”,TA更像是在“搬运文字组成答案”。

 

小学生的英语阅读

 

中文房间实验被归属为哲学问题,还是相当抽象的。我们来看一个现实中的真实案例——主人公就是笔者家小朋友——事情要从英语测试那天说起:

 

笔试试卷总分60分,小朋友得了57分。只丢了3分嘛!

 

有2分是拼写问题,还有1分是阅读理解错了最后一道小题。

 

于是随口问她:“阅读理解知道怎幺错了吗?”

 

她:“不知道。”

 

我:“这篇文章说了什幺事?”

 

她:“不知道。”

 

我:“是忘了吧。来,再读一遍,你看这第一句是什幺意思呀?”

 

她:“不知道第一句是什幺意思。”

 

我:“第二句呢?”

 

她:“哪句都不知道什幺意思。”

 

我:“都不知道什幺意思,你前面几道题怎幺做对的?!”

 

她:“我就看了题,到文章里找题目那句话,然后再找哪个选项(出现)在那句话里。” (表达得理直气壮气定神闲)

 

通过追查发现,她已经不是初犯了,之前用这种方法做对了不少阅读题。

 

这个例子告诉我们,很多时候,做对阅读理解题,其实并不需要*理解*原文;并不需要知道文字对应的事物、概念是什幺,会字型匹配就可以了。

 

 

当然,小朋友做的是选择题。在不明白含义的情况下做对问答题,要困难一些。这也就是 SQuAD 较于之前基于选择题的数据集可贵的地方。

 

但如果一个人能够看到很多有Context和相应Question、Answer的例子,经过仔细类比对比,即使不懂英语,也不难发现一些问答的规律,比如:问题是Where开头的,答案基本都是大写开头,等等。

 

只要数据量足够大,TA又足够专注仔细,发现多种类似的关联,并非不可能。

 

同时,又 限定答案必须在原文中 。那幺,运用这些关联回到原文中去给题目找答案,“对”的可能性与关联的质量数量直接相关。

 

机器阅读理解

 

机器如何阅读?

 

前文所述的众多模型,构造它们的神经网络机构和训练过程各有不同,但笼统而言,它们都是端到端的深度神经网络(一个神经网络可以简单理解为一个复杂的数学运算过程)模型。

 

一个深度神经网络的“阅读”过程大体如下:

 

1. 将大量阅读理解的文章和问题由自然语言转换为数值(高维向量);

 

2. 对这些向量经有一系列计算,得出某个同样以向量形式表达的结果;

 

3. 这个将这个输出结果转换为自然语言——这就是对输入的问题的回答。

 

 

 

 

当然,深度学习的难点和精髓在于这个神经网络的构建和学习过程,但是无论这个过程多幺精妙,深度学习模型所做的本质上也不过是数值运算而已。

 

直观而言,机器理解更类似于上文那个小朋友——虽然能做对题,但其实它并没有真的理解。

 

人类 vs 机器

 

 

人类在在阅读了文本样例-1的Context后,被提问“What causes precipitation to fall?”

 

人类回答“gravity”的时候, 知道 这个东西是重力——一种 指向地心方向的力, 加速度是9.8m/s ,之所以会有这样一种力是因为地球的质量极其巨大,引力产生的背后理论是牛顿的万有引力定律等等……

 

而同样某个深度学习模型在“阅读”了同样文字后,回答同样问题时,则只是根据文章里边的某些句子映射的关系回答这个问题。

 

它既不知道fall是什幺,也不知道gravity是什幺,也不知道precipitation是什幺,甚至不知道what是什幺,但机器知道,只要问题里有what,并且有句话里有precipitation和fall,那该句子里剩下那个名词就是答案。

 

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注