前言

Question generation (QG)问题生成任务是根据给定的context和answer自动生成问题的任务,它有很多应用场景,比如教育系统、智能虚拟助理系统以及还可以作为增强 QA 系统的补充任务等等。之前很多QG任务都是去生成类似SQuAD的单跳问题即根据一个单独的输入句子生成相关问题,最近又有了很多关于多跳的问题生成任务即Multi-hop question generation (MQG) ,本篇就是一篇优化MQG的paper

论文链接:https://arxiv.org/pdf/2202.06538v1.pdf

idea来源

之前有关MQG的模型都是使用graph-based的网络,即将graph揉到Seq2Seq framework中,但是一些最近的工作(见论文中参考文献10、11)显示了graph并不是必须的,Transformers就可以很好的代替它,于是本篇的作者也采用了Transformers结构。

之前的所有模型都是关注P (Question|〈Answer, Context〉), 但是忽略了P (Answer|〈Question, Context〉),说的再直白点就是只进行了QG,但是QA任务对QG也是有帮助的,事实上QA和QG是一对互帮互助的任务,所以本篇paper在做QG的时候,同时考虑了QA。

框架

如上图,整体框架包括一个BART预训练模型和一个QA模块,大体上的逻辑就是QA模块将 context C和question Q作为输入,然后预测answer中每个token的概率,BART 模块就是专门做MQG任务,就是将context C和answer A作为输入,同时将QA模块输出的score一起揉到输入,然后产生 question Q。下面我们来细看其中的一些细节。

(1)BART

作者之所以选择BART作为backbone是因为其在很多生成任务上都比较好,关于BART模型细节不熟悉的小伙伴可以去看相关paper,很简单。

(2) Answer Relevance Attention

为了建模P(A|C, Q),作者这里提出了两种方法即soft方法和hard方法

(a)Soft attention

这里是假设ground truth question是可以事先拿到的,比如训练集中就存在,那么其具体的做法就是将C和Q作为输入,然后输出A开始和结束的token概率即

(b)Hard attention

这里是假设ground truth question是事先拿不到的,比如测试集中就没有,这个时候作者的做法是首先使用匹配,在context中匹配出answer出现的span,然后命中的span,作者就给一个人为预设的score即论文中的py,其余没有命中的也人为的给另外一个预设的分数即pn ,具体的py=1,pn=0。

(3) Enhanced Cross-Attention

这一步比较关键了,就是怎么将QA的分数揉进QG中,看下面公式吧:

可以看到之前的正常模型在做MultiHeadAttention这一步即softmax这一步的时候是没有+A这一步的,现在就是加了A,而A正是QA产生的分数,只不过这里如上面所讲有model产生的(soft)和强行给(hard)两种方式,说的再直白点就是QA模块当采用soft时就是一个model,当采用hard时其实就是一个正则匹配。

效果

在BLEU-4和ROUGE指标上分别提高了4和8个点,更多实验细节大家如果感兴趣可以去看原论文。

总结

(1)在笔者看来,其实这里模型之所以有效果本质上还是得益于我们以更加显示的方式告诉模型什么才是最重要的。简单粗暴的强行告诉你什么结果才是最重要的,就好像考试的时候直接画考试重点一样,所以大家以后可以试着做简单且最重要的事就好,只要你找到重点,方式的话即使最简单粗暴都可能有效果。

(2)通过这篇paper我们学到的另外一个trick就是逆向思维比如我们解决的是QG,但是可以利用其对偶问题QA。

(3)第三个学到的就是QG这个任务本身即其其实也可以催化出很多应用场景,大家可以试着给自己业务思考一些相关的应用

QA4QG: 一个多跳问题生成任务模型相关推荐

  1. 发布一个实体类属性生成小工具,给开发加点料

    做了很久的代码生成工具,基本上都是基于表生成实体类属性的,把数据库表的信息拿出来,然后之乎者也后生成一个标准的实体类,包含字段.属性.描述等东西. 是基于整个数据库生成整个框架代码的工具,如我的代码生 ...

  2. 从一个页面跳转到用swiper写的全屏滚动页面的指定位置

    问题背景 从一个页面跳转到用swiper写的全屏滚动页面的指定位置,怎么实现啊? 案例 我没有自己写一个全屏滚动,就在Swiper官网找了Swiper在PC端的全屏页面效果展示 若有侵权请留言告知我更 ...

  3. Shell编程 ——for循环、if语句、sleep睡眠。——每秒钟生成一个文件,一共生成60个文件

    实践: 每秒钟生成一个文件,一共生成60个文件,文件名格式是"20190101_101010.txt".但是,第10.20秒,不生成文件. #!/bin/sh for((i=0;i ...

  4. php制作404,利用thinkphp怎么制作一个404跳转页面

    利用thinkphp怎么制作一个404跳转页面 发布时间:2020-12-14 15:46:55 来源:亿速云 阅读:97 作者:Leah 本篇文章给大家分享的是有关利用thinkphp怎么制作一个4 ...

  5. html中a标签根据一个参数跳转不同的页面

    html中a标签根据一个参数跳转不同的页面 a标签 a标签通过调用fun1()方法来跳转不同页面 <a href="javascript:void(0);" onclick= ...

  6. 基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码

    比如 想跳到 mao.aspx 的页面 的div id="s" 的位置 那么 只用<a href="mao.aspx#s"> 就可实现跳转到指定位置 ...

  7. springmvc重定向到另一个项目_springmvc怎么重定向,从一个controller跳到另外一个controller...

    前言:html 有做者写出了部分方法,但没有给出具体实践,小白看后云里雾里,我这里作两件事:1 给出具体代码 2 对已经有的方法给出补充.java 参考:http://my.oschina.net/u ...

  8. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能

    如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...

  9. 我傻眼了:一个完全由 AI 生成的播客,采访了乔布斯

    作者 | 黄楠.施方圆 编辑 | 陈彩娴 最近大火的生成式 AI 又有新动作了! 在 podcast.ai 推出的第一集播客节目里,已故的乔布斯竟然"死而复生"成为首位嘉宾,与美国 ...

最新文章

  1. Flash完美跨域访问的方法
  2. 理解JAVA与C的运行机制
  3. python词云代码简单_Python 简单实现标签词云
  4. 初级php工程师应该具备什么,一名合格的PHP工程师需要掌握的知识结构
  5. 运维学python用不上_不会Python开发的运维终将被淘汰?
  6. Linux内核的中断机制
  7. 《计算机导论》课程论文,计算机导论课程论文
  8. mysql errorcode 1366_MySQL 字符集的问题引起的Error 1366错误 | Soo Smart!
  9. 网络协议从入门到底层原理(9)HTTP/1.1的升级改进(HTTP/2、HTTP/3)
  10. 大数据时代的语音识别,方言也不怕?
  11. 雷霄骅《视音频数据处理入门:H.264视频码流解析》(代码注释版)
  12. Hash与Hash冲突及四种解决方案
  13. hdjs---laravel 框架使用hdjs 实现多图上传功能
  14. 41-【JS编程接口】DOM事件与事件委托
  15. html静态资源加载404,spring security访问静态资源文件出现404
  16. 计算机系统的层次结构(计算机组成原理5)
  17. 蓝旭前端预习5之DOM(文档对象模型)
  18. 2013 国家自然科学基金中标项目软件工程
  19. BlockChain技术系列(三)- fabric协议介绍
  20. 软件测试——接口测试测试用例设计

热门文章

  1. 黑马程序员——C基础之石头剪刀布游戏
  2. QT5.13.0 for IOS虚拟机开发环境配置版本
  3. 要不要做会员?解构会员体系的本质
  4. 竞争性谈判需要遵循哪些原则?
  5. 分布式协议:2PC、3PC 与 Paxos 协议
  6. 五局三胜概率matlab实现,三局两胜和五局三胜概率
  7. cnblogs 美化主题
  8. Pycharm打印显示长列表为省略号
  9. excel 空格变成?
  10. import提示could not be resolved