©PaperWeekly 原创 · 作者|Maple小七
学校|北京邮电大学硕士生 研究方向|自然语言处理 在问答系统的构建中,问题生成(QG)常被当作一种数据增强技术来对待,然而在实践中,通过问题生成模型增强数据所带来的收益通常都不明显,而问题生成作为一个单独的 NLP 任务,又很难有实际的应用场景,所以问题生成的研究一直处于不温不火的状态。本文详细讲解了几篇经典的问题生成及其相关技术的论文,以备参考。Learning to Ask: Neural Question Generation for Reading Comprehensionhttps://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 编码:而权重由双线性打分函数和 softmax 正则化计算得到:之前提到的句子级模型和句子+段落级模型的区别就在于解码器的隐层状态的初始化方法不同,在句子级模型中,隐层状态向量初始化为 ,而在句子+段落级模型中, 和 被连接起来作为解码器的隐层初始状态,这类似于一种 Y 型结构,将句子级信息和段落级信息连接起来。在模型训练中,训练目标当然就是最小化负对数似然函数,在预测时,采用 beam search 生成句子,由于输入与输出的字典大小不一样,输入的句子某些词可能在输出字典中不存在,这会导致生成的问题存在许多 [UNK],因此作者采用了一个 trick,也就是生成 [UNK] 时,用该词对应的 Attention 权重最大的输入词将其替换,也就是 ,这样做是有道理的,因为 [UNK] 往往是句子的特征词。这篇论文讲得挺细的,甚至把 SQuAD 怎么构建的也讲了一遍(鼓励众包员工提的问题尽量不要与原文有重合短语,问题与答案由不同的员工标注,而且是先标问题,后标答案),作者采用 Stanford CoreNLP 进行分词分句和小写转换。作者在 OpenNMt 系统上用 Torch7 实现模型,预训练词嵌入 GloVe、双层 LSTM、SGD、Dropout、Gradient Clipping 应有尽有,在开发集上选择具有最低困惑度(Perplexity)的模型。这篇论文的 Baseline 也值得关注一下,如下所示:
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 的一种,而这在原文中并没有说明。这是很有趣的现象,研究模型是通过怎样的机制生成了这些看似无关的单词,给模型一个合理的解释,是很有价值的。AttentionAttention 已经讲过很多了,在这里直接给图,一目了然:段落级编码 vs 句子级编码之前提过,加入段落级编码反倒会让模型变差,为了探究背后的机制,作者将开发集中的问题按回答问题所需要的信息量大小分成了四个类型:只需要句子级信息、需要段落级信息、需要篇章级信息、需要外部世界信息。
模型在这四个类别问题的表现如下所示,可以发现,句子级模型在需要段落级信息的问题上表现非常差,而段落级模型表现会好很多,这也间接表明了虽然段落中存在很多噪音,但当段落中的信息对问题有较大的帮助时,是可以提升模型性能的,只是在数据集中大部分问题只需要句子级信息,所以段落级信息会带来更多噪声。
这也为我们提出了一个新的挑战,也就是如何有效地利用段落级信息,去除里面的噪声,提高模型性能。另外,也可以借助更多的机制(比如 Copy Mechanism,后面有人用过了)来进一步提高模型性能。NLPCC 2017Neural Question Generation from Text: A Preliminary Studyhttps://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 Comprehensionhttps://github.com/davidgolub/QuestionGeneration3.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)来预测文本中某个单词是否为答案的一部分,即最大化 ,学习文本中可作为答案的片段,主要包括命名实体等语义概念。
模型首先采用 BiLSTM 对 p 的词向量(300d GloVe)进行编码产生上下文相关表示向量 ,然后通过两个全连接层和一个 Softmax 产生每个单词获得不同标记的似然概率,选择所有标记非 NONE 的连续单词序列作为候选答案,输入问题生成模块。3.2.2 问题合成模块问题生成模块中最大化条件概率 ,作者将其分解为 来逐词生成对应答案的问题,模型结构是Encoder-Decoder + attention + copy mechanismEncoder:与答案合成模块类似,将文本 p 的 word embedding 向量输入 BiLSTM,但这里每个词向量均加入一个 0/1 特征来表示单词是否出现在答案中,经过 BiLSTM 处理得到隐状态 。Decoder:采用单向 LSTM 生成问题,在每一时刻 ,由 和前一时刻输出的问题单词 得到隐层表示向量 。在生成单词时,copy mechanism 中采用两个预测器,一个直接产生预定义词表中的词,另一个由一个 pointer network 从段落 p 中复制一个词。Copy Mechanism:在 Copy Mechanism中,每一时刻 生成单词 时,两个隐含预测器(Latent Predictors)分别生成从文本中复制单词的概率 和直接从词表生成单词的概率 ,而选择预测器 的似然概率与 成比例,综合起来,单词的概率似然为 , 分别代表两个预测器, 表示对应预测器预测的单词生成概率。由于产生的问题单词序列 q 没有什么时候生成或复制单词的监督标签,所以借鉴论文《Latent predictor networks for code generation》中的无监督学习算法(a variant of forward backward algorithm: Ling 2016)最小化交叉熵损失:。另外,在训练时采用贪心策略,即先选择似然概率最大的预测器,然后选择该预测器给出的概率最大的单词。即 ,学习的是 ,作者直接使用当时开源的 SOTA 模型 BiDAF(Bi-directional Attention Flow network),但 SynNet 与 MRC 模型解耦,因此任何 MRC 模型都是可以的。首先,在源领域(Source Domain)中采用 Adam 训练 SynNet: 和 MRC 模型 ,然后在目标领域(Target Domain)中采用 产生合成的 QA 对,然后和源领域的数据一起采用 SGD 算法来 finetune 源领域的 MC 模型使模型迁移到目标领域,源领域和新领域的采样比是 , 为超参数,作者选取 。这个 trick 主要是为了处理合成数据噪声过大的问题而进行的数据正则化操作(Data Regularization)在测试 finetune 后的 MC 模型 时,使用动态规划搜索最佳答案,为了提高模型的稳定性,作者对每 mini batch 的数据训练后的模型设置checkpoints,保存模型的预测结果,然后将训练时保存的模型 ensemble,对不同 checkpoints 模型给出的 answer likelihoods 做平均(Checkpoine-averaging)然后输出答案。3.5 结果 3.5.1 测试 作者将 SQuAD 作为源域,将 NewsQA 作为目标域来测试 SynNet 模型,值得注意的是,SQuAD 中 74.1% 的问题的答案可以通过单词匹配和改写得到,而 NewsQA 中这样的问题类型只占了 59.7%,即 SQuAQ 的问题相对简单。 模型的具体参数不用多说,值得一提的是,作者在训练答案生成模块时引入了 NER Tagger,因为人工标注不够充分,许多可以作为答案的片段没有得到标注,因此作者假设所有命名实体都可作为答案(这样做合理吗?人类往往只关心有意思的答案和问题,而对某些命名实体提问是不 interesting 且没有意义的)。 最后,集成的模型能在 NewsQA 数据集上取得 46.6% 的 F1 得分,接近域内全监督 MRC 模型的表现(F1 结果为 50.0%),超过域外基线模型 7.6%。 3.6 误差分析 3.6.1 答案生成模块 作者将人工标注的答案与 NER Tagger 生成的答案标注分别用于训练模型,发现基于自动标注的模型比基于人工标注的模型在 F1 上差了 10% 左右,说明了人工标注数据的重要性,因为人工标注数据往往是真正的关键语义概念,而自动生成的一些标注就不够 linguistic 或 interesting。 3.6.2 问题生成模块 作者为了衡量 copy 机制的影响,分别采用答案前后两句话和整段文本来生成问题,可以发现窗口越小时,生成的问题与文本的重复越多,而使用与文本大量重合的合成问题来训练模型,效果会变得不好,这再一次说明了人工标注数据的重要性,因为人工标注的问题往往与文本重复得很少,且有的问题涉及解释、推断、归纳,不能完全靠单词匹配来解决。 另外,copy 机制也导致了产生的问句和文本高度相似的问题,作者认为可以尝试引入 cost function 来促进解码过程的多样化,同时能让迁移的 MRC 模型取得更好的效果。 在问题的具体类型分析中,基于 SynNet 的 MRC 模型在每一类的表现都得到了提升,然而在某些需要一定的推理的问题类型(如 What was/did)中仍旧不好,目前来看,这仍旧是一个难以解决的问题,也是一个非常有价值的研究方向。 3.6.3 训练 作者调整超参数 时发现,当 越大,即来自源领域的人工标注数据越多时,模型反倒越好,这第三次说明了人工标注数据的重要性,即使数据来自另一个领域,只要是人工标注的,也比在新领域的自动生成数据更有价值。
EMNLP 2019
Improving Question Generation With to the Point Context
4.1 问题背景这篇论文来自于 EMNLP 2019,本文主要是为了解决 MRC 问题生成中一项重要的任务:indentify answer-relevant context words,即识别出与答案相关的上下文,并将文本中的陈述句转换为疑问句(declarative-to-interrogative),而目前大多数模型均在直觉上假设离答案越近的单词与答案的相关性越高,因此越容易出现在问题中。
然而,这一直觉并不总是对的,当答案与文本中那些出现在标准问题(golden question)中的非停用词距离较远时,这类模型的性能就会大幅下降。因此,作者提出了所谓的 to the Point Context,使得生成的问题更加 to the point。4.1.1 前人工作QG for MRC 首先由 Mitkov 使用基于规则的模型来解决,在最近几年的 DL 模型中,由于从文本到问题的转换是一对多的转换,一个文本可以提出许多不同方面的问题,这使得模型难以得到自动评估,因此《Neural Question Generation from Text: A Preliminary Study》假设答案是文本中的连续片段,一个答案生成一个问题。
之后,有人提出了之前的直觉上的假设,将答案周边文本的位置信息(即与答案的距离)编码来生成问题,取得了不错的效果。而本篇论文就是在这些基础上,将关系抽取引入模型,克服了以往模型假设的缺陷。4.1.2 本文工作当面对存在插入语之类的文本时,某些语义概念可能会纠缠在一起,导致与答案相关的语义概念与答案相距甚远,在路径中间存在其他与问答无关的概念,而以往的模型会误认为答案与插入语中的概念的关系更为紧密,导致问题的错误生成。作者给出了问题中非停用词与答案在文本中的平均距离处在不同区间时模型的性能:可以看到当平均距离过大时,性能存在明显的下降,这正是因为关键的语义概念与答案的距离过大,而模型过于强调邻近词的作用,导致模型难以捕捉到它们之间的长距离关系。因此作者抽取了结构化的与答案相关的关系(structured answer-relevant relations)来克服这个问题,关系的抽取能够提取句子的主要关系成分,忽略次要成分(如去除插入语),使得文本更加简单明了,而抽取出来的关系所组成的句子正是所谓的 to the point context。4.2 模型框架4.2.1 关系抽取模块在关系抽取过程中,作者直接采用了现成的信息抽取工具 OpenIE,然后根据特定的启发式规则选取与答案相关系最高的关系作为输入。为了保证关系的信息量,同时防止生成过多的关系,作者选择参数数量可变的 n-ary format 表示抽取的关系,然后将抽取的关系参数连接起来形成句子(to the point context)。由于从文本中抽取的关系数量众多,作者设定了三个准则来综合评价关系对给定答案而言是否有价值:- 关系含有大量的非停用词(Informativeness)
然后选择得分最高的关系作为输入,如果遇到了从文本中抽取不出关系的情况,则将文本本身作为关系。从下表可以看出,抽取的关系比起文本而言,更加 to the point。但值得注意的是,我们仍旧需要考虑文本本身,因为文本与问题的单词重合率更高,仅凭抽取的关系可能无法生成更加准确的问题。4.2.2 问题生成模型 建模的主要挑战在于如何有效地利用非结构化的文本句子(informativeness)和结构化的与答案相关的关系(faithfulness)中的信息,而这两部分都是存在噪声的,在非结构化文本中存在语义概念的纠缠,而生成的结构化关系可能不够准确。 因此,作者设计了一个基于 gated attention mechanism 和 dual copy mechanism 的 encoder-decoder 框架。 gated attention mechanism:attention 机制的改进版,用于控制来自非结构化文本和结构化关系输入的信息流。 dual copy mechanism:用于从两个信息源中 copy 单词,解决数据稀疏与生词问题,使得生成的问题既有信息量又足够准确。 虽然模型的数学表达式比较复杂,但作者给出的模型框架图清晰易懂,因此不再叙述模型的细节。总体来说,模型给出生成单词 作为第 个问题词的概率其中 表示从词表中生成单词 的概率, 表示从 sentence 中 copy 单词 的概率, 表示从关系中 copy 单词 的概率,模型首先决定是直接从词表中生成还是 copy,若选择 copy 则决定从哪一个信息源生成单词。4.2.3 训练 模型的参数不再细说,作者采用了 Teacher-forcing 训练模型,在测试时,作者选取了具有最低困惑度的模型,生成问题时,采用参数为 3 的 beam search 寻找局部最优问题序列。 注:Teacher-forcing:一般来说,RNN(LSTM、GRU)的训练有两种 mode:(1)Free-running mode;(2)Teacher-forcing mode。前者就是正常的 RNN 运行方式:上一个 state 的输出就做为下一个 state 的输入,然而这样做是有风险的,因为在 RNN 训练的早期,靠前的 state 中如果出现了极差的结果,那么后面的全部 state 都会受牵连,以至于最终结果非常不好,同时也很难溯源到发生错误的源头,而 Teacher-forcing mode 的做法就是,每次不使用上一个 state 的输出作为下一个 state 的输入,而是直接使用 ground truth 的对应上一项作为下一个 state 的输入,使得训练效果更快更好。然而这么做也有它的缺点,因为依赖标注数据,在 training 的时候会有较好的效果,但是在 testing 的时候就不能得到 ground truth 的支持了。 (Teacher-forcing 似乎要求生成的问句与标注的问句一一对应,这是一种强制性很强的约束,强制单词的一一对应消除了生成语义相似的其他问题的可能性,使得生成问题的多样性下降,同时当生成问题序列时,若与训练过程存在很大的不同,则会导致很大的误差,这类似于模型的过拟合,在训练集内表现良好,在集外则不如人意。) 4.2.4 模型评估 作者对 SQuAD 数据集做了一系列预处理,然后分别与前人的模型比较一系列自动评价指标(BLEU1, 2, 3, 4, METEOR, ROUGE-L),很显然作者的模型在各个指标上均有优异的表现。 4.3 结果分析 可以认为,抽取出来的结构化的与答案相关的关系是对 proximity-based 方法的一种泛化,后者只能捕捉短距离依赖关系,而前者既能把握近距离关系,也能把握远距离依赖关系。 为了衡量引入 to the Point Context 之后模型的性能提升幅度,作者将测试数据按平均距离划分成了两部分,可以发现,作者的模型在所有指标上都超过了 Hybird 模型。同时,在存在长距离依赖(>10)的样本上,作者在 Hybird 模型上性能的提升更为显著,这正好证明了 to the point context 在捕捉长距离依赖关系上存在明显有效的作用。 4.3.1 模型亮点 这篇论文最吸引我的地方在于,作者发现模型可以根据文本中的一个答案生成多个不同类型的问题,因为当文本中存在多个与答案相关的关系时,每一个关系均能生成对应的问题,根据不同的关系生成的问题对应于答案不同的语义角色,且问题类型很可能是不同的,从而使得生成的问题具有多样性,而以往的模型只能根据一个答案生成一个问(one-to-one mapping problem)。这正好说明关系抽取在 NLP 中具有重要的价值。 另外,这也正好使得模型具有可解释性,因为在生成问题时,我们不能仅仅依赖于答案去提问,同时应该指定需要生成的问题所需涉及的语义概念,而这些语义概念正包括在了抽取的关系中,因此,问题的生成不能依赖于答案周围的单词序列,而应该依赖于语义概念之间存在的关系,比如,下面的例子就说明了根据同位语关系和主谓宾关系生成的问题是不一样的,而以往的模型假设做不到这一点: ACL 2018
Neural Models for Key Phrase Detection and Question Generation5.1 问题背景 之前讲过的 NQG++ 论文发表于 2017 年 4 月 6 日,而本篇论文发表于 2017 年 6 月 14 日。这两篇论文解决的问题与思路非常相似,NQG++ 假定 Answer spans 是给定的,利用给定的文本和答案生成问题,但是 Answer spans 仍旧需要得到人工标注,在现实的应用场景下,这样的模型同样不好落地。而 Microsoft 的这篇论文则是直接在没有答案的文本上,即没有任何标注的文本上生成问题。 作者首先在有监督的 QA pairs dataset 上训练出一个基于 DL 的提取 Key Phrases 的模型,然后利用这个关键短语抽取模型来抽取答案,代替人工标注,最后用 Seq2Seq 生成问题。对比于采用 NER tagger 标注答案与基于规则的基线系统,本文给出的模型表现更加优秀。 由于可以直接从无监督的文本中生成 QA 对,因此本文的模型可以用来生成大量不错的 QA 对,从而可以考虑用于半监督学习(Semi-supervised Learning)中的数据增强(Data Augmentation)。 同时,该技术本身的应用场景似乎也相当广泛,比如在教育领域中评测学生的阅读理解能力,人工制定问题来评估需要耗费大量脑细胞,而利用 QG 模型可以在短时间内从文章中生成大量问题用于评估,甚至能够生成不同难度的题目,从而达到减轻老师的负担,加大学生的负担的目的。(不过目前来看并不现实)
5.2 前人工作 QG 领域已经有很多人做过相关工作了,在深度学习兴起之前,大多数是基于规则的方法,比如句法分析、语义角色标注、带填充槽的模板、启发式的句法转换(主谓反转)等,当然这些方法生成的问题都缺少 diversity,都不够 inadequate,而最近兴起的的端到端训练模型才改变了这一领域的研究方向。 而与 QG 高度相关的问题就是,如何识别潜在关键且有趣的答案,以前的工作往往将其分为两步:关键短语抽取、打分排序选择,而本篇论文的亮点就在于,作者摒弃了这样的传统思路,而是直接根据人工标注的答案进行端到端建模,因为作者相信这样的端到端模型或多或少能学习到一些人类在标注数据时对所谓“interesting/important/appropriate answer”的一些迷之想法。 5.3 模型建立 作者的模型分为两部分(two-stage neural model)首先是提取 Key Phrases(interesting entities or events)作为 Answer Candidates,然后根据提取的 Key Phrase 生成问题。 5.3.1 关键短语抽取模块 首先,在人工标注的大规模问答对数据集上训练 Key Phrase Tagger,有趣的是,由于人类在标注数据时,往往只关注那些 interesting 的 entities 和 events,而对于他们认为没有价值的概念,则不予标注。由此,作者猜想从人工标注数据中训练的标注器,同样具有识别所谓 interesting key phrases 的能力。而传统的 NER 则要求尽量标注出所有的命名实体,不管其是否 interesting。 为了验证这样的想法,作者对比实现了四个模型,其中 H&S 为 Heilman and Smith 在 2010 年提出的基于规则的模型;ENT 为 NER 标注器,值得注意的是,NER 标注器在提取 key phrases 任务中的召回率很高,这是因为它将任何命名实体均作为答案;为了解决这个问题,作者实现了一个基于 BiLSTM 的 NES(Neural Entity Selection)选择前 个得分最高的 key phrases 作为答案。但是,虽然 SQuAD 数据集中大多数答案都是命名实体,但仍旧有少部分 interesting aspects 没有被 NER 标注器识别,在更广泛的文本中,非命名实体的 interesting key phrases 就更多了,因此这就引出了本文的主要模型:PtrNet,该模型直接预测 key phrases 的 start point 和 end point,而非先抽取后排序。Pointer Network 是 Seq2Seq 的一种扩展,它的 target sequence 包含的是 source sequence 的位置,模型的具体实现不再细说。接下来,将标注的 key phrases 作为答案喂给 Seq2Seq + Attention + Pointer-softmax mechanism 模型生成对应问题。这里的模型与 NQG++ 的那篇论文的模型结构差不多,因此只给出最后的概率分布公式,其余不再细说:这篇论文的模型建立部分读起来比较烦,因为一张模型结构图都不给,给的全是数学公式,令人头秃,但细细读来发现似乎用的也就那些经典的深度学习方法和技巧。在训练上,作者选取 SQuAD 作为数据集,采用 NLTK 对数据进行预处理,实现细节不再细说。在评估答案抽取模块的效果时,由于答案通常是短语,不适合用词级别的 F1 score 来评价,因此作者提出了一种 multi-span F1 score 对生成的答案进行评价,具体的计算方法也不想细说:答案可以用自动指标评估,但问答对就不好评估了,常用的 BLEU、ROUGE、METEOR、CIDEr 作者认为不太可靠,因此生成的问答对采用人工评价方法,这里作者只给出了 H&S 和自己的模型的评估对比结果。很明显,ENT 过度生成了答案,导致高召回低精度,NES 模型就好了很多,而 PtrNet 就更好了。而 H&S 与 ENT 有相同的高召回低精度的问题,这应该是因为 H&S 和 ENT 并不知道 SQuAD 的答案分布情况,所以只能尽量寻找所有看起来像答案的序列。有趣的一个点是,作者发现基于命名实体的模型常常选择文本的中心词或主题词作为答案,而这类词通常不是有趣的,而只是文本的主题背景而已。另外,作者还发现了每个模型的一些问题,比如 H&S 模型生成的答案很多都以介词开头,或者有时候会生成非常长的名词短语,同时有的生成答案没有实际意义(比如 this theory, some studies, a person 等);而对于作者的模型,有时候生成的答案并不能回答对应的问题,同时作者还发现自己的模型有时会具有指代消解的功能,但他没有解释这些现象背后的原因。在人工评估中,作者首先将自己的模型生成的问答对与人工标注问答对进行对比评估,很明显,生成的当然是比不过人工的,然后作者将自己模型生成的问答对与 H&S 模型生成的问答对混在一起让评估者与人工标注问答对进行评估时,前者能够对评估者带来更大的混淆。但有趣的是,当作者只提供两个模型生成的问答对,而不提供 ground truth 作为参考时,评估者竟然难以对比不同模型生成的问答对的好坏。可惜的是,作者并没有表达对这种现象的看法,小七认为应该是评估者觉得这两个模型生成的问答对都不理想,说的都不是人话,一个语句不够通顺,另一个问非所答,五十步不可笑百步。下面是一些具体的例子,不嫌累的话可以感受一下生成的问题说的是不是人话:本文来自于 NIPS 2015,在这之前,以 Attention 机制为代表的一系列方法很好地解决了长序列输入输出的问题,而之前也提到过,生词问题(OOV)还没有被很好地解决,而问题生成论文中经常能够看到解决 OOV 问题的 Copy Mechanism,因此追根溯源找到了这篇论文。这篇论文正是 Copy 机制的前身,虽然本文并未提到如何使用 PtrNet 解决生词问题,但其思想是一致的,也是后续论文正式提出 Copy 机制的一个铺垫。Pointer Networks(指针网络)同样是 Seq2Seq 范式,它主要解决的是 Seq2Seq Decoder 端输出的词汇表大小不可变的问题。换句话说,传统的 Seq2Seq 无法解决输出序列的词汇表会随着输入序列长度的改变而改变的那些问题,某些问题的输出可能会严重依赖于输入。在本文中,作者通过计算几何学中三个经典的组合优化问题:凸包(Finding convex hulls)、三角剖分(comupting Delaunay triangulations)、TSP(Travelling Salesman Problem),来演示了作者提出的 PtrNets 模型。我们已经知道,Seq2Seq 的出现很好地解开了以往的 RNN 模型要求输入与输出长度相等的约束,而其后的 Attention 机制(content-based)又很好地解决了长输入序列表示不充分的问题。尽管如此,这些模型仍旧要求输出的词汇表需要事先指定大小,因为在 softmax 层中,词汇表的长度会直接影响到模型的训练和运行速度,因此人们往往会丢弃生词,保留高频词。之前也有人采用过一些简单的 trick 解决生词问题,但都不如 Copy 机制那么有效。这一缺陷在组合优化问题中更加明显,因为组合优化问题中输出序列的 dictionary 直接取决于输入序列,而本文提出的 PtrNets 其实就是通过对 Attention 机制进行简化魔改来解决了这种输入对输出存在强制约束的问题,虽然模型变得更加简单,但反而更加有效。PtrNets 可以近似地解决上述的三个经典的组合优化问题,让人惊奇的是,训练的模型没有引入任何先验知识,完全是一个纯数据驱动(purely data driven)的算法,其性能竟然可以接近于计算量巨大且复杂的人工设计的算法。作者在论文中对比了基于 LSTM 的 Seq2Seq 模型和 PrtNets 模型在这三个任务上的表现,值得注意的是,训练 Seq2Seq 模型必须在点集大小固定的数据集上训练,而测试也只能在点集大小与训练集相同的数据集上训练,而 PtrNets 模型训练集的点集大小可变,且训练好的模型可以应用在更大点集的数据集上且表现依旧良好Seq2Seq 模型和 Attention 机制的结构我就不多说了,只提一点,我们知道 Seq2Seq 模型需要事先指定词汇表的大小,在这三个几何问题的背景下,词汇表其实就是设定问题的规模,也就是生成点集的大小,在整个训练和测试过程中,点集大小是不能改变的。下面是 PtrNets 的原理,不难想象,Seq2Seq 需要词汇表固定的原因是在预测输出时,模型采用了 Softmax distribution 来计算生成词汇表中每一个词的似然概率,而对于这里的几何问题来说,输出集合是与输入相关联的,为了解决这个问题,作者将 Attention 机制改为了如下形式:第一个式子和 Attention 一样,即计算当前输出与对应输入之间的相关性分数,然后对其进行 softmax 归一化得到权重,在这里,PrtNets 直接将权重最大的输入(也就是所谓指针指向的输入)作为输出,也就是直接 copy 注意力得分最高的输入作为输出。实际上,传统的带有注意力机制的 Seq2Seq 模型输出的是针对输出词汇表的一个概率分布,而 Pointer Networks 输出的则是针对输入文本序列的概率分布。虽然简单,但十分有用,由于输出元素来自输入元素的特点,PtrNets 特别适合用来直接复制输入序列中的某些元素给输出序列。这对于那些输出为输入的 position 的任务非常有效。另外,我们来看看模型的复杂度,因为对于每个输出我们都有 次运算,而输出序列最大为 因此总的时间复杂度为 。6.4.1 Convex Hulls Problem寻找凸包的问题已经基本被研究透了,有许多精确的算法来解决这一问题,作者给出的参考算法的时间复杂度为 ,其中 为点的数量。下面是传统模型与作者的 LSTM 模型的性能比较,其中 FAIL 表示模型给出的解只有 1% 以下是有效的(也就是说 LSTM 模型输出存在大量的交叉点)可以看到 PtrNets 的性能相当好,LSTM 的训练集和测试集的点集大小必须相等,而 PtrNets 没有这个限制,且泛化得很好,这说明模型不仅仅只是做查询,而是真正捕捉到了内在的推理模式,虽然精确度会下降(这是肯定的),但给出的凸包覆盖率几乎是 100%,也就是只会在边界上一些比较模糊的平行点存在一些错误。另外要说明的一点是,作者在这三个任务中均采用同一个模型结构和同一组超参数,虽然调参会让模型表现得更好,但作者认为采用统一的模型结构更能够说明问题。在实验中,作者发现在输入序列中,如果凸包上的点出现得较晚,则精确度就越低,这说明读取序列的顺序是对性能有影响的,这也许是因为出现得过晚会导致模型没有足够的步长来处理输入的数据来更新状态,而 Attention 的确可以解决这个问题,而当作者画出 Attention 的注意力图时,便产生了 Pointer 的想法,于是魔改了 Attention 发了篇论文。6.4.2 Delaunay Triangulations Problem狄洛尼三角剖分也有精确的求解算法,其复杂度同样为 ,作者没有对此问题作过多讨论。6.4.3 Travelling Salesman ProblemTSP 问题是理论计算机科学中最为著名的问题之一,它在芯片设计、基因测序任务上都有重要作用,TSP 问题是一个 NP-hard 难题,作者给出了能够找到最优解的优解的 Held-Karp 算法,其时间复杂度高达 ,因此作者只在 的数据集上采用此算法,而对于更大的 ,作者选择了 A1、A2 近似解算法,其时间复杂度均为 ,以及 A3 近似解算法,时间复杂度为 ,A3 算法可以保证找到的解的路径长度不大于最优解路径长度的 1.5 倍。而作者的 PtrNets 的时间复杂度为 ,因此模型实际上并没有足够的能力去学习 TSP 的解决方案。不像前面两个问题,TSP 问题的输出是不受约束的,因此作者采用 bearm search 来寻找局部最优解,同时只考虑有效的 TSP 路径,下图给出了模型在不同训练集和测试集上的表现,有趣的是第三行,模型在 A1 算法给出的解上训练,训练出的模型在测试集上的表现竟然比 A1 算法本身还高,真是迷惑。不像前面的两个问题,TSP 问题明显复杂得多,这导致模型在点集大小增加时泛化得不够好,而在前面的凸包问题中模型的表现几乎没有下降,然而凸包问题的复杂度只有 ,远低于 TSP 的复杂度,泛化不够好也就情有可原了。下面是这三个问题的具体例子,PtrNets 给出的解还是相当优秀的。
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。 总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。 📝 来稿标准: · 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) · 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 · PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
|