论文浅尝 | 问题生成(QG)与答案生成(QA)的结合

本文转载自公众号:徐阿衡



梳理一下 MSRA 3 篇关于 QG 的 paper:


  • Two-Stage Synthesis Networks for Transfer Learning in Machine Comprehension

  • Question Answering and Question Generation as Dual Tasks

  • A Joint Model for Question Answering and Question Generation

QG 系列其他的笔记(见徐阿衡公众号):

  • 论文笔记 - Machine Comprehension by Text-to-Text Neural Question Generation

  • 论文笔记 - Semi-Supervised QA with Generative Domain-Adaptive Nets

目前的 QA 大多是 抽取式(extractive)的任务,答案是文本中的一个连续片段,通常是命名实体这类语义概念,而 QG 是生成式的(abstractive),问句是完整句子,部分单词可能是文档中没出现过的,很多情况下,问句和答案的语言结构不同,因此甚至可以看做两种不同类型的数据。所以第 1 篇 SynNet 就把答案生成当作序列标注任务,把 QG 当作生成任务;第 3 篇 Joint Model 从另一个角度出发,把 QA 和 QG 都当作生成任务,放到同一个 encoder-decoder 框架下,用转变输入数据来实现联合训练,用 pointer-softmax 来处理抽取/生成问题。

另外,QA 和 QG 任务在概率上是有联系的,可以通过 q、a 的联合概率分布联系起来,P(q|a) 就是 QG 模型,P(a|q) 类似 QA 模型,于是第 2 篇 dual tasks 就把这两个任务当做对偶任务,用一个正则项把两个任务联合在一起640?



Two-Stage Synthesis Networks for Transfer Learning in MC




我们知道 MRC 系统的输入是 (passage, question, answer) 三元组,q 和 a 依赖人工标注,这是制约 MRC 落地应用的最大问题之一,这篇 paper 提出了 SynNet,利用已有领域中可用的监督数据为基础进行训练,训练完成后迁移到新的领域中,根据新领域的文档,模型能自动合成与文档 p 相关的 (q, a) 对,替代昂贵的人工标注,为 MRC 的迁移落地提供了便利。

SynNet 把 QA 对(question-answer pair)的生成过程 P(q,a|p) 分解为条件概率 P(a|p) P(q|p,a) ,也就是下面两个步骤:

  1. 基于文档生成答案 P(a|p)
    学习文档中的 potential “interestingness” pattern,包括文章中可作为常见问题答案的关键知识点、命名实体或语义概念
    由于答案是文档的片段,所以看做序列标注任务

  2. 基于文档和答案生成问题 P(q|p,a)
    学习生成自然语言的完整问句
    作为生成任务

640?

答案合成模块(Answer Synthesis Module),序列标注问题,训练了一个 IOB tagger (4 种标记,start, mid, end, none)来预测段落里的每个单词是不是答案。结构很简单,BiLSTM 对 p 的词向量进行编码,然后加两个 FC 层和一个 Softmax 产生每个单词的 tag likelihoods,选择连续的 span 作为 candidate answer chunks,喂给问题生成模块。

问题合成模块(Question Synthesis Module)学习的是640。模型结构是 encoder-decoder + attention + copy mechanism。通过在段落词向量中加入一个 0/1 特征来表示单词是不是出现在答案中。

训练算法:
640?
在源领域上训练 SynNet,产生新领域的 QA 对,然后和源领域的数据一起来 finetune 源领域的 MC 模型(用 SGD),源领域和新领域的数据采样比是 k:1(paper 里设的 k=4),这主要是为了处理合成数据的噪音问题而进行的正则化操作。

测试阶段也就是用 finetune 完成的 MC 模型回答新领域的问题时,可以对不同时刻的 checkpoints 的 answer likelihoods 做平均,然后用 DP 找到最佳的 answer span 640?,最大化 640?,复杂度是 linear,和 BiDAF 的逻辑相同。

难得的是这篇 paper 还提供了实现细节,其中一个 trick 是,在训练问题合成模块时,他们只用了 SQuAD 的训练集,但是在答案合成模块,还引入了 NER Tagger 来增强答案数据,基本假设任何命名实体都可以被当做某个问题的潜在答案。

在 Ablation Studies 和 Error Analysis 中还提到了一些有趣的发现,具体可以看论文。待解决的问题一个是 copy 机制导致的产生的问句和 paragraph 高度相似的问题,可以通过改进 cost function 在促进解码过程的多样化,另一篇 paper 有提到。还有一个问题是 SynNet 在解决比如数字、人名这种问题的效果很好,但是在需要一些推理的问题,像是 what was / what did 这些问题就很弱了,这也是后续的研究方向。

这篇 paper 个人非常喜欢,实现细节和一些结果的分析都很赞。




Question Answering and Question Generation as Dual Tasks




把 QA 和 QG 当作对偶任务。关键还是下面这个式子:

640?

P(q|a) 即 QG 模型,和 P(a|q) 即 QA 模型可以通过联合概率联系起来,于是这里把 QA 和 QG 当作对偶任务,Seq2Seq 实现 QG,RNN 实现 QA,通过一个正则项把两个任务联系起来,联合训练一起学习 QA 和 QG 的参数,损失函数服从下面的条件:

640?

其中640?分别对应答案句和问句的语言模型。

这里 QA 任务不再是在 context 里选 answer span 的任务,而被看作是在一组候选答案句集合中选择可能性最高的 answer sentence 的一个排序任务。也就是说,这里的 a 是答案所在的句子,而不是前一篇 paper 提到的简单的语义概念/实体。

QG 任务还是一个生成任务,输入是答案句 a。要注意的是这里 QA 和 QG 的输入都没有 p,都只考虑了句子层面的信息。

和之前介绍的 GDAN 不同的是,这里 QA 和 QG 的地位是相同的,也并不需要预训练 QA。

下面看一下模型细节:
QA 模型 分别用 BiGRU 对 q 和 a 进行编码,拼接 last hidden state 作为向量得到 v_q 和 v_a,question-answer pair 的表达由四个向量拼接构成
640?, c(q,a) 表示 q,a 的共现词,对应的词向量表达通过引入额外的 embedding 矩阵 640?实现,d_c 表示词共现向量的维度 |V_c| 则是词汇表大小,640?也就是 qa 相关性函数通过对 v(q,a) 进行线性变换加 tanh 激活得到,最后 softmax 得到概率,损失函数还是 negative log-likelihood。

QG 模型 还是经典的 encoder-decoder + attention 模型,输入是 answer sentence,还是用 BiGRU 进行编码,连接两个方向的 last hidden state 作为 encoder 的输出以及 deocder 的初始状态。对 attention 做了改进,希望模型能记住 answer sentence 中哪些 context 被使用过了,在产生 question words 的时候就不再重复使用。

640?
拼接 s_t 和 c_t,接一个 linear layer 和 softmax 得到输出单词在词汇表上的概率分布,一个 trick 是 softmax 输出维度取 top frequent question words,OOV 用 attention probability 最高的词替换,相当于对文档单词的一个 copy 机制,当然也可以用 pointer network 来做。

模型每次输入 m 个 QA 对正例和 m 个负例,通过 QG 和 QA 各自模型计算各自 loss,再加上一个正则化项一起计算参数梯度并更新参数。
640?
正则化 dual 项利用了 QA 和 QG 的对偶关系:
640?

考虑到 640?和 QA 模型的输出有差异,因此给定 q,sample 一系列 answer sentences A’,从中得到 640?

640?

在实现细节里提到模型对 question words 和 answer words 用了不同的 emebdding 矩阵来学习特定的语义。另外 sampled answer sentence 来自其他的 passage,这降低了 QA 的难度。

结果分析再次证明了 word co-occurrence 是一个简单但非常有效的特征。

实验设计部分不大能看出模型的实际效果,不明白为什么不直接刷榜看一下结果。另外 QG 部分的评价指标也只用了 BLEU-4 分数,对 fluency 没有进行说明。

We first report results on the MARCO and SQUAD datasets. As the dataset is splitted by ourselves, we do not have pre- viously reported results for comparison.




A Joint Model for Question Answering and Question Generation



这篇和上篇都是讲怎么同时生成答案和问题,不同的是上篇通过一个 dual regularization term 将两者联合起来训练,这里把 QA 和 QG 任务都作为生成任务,模型基本结构还是 Seq2Seq + Attention + Pointer Softmax,和之前提到的一篇 论文笔记 - Machine Comprehension by Text-to-Text Neural Question Generation 差不多。输入是文档,以及一个 condition sequence,在 QA 任务里表现为 question word sequence,给定 question 生成 answer;QG 任务里表现为 answer word sequence,给定 answer 生成 qestion,condition 由一个 0/1 变量来控制,表示收到的数据是给 a-gen 还是给 q-gen。Joint training 通过对输入数据的转换实现。

Pointer-softmax 一定程度上能解决 extractive/abstractive 的混合问题,通过选择 copy 文档的单词还是生成词汇表的单词来产生下一个单词,表达了 extractive/abstractive 的切换。这带来的一个额外好处是可以产生 abstractive answer

具体来讲,Encoder 里,词向量和字向量拼接得到 word embedding,其中字向量用 BiLSTM 产生,word embedding 经过另一个 BiLSTM 编码得到文档编码 h^d_i 和条件序列的编码 h^c_j。

条件序列的另一种编码是“抽取式的”,也就是从 document encoding 中直接抽取出出现在 condition sequence 中的单词的对应部分,这和 论文笔记 - Machine Comprehension by Text-to-Text Neural Question Generation 原理相同。然后抽取的向量经过 BiLSTM 产生对应编码 h^e_k。两种条件序列的编码 h^c_j 和 h^e_k 的 final state 分别为 h^c_J 和 h^e_K。在 a-gen mode 也就是对问句进行编码是采用 h^c_J,在 q-gen mode 也就是对答案进行编码时采用 h^e_K,相当于模拟了 extractive 和 abstractive 的特性。

Decoder 用了 pointer-softmax mechanism,比之前的工作复杂一些,具体可以戳阅读原文或者看 paper。

损失函数
640?
实现细节里,encoder 用了整个词表,decoder 用了训练数据里 gold question 中的频率最高的 100 个单词的词表。另外一个 trick 是 decoder 保留了之前产生的单词的历史来防止输出的重复。

640?
联合训练下,a-gen 的表现有显著提升,q-gen 略有下降。一个直观结论是,模型并没有提高 QA 任务的效果,但是增加了 QG 的能力。

过去大多模型都把 QA 当做 point to answer span within a document 而不是 NLG 任务,这一篇的创新之处就在于把 QA 也当作了生成问题,与 QG 放到同一个框架下,用 pointer-softmax 来调节生成/抽取的比率,给 QA 也增加了“生成”的能力。

一个显著优势是,和上一篇 paper 相同,这里不需要预训练 QA,可以直接用 QG 辅助 QA 的实现同时给模型提供QG 的能力。

a key distinction of our model is that we harness the process of asking questions to benefit question answering, without training the model to answer the generated questions.

MSRA 出品的 QG 系列的 paper 在各自模型及实现上有共性也有个性,一些 trick 基本是通用的,具体的实用性能还待具体领域的实践检验。



OpenKG.CN


中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

640?wx_fmt=jpeg

点击阅读原文,进入 OpenKG 博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卖萌屋算法岗面试手册上线!通往面试自由之路

一只小狐狸带你解锁 炼丹术&NLP 秘籍作为算法工程师,基础知识的重要性自然不必多说。虽然在有些项目中比较难感受到基础的作用,但扎实的coding能力,对算法本质和适用情况的理解,始终是决定工作效率与未来发展的重要feature。这…

2019头条抖音Java 3面真题,含面试题答案!

一面: hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移? Linux的共享内存如何实现,大概说了一下。 socket网络编程,说一下TCP的三次握手和四次挥手 同步IO和异步IO的区别&#…

深入理解XGBoost

本文的主要内容概览:1 XGBoost简介XGBoost的全称是eXtreme Gradient Boosting,它是经过优化的分布式梯度提升库,旨在高效、灵活且可移植。XGBoost是大规模并行boosting tree的工具,它是目前最快最好的开源 boosting tree工具包&am…

会议 | ESWC2018 见闻

本文转载自公众号:南大Websoft 。 ESWC2018于2018年6月2日在希腊克里特岛上的伊拉克利翁举行。会议包括两天的前会(workshops, tutorials) 和三天的正会,参会人数约300人。KeynotesKeynote1: Structural S…

POJ 1804 逆序数 解题(归并排序)

文章目录解法1:直接双重循环求解,n*n复杂度解法2:采用归并排序求解,复杂度nlgn题目链接 http://poj.org/problem?id1804题目大意:让一串无序数,在只能相邻数字交换的前提下,最短的次数变成有序…

史上最全memcached面试26题和答案

Memcached是什么,有什么作用? Memcached是一个开源的,高性能的内存绶存软件,从名称上看Mem就是内存的意思,而Cache就是缓存的意思。Memcached的作用:通过在事先规划好的内存空间中临时绶存数据库中的各类数…

深度学习笔记(六):Encoder-Decoder模型和Attention模型

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/u014595019/article/details/52826423 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_h…

会议 | 2018年全国知识图谱与语义计算大会(CCKS 2018)

2018年全国知识图谱与语义计算大会China Conference on Knowledge Graph and Semantic Computing (CCKS 2018)2018年8月14日-17日&#xff0c;天津征稿截止: 2018年5月18日全国知识图谱与语义计算大会&#xff08;CCKS: China Conference on Knowledge Graph and Semantic Comp…

C++ Primer 第11章 泛型算法 学习总结

文章目录11.2 算法11.2.1 只读算法**1.find函数****2.accumulate函数****3.find_first_of 函数**11.2.2 写容器元素算法1.fill函数2.fill_n函数3.back_inserter插入迭代器4.copy函数5.算法的 _copy 版本11.2.3 排序算法sort&#xff08;起始&#xff0c;结束&#xff09;&#…

到底什么是生成式对抗网络GAN?

时间&#xff1a;2017-05-11 男&#xff1a;哎&#xff0c;你看我给你拍的好不好&#xff1f; 女&#xff1a;这是什么鬼&#xff0c;你不能学学XXX的构图吗&#xff1f; 男&#xff1a;哦 …… 男&#xff1a;这次你看我拍的行不行&#xff1f; 女&#xff1a;你看看你的…

分布式缓存Redis+Memcached经典面试题和答案

Redis相比memcached有哪些优势&#xff1f; &#xff08;1&#xff09; memcached所有的值均是简单的字符串&#xff0c;redis作为其替代者&#xff0c;支持更为丰富的数据类型 &#xff08;2&#xff09; redis的速度比memcached快很多 &#xff08;3&#xff09; redis可以…

卖萌屋福利场:《机器阅读理解》免费送送送!

一只小狐狸带你解锁 炼丹术&NLP 秘籍在送书之前&#xff0c;先来了解一下机器阅读理解是什么&#xff5e;已经很熟悉的小伙伴可以快速下拉进入福利场~机器阅读理解是什么机器阅读理解&#xff08;Machine Reading Comprehension&#xff0c;MRC&#xff09;是一种利用算法使…

CCKS 2018 | 工业界论坛报告简介

China Conference on Knowledge Graph and Semantic Computing 天津&#xff0c;2018年8月14日-8月17日主题1&#xff1a;智能交互中的知识图谱时间&#xff1a;2018.08.17 &#xff08;14:00-15:00&#xff09;地点&#xff1a;天津滨海一号大会场报告1&#xff1a;报告题目&a…

BAT Java面试笔试33题:JavaList、Java Map等经典面试题!答案汇总!

JavaList面试题汇总 1、List集合&#xff1a;ArrayList、LinkedList、Vector等。 2、Vector是List接口下线程安全的集合。 3、List是有序的。 4、ArrayList和LinkedList数据结构不一样&#xff0c;前者用在查询较多的场合&#xff0c;后者适用于插入较多的场合。 5、ArrayL…

基于在线百科知识库的多义词词义消歧项目

WordMultiSenseDisambiguation WordMultiSenseDisambiguation, chinese multi-wordsense disambiguation based on online bake knowledge base and semantic embedding similarity compute,基于百科知识库的中文词语多义项获取与特定句子词语语义消歧. 项目地址:https://gith…

文本查询TextQuery类文件编写

读取用户指定的任意文本文件&#xff0c;然后允许用户从该文件中查找单词。查询的结果是该单词出现的次数&#xff0c;并列出每次出现所在的行。如果某单词在同一行中多次出现&#xff0c;程序将只显示该行一次。行号按升序显示&#xff0c;即第 7 行应该在第 9 行之前输出&…

什么是小样本学习?这篇综述文章用166篇参考文献告诉你答案

一只小狐狸带你解锁 炼丹术&NLP 秘籍来源&#xff1a;机器之心什么是小样本学习&#xff1f;它与弱监督学习等问题有何差异&#xff1f;其核心问题是什么&#xff1f;来自港科大和第四范式的这篇综述论文提供了解答。数据是机器学习领域的重要资源&#xff0c;在数据缺少的…

CCKS 2018 | 前沿技术讲习班

时间&#xff1a;8月14日-15日地点&#xff1a;南开大学泰达学院大报告厅日程安排时间主题特邀讲者8月14日上午&#xff08;8:30 – 10:00&#xff09;Deep Knowledge Graph Reasoning&#xff08;10:30-12:00&#xff09;Exploiting and Reasoning With Open Knowledge GraphW…

Java必考题目之JVM面试题目和答案

JVM内存模型 首先我们来了解一下JVM的内存模型的怎么样的&#xff1a; 1.堆&#xff1a;存放对象实例&#xff0c;几乎所有的对象实例都在这里分配内存 堆得内存由-Xms指定&#xff0c;默认是物理内存的1/64&#xff1b;最大的内存由-Xmx指定&#xff0c;默认是物理内存的1/4…

听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势

2020年的今天&#xff0c;我们的专业是deep learning&#xff0c;但是我们要keep learning&#xff0c;每天早上一睁眼&#xff0c;arxiv每天更新上百篇的论文&#xff0c;著名微博博主爱可可-爱生活保持也在推送最新的deep learning资讯和论文。我们不缺少计算机视觉论文&…