©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. 教育领域:这一点很多问题生成论文提到过,也就是为阅读理解材料生成问题,然后将其用于测试人的阅读理解能力,也可以为外语初学者提供更多的学习材料。不过目前看来,生成的问题都非常简单,根本不需要联想、推理、归纳之类的能力就能解决,而且目前的神经网络模型可以说毫无推理能力可言;
2. 对话系统:问题生成可以让聊天机器人主动向用户提问题从而开启一段对话,或者追问,即要求用户对问题进行反馈以便完成对话任务(比如点外卖时问用户喜欢吃什么,选择什么价位从而实现精准推荐)。要求反馈这一点我觉得还是很有用的,不过这和机器阅读理解似乎关系不大?
3. 医疗领域:生成的问题可以用于临床上评估人类的心理健康状态或提高心理健康水平。不过我觉得现在的技术水平,别反倒被问出心理疾病就可以了;
4. 开发标注数据集:这一点是切实的,其实就是所谓的数据增强,因为大规模标注数据总是很难得的,后面会讲的 SynNet 也是为了实现这个方向的应用。
问题生成其实不是新方向了,以 Mitkov 为代表的研究者曾开发过一些基于规则的问题生成系统,这样的系统需要人工设计将陈述句转换为疑问句的复杂规则(句法树转换模板),这要求设计者拥有深厚的语言学知识。
后来 Heilman 等人曾提出可以让系统生成过量的问题,然后采用基于监督学习的排序算法对问题质量进行排序,选出最好的那一个,而监督算法又要求人工设计复杂的特征集,即便设计了出来,系统所生成的问题也与文档有较多的 overlap,比较死板,导致生成的问题非常容易回答。
Vanderwende 曾表示,问题生成也是 NLP 的核心任务,而不应仅仅局限于陈述句的句法转换,因为一个听起来很自然的问题本身就是对对应文档中的句子的一种信息压缩,有时还涉及同义词替换和实体指代,甚至问题中还蕴含着来自真实世界的外部知识。
也就是说,构建具有合理难度的自然问题需要一种抽象的方法(而非形象的规则),这种方法应能产生流畅的问题,同时问题与其对应的文本内容不能完全匹配。
这也是为什么端到端的方法更为合理,我们不应该依赖于人工编写复杂的规则和传统 NLP 流水线式的模块串行方法,而是直接采用数据驱动的端到端方法,这样的方法已经在机器翻译、摘要生成和图像生成中取得了巨大的成功,因此作者也首次尝试了将基于 Global Attention 的神经语言模型用于问题生成。
本文的模型采用的是基于 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-wh
、max-length
、downweight-pro
。
Seq2Seq:经典的神经翻译模型,其输入句子为倒序输入,在开发集上调参并选择最低困惑度模型。
论文标题:
Neural Question Generation from Text: A Preliminary Study
论文来源:
NLPCC 2017
论文链接:
https://arxiv.org/abs/1704.01792
代码链接:
https://github.com/magic282/NQG
大部分 WHICH 类型的问题都可以转化为其他类型,比如 Which time When,Which team Who;
SQuAD 中的 WHICH 类型的数据太少,导致模型学不到其特征,同理也可解释 WHY 类型的不良表现。
至于问题生成的研究价值和落地价值,目前还不太懂这要如何运用在作者提到的教育领域上。总体来说,总共 6 页的论文,感觉模型并没有什么特别创新的地方,只是将答案与词向量、NER 和 POS 共同编码了而已。
论文标题:
Two-Stage Synthesis Networks for Transfer Learning in Machine Comprehension
论文来源:
EMNLP 2017
论文链接:
https://arxiv.org/abs/1706.09789
代码链接:
https://github.com/davidgolub/QuestionGeneration
问题生成模块中最大化条件概率 ,作者将其分解为 来逐词生成对应答案的问题,模型结构是Encoder-Decoder + attention + copy mechanism
Encoder:与答案合成模块类似,将文本 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)最小化交叉熵损失: 。
另外,在训练时采用贪心策略,即先选择似然概率最大的预测器,然后选择该预测器给出的概率最大的单词。
3.3 MRC模型
即 ,学习的是 ,作者直接使用当时开源的 SOTA 模型 BiDAF(Bi-directional Attention Flow network),但 SynNet 与 MRC 模型解耦,因此任何 MRC 模型都是可以的。
3.4 训练
首先,在源领域(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 训练
作者调整超参数 时发现,当 越大,即来自源领域的人工标注数据越多时,模型反倒越好,这第三次说明了人工标注数据的重要性,即使数据来自另一个领域,只要是人工标注的,也比在新领域的自动生成数据更有价值。
论文标题:
Improving Question Generation With to the Point Context
论文来源:
EMNLP 2019
论文链接:
https://arxiv.org/abs/1910.06036
关系与答案有重叠词(Relevant)
关系的置信度高(Faithfulness)
关系含有大量的非停用词(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 Generation
论文来源:
ACL 2018
论文链接:
https://arxiv.org/abs/1706.04560
5.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 的位置,模型的具体实现不再细说。
5.3.2 问题生成模块
接下来,将标注的 key phrases 作为答案喂给 Seq2Seq + Attention + Pointer-softmax mechanism 模型生成对应问题。这里的模型与 NQG++ 的那篇论文的模型结构差不多,因此只给出最后的概率分布公式,其余不再细说:
这篇论文的模型建立部分读起来比较烦,因为一张模型结构图都不给,给的全是数学公式,令人头秃,但细细读来发现似乎用的也就那些经典的深度学习方法和技巧。在训练上,作者选取 SQuAD 作为数据集,采用 NLTK 对数据进行预处理,实现细节不再细说。
5.4 模型评估
5.4.1 评估方法
在评估答案抽取模块的效果时,由于答案通常是短语,不适合用词级别的 F1 score 来评价,因此作者提出了一种 multi-span F1 score 对生成的答案进行评价,具体的计算方法也不想细说:
答案可以用自动指标评估,但问答对就不好评估了,常用的 BLEU、ROUGE、METEOR、CIDEr 作者认为不太可靠,因此生成的问答对采用人工评价方法,这里作者只给出了 H&S 和自己的模型的评估对比结果。
5.4.2 评估结果
答案抽取模块
很明显,ENT 过度生成了答案,导致高召回低精度,NES 模型就好了很多,而 PtrNet 就更好了。而 H&S 与 ENT 有相同的高召回低精度的问题,这应该是因为 H&S 和 ENT 并不知道 SQuAD 的答案分布情况,所以只能尽量寻找所有看起来像答案的序列。
有趣的一个点是,作者发现基于命名实体的模型常常选择文本的中心词或主题词作为答案,而这类词通常不是有趣的,而只是文本的主题背景而已。
另外,作者还发现了每个模型的一些问题,比如 H&S 模型生成的答案很多都以介词开头,或者有时候会生成非常长的名词短语,同时有的生成答案没有实际意义(比如 this theory, some studies, a person 等);而对于作者的模型,有时候生成的答案并不能回答对应的问题,同时作者还发现自己的模型有时会具有指代消解的功能,但他没有解释这些现象背后的原因。
问题生成模块
在人工评估中,作者首先将自己的模型生成的问答对与人工标注问答对进行对比评估,很明显,生成的当然是比不过人工的,然后作者将自己模型生成的问答对与 H&S 模型生成的问答对混在一起让评估者与人工标注问答对进行评估时,前者能够对评估者带来更大的混淆。
但有趣的是,当作者只提供两个模型生成的问答对,而不提供 ground truth 作为参考时,评估者竟然难以对比不同模型生成的问答对的好坏。可惜的是,作者并没有表达对这种现象的看法,小七认为应该是评估者觉得这两个模型生成的问答对都不理想,说的都不是人话,一个语句不够通顺,另一个问非所答,五十步不可笑百步。
下面是一些具体的例子,不嫌累的话可以感受一下生成的问题说的是不是人话:
NIPS 2015
论文标题:
Pointer Networks
论文来源:
NIPS 2015
论文链接:
https://arxiv.org/abs/1506.03134
6.1 Background
本文来自于 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 模型。
6.2 Previous Study
我们已经知道,Seq2Seq 的出现很好地解开了以往的 RNN 模型要求输入与输出长度相等的约束,而其后的 Attention 机制(content-based)又很好地解决了长输入序列表示不充分的问题。
尽管如此,这些模型仍旧要求输出的词汇表需要事先指定大小,因为在 softmax 层中,词汇表的长度会直接影响到模型的训练和运行速度,因此人们往往会丢弃生词,保留高频词。之前也有人采用过一些简单的 trick 解决生词问题,但都不如 Copy 机制那么有效。
这一缺陷在组合优化问题中更加明显,因为组合优化问题中输出序列的 dictionary 直接取决于输入序列,而本文提出的 PtrNets 其实就是通过对 Attention 机制进行简化魔改来解决了这种输入对输出存在强制约束的问题,虽然模型变得更加简单,但反而更加有效。
PtrNets 可以近似地解决上述的三个经典的组合优化问题,让人惊奇的是,训练的模型没有引入任何先验知识,完全是一个纯数据驱动(purely data driven)的算法,其性能竟然可以接近于计算量巨大且复杂的人工设计的算法。
作者在论文中对比了基于 LSTM 的 Seq2Seq 模型和 PrtNets 模型在这三个任务上的表现,值得注意的是,训练 Seq2Seq 模型必须在点集大小固定的数据集上训练,而测试也只能在点集大小与训练集相同的数据集上训练,而 PtrNets 模型训练集的点集大小可变,且训练好的模型可以应用在更大点集的数据集上且表现依旧良好
6.4 PtrNet
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 Problem
TSP 问题是理论计算机科学中最为著名的问题之一,它在芯片设计、基因测序任务上都有重要作用,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 默认每篇文章都是首发,均会添加“原创”标志
???? 投稿邮箱:
• 投稿邮箱:[email protected]
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
????
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。