QG-2019-AAAI-Improving Neural Question Generation using Answer Separation
Improving Neural Question Generation using Answer Separation
本篇是2019年发表在AAAI上的一篇文章。该文章在基础的seq2seq模型的基础上提出了answer-separated seq2seq模型,并通过实验证明该模型显着减少了包含答案的不正确问题的数量,达到了NQG(自然语言生成)模型的state-of-the-art。(2019)。下载点击此处。同时,改论文需要对含注意力机制的seq2seq有基本了解,可以点击此处下载阅读
1 问题
由于文本数据的非结构化性质,从段落中自动生成问题 (QG) 是一项具有挑战性的任务。 NQG的主要问题之一是如何取文章中的问题目标,简称目标答案。 指定问题目标对于生成自然问题是必要的,因为文章中可能有多个目标答案。
比如在上图中,有人、时间、位置等信息, 在不将目标答案作为额外输入的情况下,现有的 NQG 模型更倾向于生成没有特定目标的问题。这是一个基本限制,因为最近的 NQG 系统主要依赖于 RNN 序列到序列模型,而 RNN 不具备对高级可变性进行建模的能力。
为了克服这个问题,许多文章通过使用答案的位置特征来合并目标答案,然而这些方法生成的问题中有很大一部分是包含目标答案中的单词。特别是还有些模型使用复制机制,来促使原始段落中的单词能够更多的出现在问题里,更加剧了这一问题。
2 创新点
基于以上问题,该文章的主要创新点是提出将目标答案与原始文章分开来解决这个问题。
首先,如图一使用mask标记 将目标问题的答案与题目进行分离,有助于模型识别与目标答案相关的问题类型,因为模型在标记的帮助下学会了捕获目标答案的位置和上下文信息。
此外,提出了一个名为keyword-net的新模块作为新模型的一部分,它从之前分开的目标答案中提取关键信息。 keyword-net使新的 NQG 模型始终能够感知目标答案,弥补了答案分离导致的信息不足。
最后,采用了 (Ma et al. 2018) 提出的检索式词生成器,它可以在生成过程中更好地捕捉词语义.
如上图,结构主要如下:
- encoder:目标答案和分离答案的原始段落分别对应两个encoder,对于分离答案后的段落,与基础模型相同,使用一个个单层双向LSTM(见图2第一个)。
对于答案编码encoder,使用另一个单层双 LSTM 对目标答案 \(x^{a}\) 进行编码。 在答案编码器的最后一个时间步中,将每个 LSTM 的隐藏状态串联起来,形成最终的隐藏状态 \(h_{final}^{a}\) ,它代表了答案\(x^{a}\) 的整体特征:
\overrightarrow{h_{j}^{a}} &=\overrightarrow{L S T M}\left(x_{j}^{a}, \overrightarrow{h^{a}}{ }_{j-1}\right) \\
\overleftarrow{h_{j}^{a}} &=\overleftarrow{L S T M}\left(x_{j}^{a},{h^{a}}{ }_{j+1}\right) \\
s_{0} &=h_{\text {final }}^{a}=\left[\overrightarrow{h_{m}^{a}} ; \overleftarrow{h_{m}^{a}}\right]
\end{aligned}}
\]
- decoder:为了利用来自文章和目标答案的足够信息,对于解码设计了基于LSTM的答案分离解码器。答案分离解码器通过以下三种方式利用文章和目标答案的特征。
- 用最终答案向量\(h_{final}^{a}\)初始化解码器状态。
- 结合答案的关键特征,即提取目标答案中的关键信息来消除问题目标的歧义。见图2第二部分,在每个解码步骤中,我们使用一个基于注意力的模块,称为keyword-net,从目标答案中提取关键信息。对于keyword-net的每一层,计算最后一层 \(o_{t}^{l-1}\) 的输出向量和答案隐藏状态 \(h_{j}^{a}\) 之间的归一化匹配分数。 然后我们将 \(h_{j}^{a}\) 的加权平均值作为当前层 \(l\)中提取的关键字特征 \(o_{t}^{l}\) 。 我们用当前解码步骤的上下文向量\(c_{t}\)初始化 \(o_{t}^{0}\)。以下方程描述了keyword-net的机制:
o_{t}^{0}=c_{t} \\
p_{t j}^{l}=\operatorname{Softmax}\left(\left(o_{t}^{l-1}\right)^{\top} h_{j}^{a}\right) \\
o_{t}^{l}=\sum_{j} p_{t j}^{l} h_{j}^{a} \\
s_{t}=L S T M\left(y_{t-1}, s_{t-1}, c_{t}, o_{t}^{L}\right)
\end{gathered}
\]
\(s_t\)代表当前时间步的解码器的隐藏状态。\(c_t\)代表当前时间的上下文向量。\(y_t−1\)代表上一次的输出token步骤
- 将检索式词生成器(Ma et al. 2018,通过查询分布式单词表示来生成单词,希望能够捕捉到所用单词的含义)背后的想法来替换我们解码器中现有的输出层。可以弥补序列到序列模型的缺点,即序列到序列模型倾向于记忆序列模式而不是反映词义。
查询 \(q_t\) 被计算为解码器隐藏状态\(s_t\) 和上下文向量 \(c_t\) 的组合。 通过向每个词嵌入\(e_k\) 查询 \(q_t\),我们可以计算 \(q_t\) 和 \(e_k\) 之间的相关性分数,其中 \(Wa_a\) 是可训练的参数矩阵。然后得分函数的归一化值表示每个词的生成概率。 由于原始输出层占用了大部分模型参数,我们可以通过使用这个词检索层来显着减少参数大小和模型收敛时间:
q_{t}=\tanh \left(W_{q}\left[s_{t} ; c_{t}\right]\right) \\
\operatorname{score}\left(q_{t}, e_{k}\right)=q_{i}^{\top} W_{a} e_{k} \\
p\left(y_{t}\right)=\operatorname{Softmax}\left(\operatorname{score}\left(q_{t}, e_{k}\right)\right)
\end{gathered}
\]
3 实验
使用有文章使用过的两个处理过的SQuAQ数据集版本。由于原始数据集被划分为train/dev ,因此将它们重新划分为train/dev/test ,并从包含目标答案的段落中分离段落和答案为data split-1和data split-2。对于data split-1,由于不包括目标答案,从每个段落中提取它们以制作 (passage, question, answer) 三元组。最后使用 Stanford CoreNLP 对两个数据拆分进行标记,然后将它们小写。
对于实验中各超参数的设立请看原文。
最后,对结果使用BLEU-4,Meteor,\(Rouge_L\)作为评价标准对预测结果进行评价。将该模型与与之前最先进的 NQG 模型进行比较。
我们在 SQuAD 数据集上使用 QANet (Yu et al. 2018) 进行实验,以验证我们模型生成的问题是否有效。 由于大多数答案对应于命名实体,因此我们使用来自数据 split-1 训练部分的命名实体的单词和短语作为目标答案。 然后,我们将这些答案与相应的段落配对。 我们还确保所选答案不会与原始 SQuAD 数据集中的答案重叠,因为我们的 NQG 模型是使用 SQuAD 数据集提供的目标答案进行训练的。 如果答案重叠,我们的模型可能会生成与黄金问题完全相同的问题。 然后我们将这些答案与相应的段落配对。
由于 SQuAD 数据集是一个人造数据集,这个结果充分表明我们的答案分离 seq2seq 可以生成人类和机器理解系统都可以接受的有效问题。
4 总结与展望
在本文中,研究了答案分离在神经问题生成中的优势。 我们观察到现有的 NQG 模型存在一个严重的问题:很大一部分生成的问题包含问题目标中的单词,从而导致生成非故意的问题。 为了克服这个问题,我们引入了一种新颖的 NQG 架构,该架构将文章和目标答案分开处理,以更好地利用双方的信息。 实验结果表明,我们的模型具有很强的为文章中的目标答案生成正确问题的能力。 因此,它比以前最先进的模型产生了实质性的改进。
QG-2019-AAAI-Improving Neural Question Generation using Answer Separation的更多相关文章
- 【NQG】Paragraph-level Neural Question Generation with Maxout Pointer and Gated Self-attention Networks论文笔记
这篇文章主要处理了在问题生成(Question Generation,QG)中,长文本(多为段落)在seq2seq模型中表现不佳的问题.长文本在生成高质量问题方面不可或缺. 1. Introducti ...
- Deep Learning 23:dropout理解_之读论文“Improving neural networks by preventing co-adaptation of feature detectors”
理论知识:Deep learning:四十一(Dropout简单理解).深度学习(二十二)Dropout浅层理解与实现.“Improving neural networks by preventing ...
- 论文阅读笔记:《Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling》
论文阅读:<Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling& ...
- 论文泛读·Adversarial Learning for Neural Dialogue Generation
原文翻译 导读 这篇文章的主要工作在于应用了对抗训练(adversarial training)的思路来解决开放式对话生成(open-domain dialogue generation)这样一个无监 ...
- Improving Commonsense Question Answering by Graph-based Iterative Retrieval over Multiple Knowledge Sources —— 基于多知识库迭代检索的常识问答系统
基于多知识库迭代检索的问答系统 论文地址 背景 常识问答任务需要引入外部知识来帮助模型更好地理解自然语言问题,现有的解决方案大都采用两阶段框架: 第一阶段 -- 从广泛的知识来源中找到与给定问题相关的 ...
- 2019南昌邀请赛网络预选赛 I. Max answer(单调栈+暴力??)
传送门 题意: 给你你一序列 a,共 n 个元素,求最大的F(l,r): F(l,r) = (a[l]+a[l+1]+.....+a[r])*min(l,r); ([l,r]的区间和*区间最小值,F( ...
- 2019 Multi-University Training Contest 3 Find the answer (离散化+二分+树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6609 题目大意:给定一个含有n个数的序列,还有一个m,对于每个i(1<=i<=n)求出最少 ...
- 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章
不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整 理 | Leo 出 ...
- Deep learning_CNN_Review:A Survey of the Recent Architectures of Deep Convolutional Neural Networks——2019
CNN综述文章 的翻译 [2019 CVPR] A Survey of the Recent Architectures of Deep Convolutional Neural Networks 翻 ...
随机推荐
- awk 命令-随笔
awk语法: awk [option] 'pattern{action}' file ... awk [参数] '条件{动作}' 文件 ... 解析: 命令: awk 参数: -F "&qu ...
- Android系统编程入门系列之应用内数据保存数据库
上篇文章已经介绍了如何使用SharedPreferences存储键值对形式的轻量级数据,对于那些相同结构的多组数据,类似于存储Java中定义的类的多个对象属性值,如果按照键值对的形式一条条读写,需要分 ...
- RT-Thread 4.0 + STM32F407 学习笔记1
RT Thread 4.0提供了新的BSP框架 新 BSP 框架的主要特性如下: 提供多系列 BSP 模板,大大降低新 BSP 的添加难度: 每个 BSP 都配有齐全的驱动文件,开发者可以方便地使用所 ...
- 第06课:GDB 常用命令详解(中)
本课的核心内容: info 和 thread 命令 next.step.util.finish.return 和 jump 命令 info 和 thread 命令 在前面使用 info break 命 ...
- java9的JShell小工具和编译器两种自动优化
一.按顺序逐步执行的脚本程序: 二.编译器自动优化 1.不超数据类型范围编译器自动添加强转操作: 2.一但发生运算,byte/short/char都会自动提升为Int,当只有常量参与运算时,编译器会先 ...
- Linux残留的EFI启动项删除后又恢复的问题
电脑Windows + Fedora双系统,UEFI启动,共用同一个EFI分区.现在删除了Fedora系统,那么应该将EFI分区中的Fedora启动项也删除之. 按照网上的办法,在Windows上,尝 ...
- python模块--calendar
方法 返回值类型 说明 .calendar(theyear, w=2, l=1, c=6, m=3) str 返回指定年份的年历, w: 每个日期的宽度, l: 每一行的纵向宽度, c: 月与月之间的 ...
- ☕【Java技术指南】「并发编程专题」针对于Guava RateLimiter限流器的入门到精通(含实战开发技巧)
并发编程的三剑客 在开发高并发系统时有三剑客:缓存.降级和限流. 缓存 缓存的目的是提升系统访问速度和增大系统处理容量. 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题 ...
- CodeForce-702C Cellular Network(查找)
Cellular Network CodeForces - 702C 给定 n (城市数量) 和 m (灯塔数量): 给定 a1~an 城市坐标: 给定 b1~bm 灯塔坐标: 求出灯塔照亮的最小半径 ...
- 安卓开发 利用百度识图api进行物体识别
前文 之前的随笔中,已经通过相机或相册获取到了我们想要的图片,接下来进行识图api的配置工作.我使用的是百度的api,利用python获取信息,并在MainActivity中进行调用来输出信息. 一. ...