人工智能阅读理解已经超过人类了,是不是连识字都可以省了?

人工智能阅读理解已经超过人类了,是不是连识字都可以省了?

源 | 小象     文 | 李烨

AI的新成绩

人工智能阅读理解已经超过人类了,是不是连识字都可以省了?

2018年1月3日,微软亚洲研究院的R-NET在SQuAD 机器阅读理解挑战赛(SQuAD machine reading comprehension challenge)上达到Exact Match(精准匹配)82.650的好成绩。

人工智能首次在EM指标上,超越了人类在2016年创下的82.304的记录。

之后两天,阿里巴巴iDST也取得佳绩,EM达到82.440,也超过了人类表现。并刷新F1分数至88.607。

不过他们的EM成绩(82.440)略逊于微软亚洲研究院,所以在榜单上iDST和MSRA并列第一。

突破,超越人类表现

人工智能阅读理解已经超过人类了,是不是连识字都可以省了?

突破!计算机文本理解首次超越人类!

——此次成果的宣传用词。

按照一贯的宣传逻辑:

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

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

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

  • 别急,我们先来看看,这个挑战赛比的是什么,得第一的神经网络又干了什么。

    什么是SQuAD

    问答数据集

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

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

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

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

    构造过程

    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

    什么是SQuAD机器阅读理解挑战赛

    挑战赛

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

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

    数据 => SQuAD向参赛者提供训练集和验证集,用于训练、调试模型。(大家可以直接到其官网获取 http://rajpurkar.github.io/SQuAD-explorer/)

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

    模型的评判

    模型评判基于两个指标:

  • EM(Exact Match,精准匹配):衡量了模型预测结果与真实结果精确匹配的百分比。当某一问题真实结果有几种可能时,以匹配程度最大的一种为准。

  • F1 分数:衡量了预测结果和真实结果的平均重合度。具体做法是,将预测结果和真实结果都转化为词袋,然后计算两者的F1。当某一问题真实结果有几种可能时,以F1分数最高的一种为准。

  • 人工智能阅读理解已经超过人类了,是不是连识字都可以省了?

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

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

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

    人类表现(Human Performance)指标测定

    在官网首页最上方的人类表现(Human Performance)数据:EM = 82.304;F1 = 91.221,是怎么来的呢?

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

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

    具体做法如下:

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

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

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

    做对题一定要*理解*文章吗?

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

    曾经,我以为一定是的。但是就在不久前,被我家小朋友开了眼——事情要从英语测试那天说起:

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

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

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

    她:“不知道。”

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

    她:“不知道。”

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

    她:“不知道。”

    我:“不知道是什么意思?”

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

    我:“第二句呢?”

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

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

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

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

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

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

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

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

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

    机器阅读理解

    机器做阅读理解,并没有真的理解。

    这次在SQuAD测试集上,EM指标超越Human Performance的,由微软亚洲研究院研发的R-NET,笼统而言,是一个端到端的神经网络模型。

    创新点

    【1】R-NET在注意力循环网络(attention-based recurrent networks)之上,又添加了一个门(gate),构成了门控注意力循环网络(gated attention-based recurrent network)。

    这种设计所针对的情况是:在回答一个特定问题的时候,Context段落中不同词语的重要程度是不同的。

    【2】同时,R-NET引入了自匹配(self-matching)机制,该机制可以高效地从文本中聚集针对问题的回答。

    R-NET在两个大规模数据集:SQuAD和MS-MARCO上,都取得了很好的结果。

    实现原理

    人工智能阅读理解已经超过人类了,是不是连识字都可以省了?

    上图是R-NET的结构图。

    首先,问题(Question)和文本(Context)被一个双向循环网络(bi-directional recurrent network)分别处理,生成各自的词嵌套向量。(图中最下一层)

    接着,采用门控注意力循环网络(gated attention-based recurrent network)来匹配问题和文本的向量,获取文本中和问题相关的表达。

    然后,采用自匹配(self-matching)注意力机制,在当前文本全局中进行匹配,聚集回答相关的表达(representation),并对其进行改进。

    经过改进的表达被传给最后的输出层,用来预测答案。

    如前所述,R-NET在SQuAD上取得了优异的成绩,在EM分数上超越了人类表现。不过说到底,它还是一种词向量之间的匹配机制。

    虽然在被问“What causes precipitation to fall?” 的时候,R-NET能够回答“gravity”。但它并不知道“gravity”是什么东西,不知道人类在生活中的每一天每一件事都要和gravity相伴。

    具体的技术细节,大家请看:http://www.microsoft.com/en-us/research/wp-content/uploads/2017/05/r-net.pdf

    -END-

    作者:李烨

    人工智能阅读理解已经超过人类了,是不是连识字都可以省了?

    现就职于微软(Microsoft),曾在易安信(EMC)和太阳微系统(Sun Microsystems)任软件工程师。先后参与聊天机器人、大数据分析平台等项目的开发。微信公众号:yuesiyuedu



    版权声明:本文为小象原创文章,转载请联系后台。

    人工智能阅读理解已经超过人类了,是不是连识字都可以省了?