机器阅读理解 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',
相关文章
|
7月前
|
测试技术 API 容器
|
4月前
|
调度
项目环境测试问题之单机调度会导致项目环境大部分的机器被闲置如何解决
项目环境测试问题之单机调度会导致项目环境大部分的机器被闲置如何解决
|
7月前
|
机器学习/深度学习 存储 数据可视化
【学习打卡02】可解释机器学习笔记之ZFNet
【学习打卡02】可解释机器学习笔记之ZFNet
|
存储 计算机视觉
机器看世界(二)
机器看世界(二)
109 0
机器看世界(二)
|
机器学习/深度学习 数据采集 算法
机器学习笔记
机器学习笔记
|
机器学习/深度学习 人工智能 监控
机器看世界(一)
机器看世界(一)
113 0
|
机器学习/深度学习 算法 数据挖掘
机器为什么能学习|学习笔记
快速学习机器为什么能学习。
机器为什么能学习|学习笔记
第七次笔记:程序的机器级代码表示
第七次笔记:程序的机器级代码表示
100 0
第七次笔记:程序的机器级代码表示
|
机器学习/深度学习 算法 数据挖掘
机器为什么能学习
一、为何机器可以学习? 二、举例 三、机器学习跟数据挖掘的关系 四、总结
机器为什么能学习
|
机器学习/深度学习 人工智能 自然语言处理
收藏、退出一气呵成,2019年机器之心干货教程都在这里了
从 2016 年起,机器之心每年都会盘点全年的精华教程。去年就有小伙伴留言说要在 2019 年上半年把 2018 年的教程合集「啃下来」。现在都 2020 了,不知道这位朋友啃完没有?要是 flag 没倒,不妨再来一份?
202 0
收藏、退出一气呵成,2019年机器之心干货教程都在这里了

热门文章

最新文章