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. Hexo+Butterfly主题美化

    前言 本博客基于Hexo框架搭建,用到 hexo-theme-butterfly 主题(本人博客Butterfly版本3.4.0),hexo-theme-butterfly是基于Molunerfinn ...

  2. Defence

      emm...这道题我调了一下午你敢信??   好吧还是我太天真了.   开始的时候以为自己线段树动态开点与合并写错了,就调;   结果发现没问题,那就是信息维护错了.   一开始以为自己最左右的1 ...

  3. [考试总结]noip模拟39

    不写那么多没用的了 开题就发现 \(T4\) 原题, \(T1\) 大水题. 然后发现 \(T4\) 忘了.... 不扯了 打地鼠 大水题,我代码都不想放... 算了,还是放一下吧.. #includ ...

  4. openswan IPSec专栏目录锦集

    为了方便查阅现有的文章,特准备一个目录页供后续查询使用 专栏序言 1. 基础知识 openswan任务调度基础知识之信号 2. openswan环境搭建 openswan框架和编译时说明 opensw ...

  5. (3)java Spring Cloud+Spring boot+mybatis企业快速开发架构之SpringCloud-Spring Cloud和Dubbo的区别及各自的优缺点

    ​ 我们先从 Nginx 说起,了解为什么需要微服务.最初的服务化解决方案是给相同服务提供一个统一的域名,然后服务调用者向这个域发送 HTTP 请求,由 Nginx 负责请求的分发和跳转. 这种架构存 ...

  6. Android——菜单(Menu)

    菜单的运用在Android中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...

  7. 深入学习PHP中的JSON相关函数

    在我们当年刚刚上班的那个年代,还全是 XML 的天下,但现在 JSON 数据格式已经是各种应用传输的事实标准了.最近几年开始学习编程开发的同学可能都完全没有接触过使用 XML 来进行数据传输.当然,时 ...

  8. jquery获取一个元素符合条件的第一个父元素

    closest jQuery 1.3新增.从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素.. closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身.如果不匹配则向上查找父元素 ...

  9. ubuntu安装git并配置SSH Key

    安装git apt-get install git 配置git的用户名和邮箱: ssh-keygen -trsa -C "youremail@example.com" ssh-ke ...

  10. C++ 找零钱方法数

    * 动态规划法 #include "stdafx.h" #include <iostream> #include <vector> using std::v ...