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 创新点

基于以上问题,该文章的主要创新点是提出将目标答案与原始文章分开来解决这个问题。

  1. 首先,如图一使用mask标记 将目标问题的答案与题目进行分离,有助于模型识别与目标答案相关的问题类型,因为模型在标记的帮助下学会了捕获目标答案的位置和上下文信息。

  2. 此外,提出了一个名为keyword-net的新模块作为新模型的一部分,它从之前分开的目标答案中提取关键信息。 keyword-net使新的 NQG 模型始终能够感知目标答案,弥补了答案分离导致的信息不足。

  3. 最后,采用了 (Ma et al. 2018) 提出的检索式词生成器,它可以在生成过程中更好地捕捉词语义.



如上图,结构主要如下:

  • encoder:目标答案和分离答案的原始段落分别对应两个encoder,对于分离答案后的段落,与基础模型相同,使用一个个单层双向LSTM(见图2第一个)。

对于答案编码encoder,使用另一个单层双 LSTM 对目标答案 \(x^{a}\) 进行编码。 在答案编码器的最后一个时间步中,将每个 LSTM 的隐藏状态串联起来,形成最终的隐藏状态 \(h_{final}^{a}\) ,它代表了答案\(x^{a}\) 的整体特征:

\[{\begin{aligned}
\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的答案分离解码器。答案分离解码器通过以下三种方式利用文章和目标答案的特征。
  1. 用最终答案向量\(h_{final}^{a}\)初始化解码器状态。
  2. 结合答案的关键特征,即提取目标答案中的关键信息来消除问题目标的歧义。见图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的机制:
\[\begin{gathered}
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步骤

  1. 将检索式词生成器(Ma et al. 2018,通过查询分布式单词表示来生成单词,希望能够捕捉到所用单词的含义)背后的想法来替换我们解码器中现有的输出层。可以弥补序列到序列模型的缺点,即序列到序列模型倾向于记忆序列模式而不是反映词义。

查询 \(q_t\) 被计算为解码器隐藏状态\(s_t\) 和上下文向量 \(c_t\) 的组合。 通过向每个词嵌入\(e_k\) 查询 \(q_t\),我们可以计算 \(q_t\) 和 \(e_k\) 之间的相关性分数,其中 \(Wa_a\) 是可训练的参数矩阵。然后得分函数的归一化值表示每个词的生成概率。 由于原始输出层占用了大部分模型参数,我们可以通过使用这个词检索层来显着减少参数大小和模型收敛时间:

\[\begin{gathered}
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的更多相关文章

  1. 【NQG】Paragraph-level Neural Question Generation with Maxout Pointer and Gated Self-attention Networks论文笔记

    这篇文章主要处理了在问题生成(Question Generation,QG)中,长文本(多为段落)在seq2seq模型中表现不佳的问题.长文本在生成高质量问题方面不可或缺. 1. Introducti ...

  2. Deep Learning 23:dropout理解_之读论文“Improving neural networks by preventing co-adaptation of feature detectors”

    理论知识:Deep learning:四十一(Dropout简单理解).深度学习(二十二)Dropout浅层理解与实现.“Improving neural networks by preventing ...

  3. 论文阅读笔记:《Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling》

    论文阅读:<Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling& ...

  4. 论文泛读·Adversarial Learning for Neural Dialogue Generation

    原文翻译 导读 这篇文章的主要工作在于应用了对抗训练(adversarial training)的思路来解决开放式对话生成(open-domain dialogue generation)这样一个无监 ...

  5. Improving Commonsense Question Answering by Graph-based Iterative Retrieval over Multiple Knowledge Sources —— 基于多知识库迭代检索的常识问答系统

    基于多知识库迭代检索的问答系统 论文地址 背景 常识问答任务需要引入外部知识来帮助模型更好地理解自然语言问题,现有的解决方案大都采用两阶段框架: 第一阶段 -- 从广泛的知识来源中找到与给定问题相关的 ...

  6. 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( ...

  7. 2019 Multi-University Training Contest 3 Find the answer (离散化+二分+树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6609 题目大意:给定一个含有n个数的序列,还有一个m,对于每个i(1<=i<=n)求出最少 ...

  8. 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章

    不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整    理 | Leo 出   ...

  9. 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 翻 ...

随机推荐

  1. python实现分水岭算法分割遥感图像

    1. 定义 分水岭算法(watershed algorithm)可以将图像中的边缘转化为"山脉",将均匀区域转化为"山谷",在这方面有助于分割目标. 分水岭算法 ...

  2. Merchant

      \(get\)二分新用法.   每道题都有答案范围提示,以前只是以为是用来提示用什么类型输出的.   从来没想过直接用它来二分.   这道题真的刷新了我的认知啊......   整道题的复杂度是\ ...

  3. Linux - 设置帮助文件为中文

    前言 当我们执行某个命令的 --h 或者  --help 时,默认输出的都是英文,接下来我们来说下如何将所有帮助文件显示成中文哦! 设置系统默认语言为中文 对应每个shell而言,重启后会变成英文,所 ...

  4. 配置IIS Express 允许外部访问

    修改applicationhost.config 配置允许外部访问 操作步骤: 1. 查看本机IP地址记录IP地址,例如:10.1.20.138 2. 如下图,找到要发布的站点的名称 记录站点的名称, ...

  5. Docker 网络类型

    Docker 网络类型 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:docker-compose 的使用和负载均衡的初探 1. ...

  6. PTA 面向对象程序设计 6-1 引用作函数形参交换两个整数

    引用作函数形参交换两个整数 设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作. 裁判测试程序样例: #include <iostream> ...

  7. MapReduce原理深入理解(二)

    1.Mapreduce操作不需要reduce阶段 1 import org.apache.hadoop.conf.Configuration; 2 import org.apache.hadoop.f ...

  8. Java面向对象系列(9)- 方法重写

    为什么需要重写? 父类的功能,子类不一定需要,或者不一定满足 场景一 重写都是方法的重写,和属性无关 父类的引用指向了子类 用B类新建了A类的对象,把A赋值给了B,这时候B是A,A又继承了B类,向上转 ...

  9. php 设计模式 --桥接模式

    php抽象类和接口的区别 https://www.cnblogs.com/vinter/p/8716685.html 什么时候适合使用 --- 多个角色配合工作:抽象角色对应具体角色: <?ph ...

  10. P5934-[清华集训2012]最小生成树【最小割】

    正题 题目链接:https://www.luogu.com.cn/problem/P5934 题目大意 给出\(n\)个点\(m\)条边的一张图,再加入一条边\((u,v,L)\)求至少删掉多少条边可 ...