机器阅读理解 VS 机器问题生成

简介: 机器阅读理解 VS 机器问题生成

机器阅读理解(QA,Question Answer)和机器问题生成(QG,Question Generation)是自然语言处理领域的对偶问题,在工业和学术界都有重要的研究价值。


因业务需要,最近我刚好接触了这两块内容,本文和大家分享一下机器如何答题和出题。


一、机器阅读理解



传统的机器阅读理解(MRC)是NLP语义理解的重要分支,给定文章 和问题 ,输出答案 ,即建模

网络异常,图片无法展示
|
;一般包含三种形式:


1)区间答案:给定一篇文章和问题,模型从文章中抽取答案片段;

2)自由回答:给定一篇文章和问题,模型端到端生成答案;

3)多项选择:给定一篇文章和问题以及多个选项,模型输出正确选项。

其实这三种题型在我们的初中高中考试里都碰到过无数次,语文阅读理解也是我上学时最“畏惧”的题目之一(经常看了后文忘了前文)。



部分数据集例如SQuAD2.0,为了加大难度额外设置了“无答案”问题,即所谓的拒答。其他 MRC 代表性数据集有 CoQA、RACE等。



MRC数据集

关于MRC的实现方法,早期主要基于关键词匹配的检索方法,即根据问题在文章中逐句检索,找到最相关的语句作为答案。


随着深度学习的兴起,机器阅读理解进入神经网络时代。MRC模型的输入为文章和问题,首先模型针对两部分输入各自编码,称为编码层


随后,由于文章和问题之间存在相关性,需要建立二者的联系,加深模型对于上下文的理解。NLP中的Attention等网络非常适合处理该任务,我们将这个模块称为交互层

最后,根据之前建立的语义联系,模型可以在输出层预测问题的答案。此外,在输出层需要确定模型优化时的评估函数和损失函数


整体结构大致如下所示:



SQuAD和CoQA榜单的Top1模型准确率都已超过90%,优于人类测评结果,证明浅层的机器阅读理解任务已经完全解决了。


对MRC任务感兴趣的题同学可以参考这篇综述整体介绍



二、机器问题生成



在实际场景中,相比回答问题,给定一篇非结构化文档让模型自动构建“答案—问题”对同样价值显著,可以大幅缓解人工标注成本。



问题生成demo

因为答案可以通过关键词或序列标注从文档中预先获取(一般是有意义的实体),我们可以直接提供答案和文档,建模


另一方面,也可以把答案生成作为任务的一部分,让模型端到端依次输出,即建模


由于“答案”一般比问题更短,容易想到生成“文档->答案+问题”的难度要低于“文档->问题+答案”,整个过程可以用Seq2Seq框架解决



问题生成任务向上泛化,可以延伸出基于文档的对话生成(Document based Dialog)等任务,给定一篇文档,模型需要生成主题受限的连续对话。


关于该任务,可以参考之前的一篇推文:如何验证声称通过了图灵测试的AI机器人?


三、实验与baseline



机器阅读理解


MRC最流行的基线模型应该是BERT+下游微调的形式,将文档和问题拼接并用“SEP”分割,经过预训练语言模型深度编码后,用两个Dense层分别预测答案在文档中的开始位置和结束位置。


如果文档很长超过了模型的输入长度,需要添加截断/滑窗等操作来处理。



很多比赛的SOTA方案为了提高最终结果,会使用对抗训练、自蒸馏、模型融合或引入额外的神经网络和任务来辅助训练。


对于“拒答”问题,一种简单的方法是对输入序列首字符“CLS”的Embedding做一个二分类,预测是否存在答案。


机器问题生成


MQG目前效果最好同时最优雅的模型是微软的UNILM,官方提供了完整的开源项目

目前的方案需要用户同时提供答案和文档,UNILM直接使用BERT和特殊的Attention-mask将MQG建模成Seq2Seq问题。


在训练阶段,文档和答案部分使用了普通的双向Transformer,模型可以充分学习上下文信息;问题部分使用单向Transformer, 第 个token只能观察到 的token序列,以防数据泄露。


在测试阶段,和GPT等自回归模型类似,UNILM根据P和A递归生成Q,直到输出结束符。



测试文档demo

我测试了已经微调好的UNILM,输入上面这篇文档,模型输出问题:“做哪三件事可以帮助你的大脑良好工作?


从这个demo看,模型的效果还是非常不错的,感兴趣的同学可以来自己试一试。


['What', 'three', 'things', 'do', 'you', 'do', 'to', 'help', 'your', 'mind', 'work', 'well',
相关文章
|
5月前
|
机器学习/深度学习 存储 数据可视化
【学习打卡02】可解释机器学习笔记之ZFNet
【学习打卡02】可解释机器学习笔记之ZFNet
|
存储 计算机视觉
机器看世界(二)
机器看世界(二)
95 0
机器看世界(二)
|
机器学习/深度学习 数据采集 算法
机器学习笔记
机器学习笔记
|
机器学习/深度学习 人工智能 监控
机器看世界(一)
机器看世界(一)
99 0
|
机器学习/深度学习 算法 数据挖掘
机器为什么能学习|学习笔记
快速学习机器为什么能学习。
129 0
机器为什么能学习|学习笔记
第七次笔记:程序的机器级代码表示
第七次笔记:程序的机器级代码表示
87 0
第七次笔记:程序的机器级代码表示
|
机器学习/深度学习 算法 数据挖掘
机器为什么能学习
一、为何机器可以学习? 二、举例 三、机器学习跟数据挖掘的关系 四、总结
机器为什么能学习
|
程序员 Memcache Java
代码是写给人看的,不是写个机器看的
《计算机程序的构造和解释》(简称为SICP) 这本书提到,代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已。如果代码是写给机器看的,那完全可以使用汇编语言或者机器语言(二进制),直接让机器执行。
1507 0
|
机器学习/深度学习 人工智能 自然语言处理
收藏、退出一气呵成,2019年机器之心干货教程都在这里了
从 2016 年起,机器之心每年都会盘点全年的精华教程。去年就有小伙伴留言说要在 2019 年上半年把 2018 年的教程合集「啃下来」。现在都 2020 了,不知道这位朋友啃完没有?要是 flag 没倒,不妨再来一份?
195 0
收藏、退出一气呵成,2019年机器之心干货教程都在这里了
陈春花:我们真的不担心机器像人一样思考,应该担心人像机器一样思考
“2020未来教育论坛暨北京大学未来教育管理研究中心成立大会”在北京大学国际关系学院秋林报告厅举行,论坛的主题是“大变局下的未来教育与可持续发展”。
陈春花:我们真的不担心机器像人一样思考,应该担心人像机器一样思考
下一篇
无影云桌面