机器阅读理解

机器阅读理解简史

发展动机

传统NLP任务

  1. 词性分析 part-of-speech tagging :判断词性
  2. 命名实体识别 named entity recognition: 识别实体
  3. 句法依存 sytactic parsing: 找到词间关系、语法结构信息
  4. 指代消解 coreference resolution

阅读理解动机

  1. 让机器理解人类语言是AI领域长期存在的问题
  2. 阅读理解能综合评估各项NLP任务,是一个综合性任务
  3. 阅读理解探索更加深层次的理解
  4. 回答问题是检测机器是否读懂文章最好的办法

历史发展

早期系统

  1. QUALM系统 Lehnert,1977年

  2. 早期数据集 Hirschman,1999年
    小学文章,3年级-6年级;60篇 - 60篇:dev - test
    只需要返回包含正确答案的句子即可
    who what when where why

  3. Deep Read系统 Hirschman,1999年
    rule-based bag-of-words,基于规则的词袋模型
    浅层语言处理:词干提取、语义类识别、指代消解

  4. QUARC系统 Riloff and Thelen,2000年
    rule-based,基于词汇和语义对应。还有3和4的结合(Charniak,2000年),准确率在30%-40%左右。

机器学习时代

  1. 三元组(文章,问题,答案)

  2. 两个数据集
    MCTest:四选一;660篇科幻小说
    ProcessBank:二分类;585问题,200个段落;生物类型文章;需要理解实体关系和事件

  3. 传统规则方法
    不使用训练数据集:
    1)启发式的滑动窗口方法
    计算word overlap、distance information

2)文本蕴含方法
用现有的文本蕴含系统,把(问题,答案)对转化为一个statement。

3)max-margin 学习框架,使用了很多语言特征:
句法依存、semantic frames、 指代消解、 discourse relation和词向量等特征。

  1. 机器学习方法

机器学习方法比规则方法好,但是任然有很多不足:

1)依赖于现有语言特征工具。许多NLP任务没有得到有效解决。
任务泛化性差,一般在单一领域训练。语言特征任务添加了噪声。
2)很难模拟人类阅读,难以构建有效特征。
3)标记数据太少,难以训练出效果好的统计模型

深度学习时代
深度学习火热于2015年,DeepMind的Hermann大佬提出了一种新型低成本构建大规模监督数据的方法,同时提出了attention-based LSTM。神经网络效果较好,能更好地在词/句子上做match。

  1. CNN/Daily-Mail数据集

把文章标题/摘要中的名词mask掉,再提问这个名词
使用NER和指代消解等技术
半合成的数据集,存在误差,影响发展

  1. SQuAD数据集
    107785条问答数据,546篇文章
    第一个大规模机器阅读理解数据集,推动了很多机器阅读模型的发展

  2. 深度学习的优点
    不依赖于语言特征工具,避免了噪声误差等
    传统NLP方法特征稀少、难以泛化
    不用去手动构建特征, 工作重心在模型设计上

https://plmsmile.github.io/2019/03/07/53-mrc-brief/

什么是机器阅读理解

机器阅读理解,大家对其并不陌生,在我们过去参加的各种语言考试当中都会有阅读理解的题目,基本上题目都会要求答题者阅读完一篇给定的文章之后回答相关的问题,这里如果把答题者换成机器就可以认为是机器阅读理解。

阅读理解题目的形式是非常多样的,包括选择题、回答题等。但是从主流的学术研究和技术落地来看,我们更加关注抽取式数据理解。抽取式数据理解是指给定篇章P和问题Q,我们希望从P当中抽取出答案A,并且通常答案A是篇章P当中的连续片段。下图提供了一篇文章中关于香格里拉酒店的段落,如果我们问香格里拉酒店的老板是谁,我们希望机器能够从篇章P当中抽取出答案。

机器阅读理解_第1张图片
image.png

我们研究机器阅读理解的意义是什么?从应用价值角度来看,机器阅读理解能够解决传统的检索式问答最后一公里的难题,也就是精准定位答案。传统的检索式问答通常是用户在输入一个问题之后,从海量的文档集中检索出若干候选文档,并对这些若干候选文档做段落切分和排序,最后以段落为单位作为答案直接反馈给用户。但是通常这样的段落还包含了较多的冗余信息,在一些小屏设备,例如智能手机上会浪费很多空间;在一些无屏设备,例如智能音箱上就会播报很多的冗余信息。因此我们希望使用阅读理解的技术,能够对答案进行精准的定位。

机器阅读理解_第2张图片
image.png

得益于近两年阅读理解技术的快速进步,百度已经将阅读理解技术落地在了百度搜索问答当中。如果在百度APP中问刚才所提到的问题,香格里拉酒店的老板是谁,它就能够直接返回一个答案。当然除了这样一些实体或者是数字类的答案,阅读理解的技术还可以帮助更好地定位一些长答案,如图例中的“唐朝是怎么灭亡的”“煎鱼怎么不粘锅”等这样的问题。

机器阅读理解_第3张图片
image.png

阅读理解技术的进步

下图左测是斯坦福发布SQuAD数据集后两年左右的时间内,其排行榜上的最好模型F1提升了80%;下图右侧是百度发布的DuReader数据集,其排行榜上最好的系统ROUGE-L提升了75%。可以看到技术进步是非常快的,而这些技术进步主要的原因有两个:一是数据规模的变大,二是深度学习技术的应用。

机器阅读理解_第4张图片
image.png

首先我们看下数据规模的变化,在2016年之前比较大的数据集,比如微软发布的MCTest只包含了2600余个问题,SQuAD数据集通过众包的方式标注了10万左右的问题,数据集规模直接提高两了个数量级。之后微软发布的MSMARCO还有百度的DuReader也分别包含了10万和30万个问题。

机器阅读理解_第5张图片
image.png

数据规模的增大也使得深度学习的方法在阅读理解任务上得到了快速的进步。我们可以看到,在2016年之前,大家使用更多的是统计学习的方法,包含了大量的特征工程,非常耗时耗力。在2016年之后,SQuAD数据集发布之后,出现了一些基于注意力机制的匹配模型,比如BiDAF、LSTM等等。这之后出现了各种网络结构比较复杂的模型,相关工作试图通过复杂的网络结构去捕捉问题和篇章之间的匹配关系。虽然在这个阶段跳过了一些复杂的特征工程,但是似乎我们又陷入了更加复杂的网络结构工程。

在2018年之后,随着各种预训练语言模型的出现,阅读理解模型效果得到了近一步大幅的提升,因为表示层的能力变的很强大,任务相关的网络结构开始变的简单起来。

机器阅读理解_第6张图片
image.png

阅读理解的更多挑战

在预训练语言模型出现了之后,一些比较简单的阅读理解数据集得到了比较好的解决,比如SQuAD1.1,而针对语言理解应对的不同挑战,更多的数据集被提出。这里面包括了SQuAD2.0,主要是引入了一些无答案的问题;还有面向搜索场景的多文档的数据集,有微软的MARCO,还有百度的DuReader;还有面向对话场景的CoQA、QuAC;以及跨篇章推理的数据集HotpotQA;此外还有近两年比较火的,希望能够通过引入外部知识来做阅读理解的数据集,比如ReCoRD、CommonsenseQA等等。

机器阅读理解_第7张图片
image.png

百度阅读理解技术的研究工作

https://easyai.tech/blog/baidu-nlu-search/
https://mp.weixin.qq.com/s/KQPLDhnlxks4DQNZEhEacQ

你可能感兴趣的:(机器阅读理解)