从6篇经典论文看问题生成及其相关技术

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2021.04.21

PaperWeekly原创·作者|Maple小七

学校|北京邮电大学硕士生

研究方向|自然语言处理

该论文提出了一种基于GlobalAttention机制的问题生成模型,并比较了句子级编码和段落级编码的效果。模型的自动评价指标远超基于规则的系统,同时人工评价表明模型生成的问题更规范更流畅,而且在语法和词汇上与原文重复不大(句法角色),具有一定的难度,有的问题甚至需要一些推理来回答(语义角色)。

这也是为什么端到端的方法更为合理,我们不应该依赖于人工编写复杂的规则和传统NLP流水线式的模块串行方法,而是直接采用数据驱动的端到端方法,这样的方法已经在机器翻译、摘要生成和图像生成中取得了巨大的成功,因此作者也首次尝试了将基于GlobalAttention的神经语言模型用于问题生成。

3.5结果

3.5.1测试

作者将SQuAD作为源域,将NewsQA作为目标域来测试SynNet模型,值得注意的是,SQuAD中74.1%的问题的答案可以通过单词匹配和改写得到,而NewsQA中这样的问题类型只占了59.7%,即SQuAQ的问题相对简单。

模型的具体参数不用多说,值得一提的是,作者在训练答案生成模块时引入了NERTagger,因为人工标注不够充分,许多可以作为答案的片段没有得到标注,因此作者假设所有命名实体都可作为答案(这样做合理吗?人类往往只关心有意思的答案和问题,而对某些命名实体提问是不interesting且没有意义的)。

最后,集成的模型能在NewsQA数据集上取得46.6%的F1得分,接近域内全监督MRC模型的表现(F1结果为50.0%),超过域外基线模型7.6%。

3.6误差分析

3.6.1答案生成模块

作者将人工标注的答案与NERTagger生成的答案标注分别用于训练模型,发现基于自动标注的模型比基于人工标注的模型在F1上差了10%左右,说明了人工标注数据的重要性,因为人工标注数据往往是真正的关键语义概念,而自动生成的一些标注就不够linguistic或interesting。

3.6.2问题生成模块

作者为了衡量copy机制的影响,分别采用答案前后两句话和整段文本来生成问题,可以发现窗口越小时,生成的问题与文本的重复越多,而使用与文本大量重合的合成问题来训练模型,效果会变得不好,这再一次说明了人工标注数据的重要性,因为人工标注的问题往往与文本重复得很少,且有的问题涉及解释、推断、归纳,不能完全靠单词匹配来解决。

另外,copy机制也导致了产生的问句和文本高度相似的问题,作者认为可以尝试引入costfunction来促进解码过程的多样化,同时能让迁移的MRC模型取得更好的效果。

在问题的具体类型分析中,基于SynNet的MRC模型在每一类的表现都得到了提升,然而在某些需要一定的推理的问题类型(如Whatwas/did)中仍旧不好,目前来看,这仍旧是一个难以解决的问题,也是一个非常有价值的研究方向。

3.6.3训练

4.2.2问题生成模型

因此,作者设计了一个基于gatedattentionmechanism和dualcopymechanism的encoder-decoder框架。

gatedattentionmechanism:attention机制的改进版,用于控制来自非结构化文本和结构化关系输入的信息流。

dualcopymechanism:用于从两个信息源中copy单词,解决数据稀疏与生词问题,使得生成的问题既有信息量又足够准确。

4.2.3训练

模型的参数不再细说,作者采用了Teacher-forcing训练模型,在测试时,作者选取了具有最低困惑度的模型,生成问题时,采用参数为3的beamsearch寻找局部最优问题序列。

注:Teacher-forcing:一般来说,RNN(LSTM、GRU)的训练有两种mode:(1)Free-runningmode;(2)Teacher-forcingmode。前者就是正常的RNN运行方式:上一个state的输出就做为下一个state的输入,然而这样做是有风险的,因为在RNN训练的早期,靠前的state中如果出现了极差的结果,那么后面的全部state都会受牵连,以至于最终结果非常不好,同时也很难溯源到发生错误的源头,而Teacher-forcingmode的做法就是,每次不使用上一个state的输出作为下一个state的输入,而是直接使用groundtruth的对应上一项作为下一个state的输入,使得训练效果更快更好。然而这么做也有它的缺点,因为依赖标注数据,在training的时候会有较好的效果,但是在testing的时候就不能得到groundtruth的支持了。

(Teacher-forcing似乎要求生成的问句与标注的问句一一对应,这是一种强制性很强的约束,强制单词的一一对应消除了生成语义相似的其他问题的可能性,使得生成问题的多样性下降,同时当生成问题序列时,若与训练过程存在很大的不同,则会导致很大的误差,这类似于模型的过拟合,在训练集内表现良好,在集外则不如人意。)

4.2.4模型评估

作者对SQuAD数据集做了一系列预处理,然后分别与前人的模型比较一系列自动评价指标(BLEU1,2,3,4,METEOR,ROUGE-L),很显然作者的模型在各个指标上均有优异的表现。

4.3结果分析

为了衡量引入tothePointContext之后模型的性能提升幅度,作者将测试数据按平均距离划分成了两部分,可以发现,作者的模型在所有指标上都超过了Hybird模型。同时,在存在长距离依赖(>10)的样本上,作者在Hybird模型上性能的提升更为显著,这正好证明了tothepointcontext在捕捉长距离依赖关系上存在明显有效的作用。

4.3.1模型亮点

另外,这也正好使得模型具有可解释性,因为在生成问题时,我们不能仅仅依赖于答案去提问,同时应该指定需要生成的问题所需涉及的语义概念,而这些语义概念正包括在了抽取的关系中,因此,问题的生成不能依赖于答案周围的单词序列,而应该依赖于语义概念之间存在的关系,比如,下面的例子就说明了根据同位语关系和主谓宾关系生成的问题是不一样的,而以往的模型假设做不到这一点:

ACL2018

5.1问题背景

之前讲过的NQG++论文发表于2017年4月6日,而本篇论文发表于2017年6月14日。这两篇论文解决的问题与思路非常相似,NQG++假定Answerspans是给定的,利用给定的文本和答案生成问题,但是Answerspans仍旧需要得到人工标注,在现实的应用场景下,这样的模型同样不好落地。而Microsoft的这篇论文则是直接在没有答案的文本上,即没有任何标注的文本上生成问题。

作者首先在有监督的QApairsdataset上训练出一个基于DL的提取KeyPhrases的模型,然后利用这个关键短语抽取模型来抽取答案,代替人工标注,最后用Seq2Seq生成问题。对比于采用NERtagger标注答案与基于规则的基线系统,本文给出的模型表现更加优秀。

由于可以直接从无监督的文本中生成QA对,因此本文的模型可以用来生成大量不错的QA对,从而可以考虑用于半监督学习(Semi-supervisedLearning)中的数据增强(DataAugmentation)。

5.2前人工作

5.3模型建立

作者的模型分为两部分(two-stageneuralmodel)首先是提取KeyPhrases(interestingentitiesorevents)作为AnswerCandidates,然后根据提取的KeyPhrase生成问题。

5.3.1关键短语抽取模块

更多阅读

#投稿通道#

让你的论文被更多人看到

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

来稿标准:

·稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

THE END
1.人工智能学习框架人工智能框架人工智能(AI)学习框架是构建和训练AI模型的基础工具,它们提供了一组预定义的算法、函数和工具,使得开发者能够更快速、更高效地构建AI应用。这些框架通常包括一系列的库、工具和接口,涵盖了机器学习、深度学习等多个领域。本文将详细探讨人工智能学习框架的基本概念、分类、优缺点、选择要素、实际应用以及未来发展趋势,以https://blog.csdn.net/hai40587/article/details/142971814
2.外星人台式机bios怎么设置性能最佳外星人电脑bios详解中文第二部分 深度学习框架构建 1更换源 换源可以通过国内镜像网站快速下载Ubuntu的各种包,有多种镜像网站可以选择,此处以添加中科大的源为例说明: cd /etc/apt/ sudo cp sources.list sources.list.bak sudo gedit sources.list 1. 2. 3. 打开source.list,将下面的源添加到文件头部 https://blog.51cto.com/u_16213645/11553079
3.深度学习框架keras模块安装安装环境: 1. Keras 介绍 Keras(http://keras.io/)是一个基于Theano或TensorFlow作为后端的深度学习框架,它的设计参考了Torchhttps://www.jianshu.com/p/4db6955fcb96
4.走进工业级图神经网络框架GraphLearn走进工业级图神经网络框架GraphLearn 简介:阿里巴巴高级技术专家赵昆在阿里云开发者社区特别栏目《周二开源日》直播中,分享走进深度学习的又一颗明珠:图神经网络,并向大家介绍阿里巴巴自研的图神经网络框架GraphLearn。本文为直播内容文字整理,看直播回放,请点击文首链接~https://developer.aliyun.com/article/778069
5.昆仑XPU芯片运行飞桨飞桨框架昆仑XPU版安装说明百度飞桨 PaddlePaddle v2.0 深度学习教程 首页 夜间 小程序 阅读 书签 飞桨框架昆仑XPU版安装说明来源:百度飞桨 浏览1686 扫码 分享 2021-03-02 20:16:gcc/g++版本:8.2+ 源码编译安装步骤: Paddle依赖cmake进行编译构建,需要cmake版本>=3.10,如果操作系统提供的源包括了合适版本的cmake,直接安装即可,否则需https://www.bookstack.cn/read/paddlepaddle-2.0-zh/68abe6af2b209ede.md
6.如何学习嵌入式(精选8篇)而后者虽然移植了java虚拟机对嵌入式系统速度造成的一定的影响。但由于java资源的丰富,对前述功能的实现提供了极大的便利。可以有效的缩短研发的时间。通过以上比较,本文将认为第二种方案更适合系统的要求。所以采用第二方案来作为智能化围棋学习系统基本框架。如下是我们主要要做的工作:https://www.360wenmi.com/f/filee6whhgpp.html
7.OpenCV2学习笔记之视频流读取与处理python为了对视频的每一帧进行处理,这里创建自己的类VideoProcessor,其中封装了OpenCV的视频获取框架,该类允许我们指定每帧调用的处理函数。 首先,我们希望指定一个itImg++; return frame.data != 0; } } } public: // 默认设置 digits(0), frameToStop(-1), VideoProcessor() : callIt(false), delay(-1)https://www.jb51.net/article/234047.htm
8.归纳策略范文12篇(全文)一、从理论着手, 建立知识框架 高中数学教师在教学中, 总是会碰到各种问题, 在面对不同的学生, 不同的知识和题目类型的同时, 也是一个不断总结和归纳的过程.对高中数学教师而言, 总结和归纳是保证教学策略制定充满科学性的前提, 也是教学效率不断提高、教学质量不断提高的基本保障.为此, 高中数学教师不仅仅要学会https://www.99xueshu.com/w/ikey47vavt8e.html
9.飞桨框架昇腾NPU版安装说明使用文档飞桨框架NPU版支持基于华为鲲鹏CPU与昇腾NPU的Python的训练和原生推理。 环境准备? 当前Paddle昇腾910 NPU版支持的华为CANN社区版5.0.2.alpha005,请先根据华为昇腾910 NPU的要求,进行相关NPU运行环境的部署和配置,参考华为官方文档CANN社区版安装指南。 Paddle 昇腾910 NPU版目前仅支持源码编译安装,其中编译与https://www.paddlepaddle.org.cn/documentation/docs/zh/2.2/guides/09_hardware_support/npu_docs/paddle_install_cn.html
10.Ubuntu20.04安装cuda10.1「建议收藏」腾讯云开发者社区CUDA的主要用途是深度学习,而目前主流的深度学习框架Tensorflow2最高支持CUDA 10.1,因此本文讲解在Ubuntu 20.04系统上安装CUDA 10.1的主要过程。https://cloud.tencent.com/developer/article/2128936
11.学习C++Web开发所需的技能和资源有哪些?C++c++++ web 开发需要掌握 c++ 编程基础、网络协议和数据库知识。必备资源包括 cppcms、pistache 等 web 框架,cppdb、pqxx 等数据库连接器,以及 cmake、g++、wireshark 等辅助工具。通过学习实战案例,如创建简单的 http 服务器,可以开启 c++ web 开发之旅。 https://www.php.cn/faq/787679.html
12.最新g++版本支持c++17标准21xrx.com在此之前,程序员已经可以通过Clang++等其他编译器来使用C++17标准的各种功能。不过,这次G++的加入无疑为开发人员带来了更多的选择,使得他们可以选择更喜欢的语言和框架进行开发。 无论是G++还是其他编译器,它们对C++17标准的支持都表明了该语言的持续更新和发展。这也是面向编程人员的一种更好的方式,因为它能够快速地https://21xrx.com/Articles/read_article/189208
13.TensorFlow框架中OpenCL算子的实现及集成.docx其中,Google公司研发的TensorFlow[4]是应用最为广泛的机器学习框架之一,其稳定的API与易于理解的计算流程对开发者非常友好,对Python语言和科学计算的工具包的支持也使深度学习应用的开发更为快捷高效。TensorFlow支持在多种平台上使用,开发者也能够将TensorFlow开发的应用部署在多核CPU、GPU和FPGA等设备上。此外,TensorFlowhttps://max.book118.com/html/2022/0717/8054135100004120.shtm
14.linux下ftp客户端,实现扫描ftp服务器端文件,把列表保存到数据linux 下 ftp 客户端,实现扫描ftp服务器端文件,把列表保存到数据库中编辑执行步骤//g++ -I.. -c rlftp.cpp ConfigParser.cpp ConfigParser.h //g++ -L.. -o rlftp rlftp.o ConfigParser.o -lftp++ -lmysqlclient LD_LIBRARY_PATH=.. ./rlftp ftp客户端 实现扫描ftp服务器端文件列表 保存到mysql数据https://www.iteye.com/resource/hymaliang1120-12927834
15.CppCloud:分布式微服务框架,支持多种语言sdk接入,c/c++后端确保? 本产品旨在提供适合多语言开发的分布式微服务框架,功能包括服务治理(注册/消费),分布式配置,就近访问g++ 4.8以上支持c++11 python部分 python 3.5以上 requests 无特别要求,本人开发时用2.18.4 setuptools? ? 用简单的demo,帮助开发者快速接入CppCloud,降低学习成本,主要介绍sdk的使用。 cppcloud_servhttps://gitee.com/ho999/CppCloud
16.学链Vue.js是一套构建用户界面的轻量级MVVM框架,与其他重量级框架不同的是, Vue.js 的核心库只关注视图层,并且非常容易学习,很容易与其它前端技术或已有的项目整合。 本系课程,主要分为两部分完成。第一部分:掌握Vue.js设计规范的语法。 第二部分:通过一些实际的前端案例来强化同学们对该技术的灵活运用。学完本系列课http://www.studylink.com.cn/