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

©PaperWeekly 原创 · 作者|Maple小七

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

研究方向|自然语言处理

在问答系统的构建中,问题生成(QG)常被当作一种数据增强技术来对待,然而在实践中,通过问题生成模型增强数据所带来的收益通常都不明显,而问题生成作为一个单独的 NLP 任务,又很难有实际的应用场景,所以问题生成的研究一直处于不温不火的状态。本文详细讲解了几篇经典的问题生成及其相关技术的论文,以备参考。

ACL 2017

论文标题:

Learning to Ask: Neural Question Generation for Reading Comprehension

论文来源:

ACL 2017

论文链接:

https://arxiv.org/abs/1705.00106

代码链接:

https://github.com/xinyadu/nqg

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

1.1 问题背景

问题生成主要有如下常见的几种应用场景:

1. 教育领域:这一点很多问题生成论文提到过,也就是为阅读理解材料生成问题,然后将其用于测试人的阅读理解能力,也可以为外语初学者提供更多的学习材料。不过目前看来,生成的问题都非常简单,根本不需要联想、推理、归纳之类的能力就能解决,而且目前的神经网络模型可以说毫无推理能力可言;

2. 对话系统:问题生成可以让聊天机器人主动向用户提问题从而开启一段对话,或者追问,即要求用户对问题进行反馈以便完成对话任务(比如点外卖时问用户喜欢吃什么,选择什么价位从而实现精准推荐)。要求反馈这一点我觉得还是很有用的,不过这和机器阅读理解似乎关系不大?

3. 医疗领域:生成的问题可以用于临床上评估人类的心理健康状态或提高心理健康水平。不过我觉得现在的技术水平,别反倒被问出心理疾病就可以了;

4. 开发标注数据集:这一点是切实的,其实就是所谓的数据增强,因为大规模标注数据总是很难得的,后面会讲的 SynNet 也是为了实现这个方向的应用。

问题生成其实不是新方向了,以 Mitkov 为代表的研究者曾开发过一些基于规则的问题生成系统,这样的系统需要人工设计将陈述句转换为疑问句的复杂规则(句法树转换模板),这要求设计者拥有深厚的语言学知识。

后来 Heilman 等人曾提出可以让系统生成过量的问题,然后采用基于监督学习的排序算法对问题质量进行排序,选出最好的那一个,而监督算法又要求人工设计复杂的特征集,即便设计了出来,系统所生成的问题也与文档有较多的 overlap,比较死板,导致生成的问题非常容易回答。

Vanderwende 曾表示,问题生成也是 NLP 的核心任务,而不应仅仅局限于陈述句的句法转换,因为一个听起来很自然的问题本身就是对对应文档中的句子的一种信息压缩,有时还涉及同义词替换实体指代,甚至问题中还蕴含着来自真实世界的外部知识

也就是说,构建具有合理难度的自然问题需要一种抽象的方法(而非形象的规则),这种方法应能产生流畅的问题,同时问题与其对应的文本内容不能完全匹配。

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

1.2 模型建立

本文的模型采用的是基于 Global Attention 的 Encoder-Decoder 结构,与神经翻译模型类似,人们在提问时,往往只关注与对应的句子和段落相关的部分,而不关注其他部分。在这里,作者设计了两个 Attention 模型,一个只编码句子,而另一个不仅编码句子,还编码句子所在的段落,这是因为有的问题不仅仅与答案所在的句子有关。

与前人的工作相同,在 Decoder 中,作者将条件概率分解为词级别的预测,每一词的预测概率为:

其中:

在 Encoder 中,作者采用 BiLSTM 编码:

将它们连接起来得到上下文表示向量:

然后加权得到 Attention 向量:

而权重由双线性打分函数和 softmax 正则化计算得到:

之前提到的句子级模型和句子+段落级模型的区别就在于解码器的隐层状态的初始化方法不同,在句子级模型中,隐层状态向量初始化为 ,而在句子+段落级模型中, 被连接起来作为解码器的隐层初始状态,这类似于一种 Y 型结构,将句子级信息和段落级信息连接起来。

在模型训练中,训练目标当然就是最小化负对数似然函数,在预测时,采用 beam search 生成句子,由于输入与输出的字典大小不一样,输入的句子某些词可能在输出字典中不存在,这会导致生成的问题存在许多 [UNK],因此作者采用了一个 trick,也就是生成 [UNK] 时,用该词对应的 Attention 权重最大的输入词将其替换,也就是  ,这样做是有道理的,因为 [UNK] 往往是句子的特征词。

1.3 模型细节

这篇论文讲得挺细的,甚至把 SQuAD 怎么构建的也讲了一遍(鼓励众包员工提的问题尽量不要与原文有重合短语,问题与答案由不同的员工标注,而且是先标问题,后标答案),作者采用 Stanford CoreNLP 进行分词分句和小写转换。

作者在 OpenNMt 系统上用 Torch7 实现模型,预训练词嵌入 GloVe、双层 LSTM、SGD、Dropout、Gradient Clipping 应有尽有,在开发集上选择具有最低困惑度(Perplexity)的模型。

1.4 模型评估

1.4.1 Baseline

这篇论文的 Baseline 也值得关注一下,如下所示:

  • IR:基于信息检索的模型,其实根本称不上是一个模型,它度量输入句子与训练集中每个问题的距离/相关度,然后取得分最高的问题作为生成的问题,距离的度量可以采用 BM-25 或编辑距离

  • MOSES+:是使用最为广泛的基于短语的统计翻译模型,在这里,作者将生成的问题类比于翻译的目标句子(虽然任务不同,但模型的思想都是相通的),作者用 KenLM 在目标侧训练一个三元语法模型,然后在开发集上用 MERT 微调模型。

  • DirectIn:很简单的技巧,也就是将输入句子根据标点分解为子句,然后将最大子句作为问题。

  • H&S:是一个经典的基于规则的模型,其参数有just-whmax-lengthdownweight-pro

  • Seq2Seq:经典的神经翻译模型,其输入句子为倒序输入,在开发集上调参并选择最低困惑度模型。


1.4.2 评估结果

自动评估
作者给出了六个自动评估指标(BLEU1-4、METEOR、ROUGE),作者甚至将每个指标的定义讲了一下,这里也正好小结一下:BLEU(BilinguaL Evaluation Understudy)测量的是两个句子的 n 元语法的重合程度(精确率),而 BLEU-n 是在 BLEU 的基础上测量两个句子至多 n 元的语法的匹配度,并对过短的句子施加惩罚(brevity penalty)(现在还是普遍认为 BLEU 指标偏向于较短的翻译结果)。

METEOR(Metric for Evaluation of Translation with Explicit ORdering)根据同义词(Synonyms)、词干(Stemming)和复述(Paraphrase)计算两个句子的相似度,可以反映模型的召回率。ROUGE(Recall-Oriented Understudy for Gisting Evaluation)与 BLEU 很像,但其衡量的是 n 元语法的召回率(适合 NMT,不适合 SMT)。
下面的评估结果表明 IR 和 MOSES 的精确度都很低,召回率也不如人意,但让我意外的是 DirectIn 的效果居然可以这么好,不过问句其实本身与原文会有较大的重合度,光靠自动指标计算 overlap 来评价其实并不能真实地反映生成答案的质量。

而 Seq2Seq 在没有 Attention 得情况下表现也不够好,在 Baseline 中只有基于规则的 H&S 可以与作者的模型有得一比,但 H&S 只是转换语法,而没有考虑语义信息。

在作者的模型中,加上预训练词嵌入的模型比不加入的模型表现会高两个点,而值得注意的是句子+段落级编码并不比纯句子级编码效果要好,也就是说,虽然在段落中的确包含了一些与问题相关的信息,但段落信息中更多的是噪声,当噪声信息大过有价值的信息时,加入之后性能反倒会下降了。

人工评估
作者对比了 H&S 和自己的模型的人工评估结果,指标主要关注问句的自然度(naturalness)和困难度(difficulty),自然度指的是语法的合理性和流畅性,而困难度指的是问句与原文的语法差异以及回答是否要求推理能力,有意思的是,难得见到有人对指标对比加上了统计显著性检验(截尾 t - 分布)。

评估结果是可以预想到的,但让人意外的是作者的模型生成的问题竟然比人工标注的问题更具有挑战性,作者认为,有一种可能性是因为模型是将所有的句子-问答对塞进去训练,而一个句子可能会有多个问题,这就导致了模型在生成问题时,会综合人工标注的问题,使得生成的问题比起人工标注的问题更加 diversity,也就更具有难度。
另外,作者在这里提到了一个 inter-rater agreement of Krippendorff's Alpha 指标,应该是用于衡量评估者之间的内部一致性。

作者给出了一些生成问题的例子,有趣的是,一些生成的问题居然需要外部知识来回答,比如下面这个例子:

生成的问题是 “Why birds grow”,而正确的问题应该是 “Why many species stil grow”,原文中只提到了 “species”,但作者的模型竟然生成了 “birds”,也就是说,需要人来推理出 birds 时 species 的一种,而这在原文中并没有说明。这是很有趣的现象,研究模型是通过怎样的机制生成了这些看似无关的单词,给模型一个合理的解释,是很有价值的。
Attention
Attention 已经讲过很多了,在这里直接给图,一目了然:

段落级编码 vs 句子级编码
之前提过,加入段落级编码反倒会让模型变差,为了探究背后的机制,作者将开发集中的问题按回答问题所需要的信息量大小分成了四个类型:只需要句子级信息、需要段落级信息、需要篇章级信息、需要外部世界信息。

模型在这四个类别问题的表现如下所示,可以发现,句子级模型在需要段落级信息的问题上表现非常差,而段落级模型表现会好很多,这也间接表明了虽然段落中存在很多噪音,但当段落中的信息对问题有较大的帮助时,是可以提升模型性能的,只是在数据集中大部分问题只需要句子级信息,所以段落级信息会带来更多噪声。

这也为我们提出了一个新的挑战,也就是如何有效地利用段落级信息,去除里面的噪声,提高模型性能。另外,也可以借助更多的机制(比如 Copy Mechanism,后面有人用过了)来进一步提高模型性能。

NLPCC 2017

论文标题:

Neural Question Generation from Text: A Preliminary Study

论文来源:

NLPCC 2017

论文链接:

https://arxiv.org/abs/1704.01792

代码链接:

https://github.com/magic282/NQG

这篇论文同样是首篇将深度学习技术运用到了面向问答系统的问题生成中的论文(与上一篇几乎同一时间发表),问题生成是问答的反向任务,作者将 QG 任务定义为:给定一个自然语言句子及该句子中的一个连续子串(answer spans),要求根据该句子生成一个自然语言问题,且其答案为给定的子串。

传统方法基本是在句法树上定义启发式规则对答案句进行变换,如经典的 PCFG-Trans,其严重依赖于人工操作,较为繁琐,不可移植且生成的问题质量不高。另外还有人在结构化的数据上采用神经网络来生成事实型问题,但本文的亮点就在于首次直接从非结构化的自然语言文本中生成非结构化的自然语言问题。

本文的基础模型是 2014 年提出的 seq2seq 模型,在 Encoder 中,作者提出利用 Feature-Rich Encoder 将答案位置信息(Answer Position Feature,采用 BIO tagging)、词法信息(Lexical Feature: POS、NER)以及词汇信息(Word Embedding)进行编码,编码器采用的是 BiGRU,从而生成针对该答案的问题。在 Decoder 中,文章结合了 Pointing 机制(Copy Mechanism:Gulcehre 2016)以解决低频词和集外词问题。

高质量数据集从来都是是一个模型最终效果的关键之处,文章基于 Stanford 的大规模高质量的问答数据集(SQuAD),将开发集的一半作为测试集对模型进行评估,在编解码器共享词嵌入矩阵预训练词向量(GloVe)优化下的 NQG++ 模型,在 BLEU-4 自动评测指标人工标注指标上均显著优于传统的基于规则的方法。

在模型分析中,我们可以发现信息的重要程度 Answer Position >> NER > POS > Word Case,另外,作者发现 NQG++ 生成问题类型的 diversity 还是有的,但在 WHICH 类型的问题生成上表现不太好,大概有两个原因:

  • 大部分 WHICH 类型的问题都可以转化为其他类型,比如 Which time When,Which team Who;

  • SQuAD 中的 WHICH 类型的数据太少,导致模型学不到其特征,同理也可解释 WHY 类型的不良表现。

至于问题生成的研究价值和落地价值,目前还不太懂这要如何运用在作者提到的教育领域上。总体来说,总共 6 页的论文,感觉模型并没有什么特别创新的地方,只是将答案与词向量、NER 和 POS 共同编码了而已。


EMNLP 2017

论文标题:

Two-Stage Synthesis Networks for Transfer Learning in Machine Comprehension

论文来源:

EMNLP 2017

论文链接:

https://arxiv.org/abs/1706.09789

代码链接:

https://github.com/davidgolub/QuestionGeneration

3.1 问题背景

在机器阅读理解(MRC)中,模型的输入是三元组(passage, question, answer),而 q 和 a 均依赖于人工标注,然而人工标注的成本过高,如果在每个领域或应用场景下均需要人工标注大量数据,时间成本和金钱成本均是无法接受的,同时,若直接应用其他领域的模型,则模型性能会急剧下降。


为了解决在新领域人工标注数据不充足以及模型迁移的问题,作者提出了一种二阶段合成网络结构:SynNet,利用已有领域中的大规模高质量监督数据为基础进行训练,让模型学习在文本上自动生成问答对的能力,然后迁移(Transfer Learning)到无监督数据的新领域中,在新领域中自动合成 QA 对,替代人工标注,并用来调整源领域的模型使其更贴近于新领域。


该模型对缺少标注数据的 MRC 问题提出了迁移学习的解决思路,实现 MRC 的迁移落地,这篇论文应该是首次将迁移学习运用到了 MRC 领域中。

3.2 模型建立

比起其他单纯生成问题或回答问题的阅读理解任务,这里的任务是同时生成问题和答案,一般来说,QA 是抽取式(extractive)的任务,即问题的答案是文本中的关键语义概念(sematic concept),如 named entity, action, number 等,通常是一个单词或短语(将答案设置为文本片段主要是为了减小答案的搜索空间);


而 QG 是生成式(abstractive)的任务,问题是句法流畅的自然语言,因此问题和答案是不同类型的数据,应将其看作(q, a)元组。因此 SynNet 将问答对生成任务分解为答案的序列标注任务和问题的生成任务两部分:

即将模型分为两个阶段(Two-Stage)或者说两个模块:答案合成模块和问题合成模块,

3.2.1 答案合成模块

在答案合成模块中,作者训练了一个简单的基于 BiLSTM 的 IOB tagger(START, MID, END, NONE)来预测文本中某个单词是否为答案的一部分,即最大化 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值