机器阅读理解 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',
相关文章
|
监控 安全 NoSQL
5 个适用于 Linux 的开源日志监控和管理工具
5 个适用于 Linux 的开源日志监控和管理工具
1216 0
|
4月前
|
监控 安全 数据建模
阿里云SSL证书活动参考,付费证书248元起,免费证书每用户每年可申请20张
2026年阿里云SSL证书活动推出付费证书248元起、新老用户同享8折优惠,覆盖DV到EV全类型,满足个人网站至金融机构多样化需求。活动包括新用户专区优惠、证书加急部署服务、HTTPS加速网关及域名监控等增值服务。此外,阿里云还为用户提供免费版SSL证书,每个自然年可领20张。
636 4
阿里云SSL证书活动参考,付费证书248元起,免费证书每用户每年可申请20张
|
4月前
|
人工智能 负载均衡 算法
【深度硬核】重构AI基础设施:如何用向量引擎解决GPT-5.2时代的“高并发与高成本”悖论?(附企业级落地架构图)
在AI迈向系统工程的下半场,真正的挑战不在算法,而在基础设施。本文从网络延迟、成本控制与架构割裂三大痛点出发,提出基于向量引擎的AI中台化新范式,通过CN2加速、智能负载均衡与统一API接口,实现高可用、可扩展、低成本的生产级部署,助力企业跨越“Demo很丰满,生产很骨感”的鸿沟,让开发者专注业务创新,构建下一代AI原生应用。
390 1
|
4月前
|
存储 人工智能 自然语言处理
阿里云万小智AI建站:低门槛建站新选择,全场景需求一站式满足
阿里云万小智AI建站系统,基于通义大模型,实现智能建站。支持AI生成网站、内容、配图与客服,集成云资源,多端适配,含CN域名赠送,助力个人与企业低门槛快速建站。
|
Java 数据库连接 数据库
Mybatis JDBC No enum constant org.apache.ibatis.type.JdbcType.TEXT异常处理
Mybatis JDBC No enum constant org.apache.ibatis.type.JdbcType.TEXT异常处理
960 0
|
供应链 算法 Java
使用Java构建区块链应用
使用Java构建区块链应用
|
jenkins 测试技术 持续交付
Jenkins配置测试报告后无法正常显示或显示空的解决方法(问题集锦)
根据具体情况逐一排查上述问题,往往可以解决Jenkins配置测试报告无法正常显示或显示空的问题。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
335 0
|
存储 安全 Linux
Linux存储安全:数据加密的实践与策略
【8月更文挑战第19天】数据加密是Linux存储安全的基石之一。通过使用LUKS进行磁盘加密和使用GnuPG进行文件加密,可以显著提高数据的安全性。
614 0
|
机器学习/深度学习 自然语言处理 算法
对话系统之用户模拟器最新进展
学术界做了大量的研究工作,从最基础的 bi-gram 模型 [4],到经典实用的 Agenda-based的方法 [2],再到最近基于深度学习的用户模型 [9, 10],用户模拟器的效果得到了显著提升,也为对话模型的训练提供了有效的方法。
2246 0
对话系统之用户模拟器最新进展
|
机器学习/深度学习 前端开发 数据可视化
数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面
数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面
2114 0