《A Deep Generative Framework for Paraphrase Generation》论文笔记

转自:https://ldzhangyx.github.io/2018/09/26/deep-para-generation/

 

这篇文章发表在2018年的AAAI上,继承了VAE在自然语言处理上的应用,将其应用于句子复述上,用于生成相似的句子;同时因为RNN可以作为语言模型使用,语句的语法正确性也有一定提升。
论文地址:https://arxiv.org/pdf/1709.05074.pdf

背景材料

关于变分自编码器在NLP领域的相关介绍,可以看这篇讨论

关于文本生成的背景研究,可以看这篇文章

关于VAE的原理(流形学习)和工程实现,可以看这篇博文。这篇博文详细介绍了VAE的训练过程,Encoder部分(识别模型)和Decoder部分(生成模型)的结构和各个参数的含义。这篇文章同时也提及了reparemetriazation trick的原理。

对于VAE结构的理解和讨论,可以看这篇文章

实现

Keras实现在这里

PyTorch实现在这里

论文笔记

摘要

复述生成是NLP一个重要的课题,本文的模型将VAE和LSTM结合起来生成复述。传统的VAE结合RNN时,生成的句子不符合复述的要求,所以我们将模型的Encoder和Decoder都将原始的句子作为condition进行干涉,这样就达到了复述的效果。这个模型简单、模块化,可以生成不同的多种复述。在量化评测里,本模型明显优于state-of-the-art模型;分析发现模型语法良好;在新数据集上进行了测试,提供了一个baseline。

引入

Introduction这部分,作者介绍了Paraphrase在QA等方面的应用,以及之前的paraphrase方法,认为其多制约于规则,而深度学习的生成模型更加是数据驱动。
区别于VAE的在句子生成上的其他应用,本文的复述模型需要捕获原本句子的特征,所以unconditional的句子生成模型并不适用于此任务。conndition的机制在过去曾被应用到CV领域,然而CV的应用仅仅是用有限的class label作为condition,以及不需要任何的intermediate representation。本文的方法在Encoder和Decoder方面都进行了condition,并且通过LSTM得到intermediate representation。

本文的生成框架对比seq2seq模型,尽管后者可以使用beam search,但不能同时产生多个效果很好的结果,因为beam search的后面结果总是比最顶部的差。在Quora数据集上,本文的模型表现很好。

方法

VAE结构

VAE是一个深度生成式隐变量模型,可以从高维输入学习到丰富、非线性的表示。
编码器方面,相比AE使用了一个确切的编码器函数qΦqΦ,VAE使用了后验分布qΦ(z|x)qΦ(z|x)(或者说识别模型)。这个后验分布通常被假设为高斯分部,所以参数ΦΦ只有均值和方差。VAE使后验分布qΦ(z|x)qΦ(z|x)尽可能地接近先验分布p(z)p(z),通常也被视为高斯分布。
VAE的解码器模型,使用了另一个分布pθ(x|z)pθ(x|z),也就是输入隐变量(z)(z),还原出xx。其参数θθ使用另一个前馈神经网络的输出值。
将观测数据x(i)x(i)的对数似然可以写作:

logpθ(x(i)=KL(qΦ(z|x(i))||pθ(z|x(i)))+L(θ,Φ;x(i)))log⁡pθ(x(i)=KL(qΦ(z|x(i))||pθ(z|x(i)))+L(θ,Φ;x(i)))

将ELBOELBO记为LL,然后通过优化LL,来间接优化似然。
LL可以写作:

L(θ,Φ;x(i)))=−KL(qΦ(z|x(i))||pθ(z))+EqΦ(z|x)[logpθ(x(i)|z)]L(θ,Φ;x(i)))=−KL(qΦ(z|x(i))||pθ(z))+EqΦ(z|x)[log⁡pθ(x(i)|z)]

优化目标变为后面两项。

具体的推导可以参考这个教程

更多地,在建模文字数据的时候,也可以使用KL-term annealing以及dropout of inputs of the decoder等训练技巧,避免一些问题。

模型结构

我们的训练集使用了N对句子,表示为{\mathbf{s}_n^{(o), \mathbf{s}_n^{(p)}}^N_{n=1}{\mathbf{s}_n^{(o), \mathbf{s}_n^{(p)}}^N_{n=1},其中原始句子用oo标注,复述句子用pp标注。句子的向量表示标记为x(o)x(o)与x(p)x(p),

去掉LSTM后,本文的宏观模型如图所示:

区别于传统的VAE,本文构建的模型将xoxo作为了condition加在了Encoder和Decoder之上。

更加细节的结构如图所示:

实际上,本文的模型包括了三个LSTM encoder和一个LSTM decoder,总共有4个LSTM,如上图所示。

在VAE的Encoder方面,两个LSTM encoder被使用,第一个转换原始句子s(o)s(o)到其向量表示xoxo,与复述句子s(p)s(p)送入第二个LSTM。将两个句子都编码进了LSTM之后,使用一个前馈网络输出ΦΦ,也就是向量表示的均值和方差,送入VAE。

在VAE的Decoder方面,VAE输出隐变量zz,第三个LSTM编码原始句子,然后将原始句子的向量表示x(o)x(o)与zz一同送入第四个LSTM,产生复述的句子。

将LSTM抽象化,可以得到一个这样的模型:

这个模型的variational lower-bound,也就是ELBOELBO如下。最小化KL散度的过程等同于最大化ELBOELBO的过程。

L(θ,Φ;x(p),x(o)))=EqΦ(z|x(p),x(o))[logpθ(x(p)|z,x(o))]−KL(qΦ(z|x(p),x(o))||p(z))L(θ,Φ;x(p),x(o)))=EqΦ(z|x(p),x(o))[log⁡pθ(x(p)|z,x(o))]−KL(qΦ(z|x(p),x(o))||p(z))

模型的训练方法与《Generating sentences from a continuous space》中的相同。这篇论文深深地影响了后续论文的思路。

实验

数据集

本文使用了两个数据集进行评测。

MSCOCO数据集

这个数据集,也曾用于评测句子复述的方法,对120K张图片分别有人工标注的五句描述。构建数据集的时候,本文随机忽略一个描述,然后将剩下的描述两两配对组成数据集,同时限制长度在15个单词以内,以减少模型复杂度。

Quora数据集

Quora在2017年发布了一个数据集,包含400K行潜在的重复问题对。借助这个数据集,本文将重复的问题看作是复述的句子进行训练。重复的问题对大约有155K对,使用50K,100K,150K对进行训练,4K对作为测试。

实验设置

实验的主要参数设置参考了《Generating sentences from a continuous space》的实现代码,未对任何数据集做fine-tuning。本文模型中,作者没有使用预先embedding好的词向量,而是自己进行了训练。embedding dimension设置为300,encoder和decoder的dimension是600,隐变量dimension是1100。Encoder只有一层而Decoder有两层。模型使用SGD进行训练,学习率固定为5∗10−55∗10−5,dropout为0.3,batch size为32。

评测

本文使用了BLEU,METEOR和TER进行评测。因为这个过程类似翻译任务,所以借用翻译的指标效果会比较好。评测结果显示优于其他模型。

评测包含了对实验结果的分析,可以直接阅读原文。

结论

本文提出了一个深度生成框架,基于VAE,增加了seq2seq模型,用于生成释义。与传统的VAE和无条件句子生成模型不同,这个模型在输入句子上调节VAE的encoder和decoder侧,因此可以为给定句子生成多个释义。在一般复述生成数据集上评估所提出的方法,并且表明它在很大程度上优于现有技术,没有任何超参数调整。本文还评估了对最近发布的问题复述数据集的方法,并展示了其卓越的性能。生成的释义不仅在语义上与原始输入句子相似,而且还能够捕获与原始句子相关的新概念。

想法

这篇文章是我阅读的第一篇关于VAE文本生成的论文,我将在本周使用PyTorch完成这个模型的复现工作。在学习VAE背后深层原理的过程中,我遇到了一些麻烦,只能说是初步理解。然而工程上VAE是一个相比GAN更加自然地适用于NLP的模型,其噪声与重建的对抗思路让我对文本生成有了全新的认识。

对于VAE结构,我自己还需要做更多的推导、学习,反复阅读笔记最前面的几篇文章,加深理解。如果不能完整理解VAE的构建过程,就无从提起改进。

文章亮点

文章提出了一个基于VAE的模型,但这个模型并不是单纯的文本生成,而是使用了condition,那么这个condition对VAE公式要做一些改动,这个思维的推理过程结合了一定理论成分。
在句子复述的领域中,这个模型生成的句子在可读性(METEOR,人类评估)上有着一定优势,能不能用于语法改错?虽然语法改错上我猜测基于规则的模型会更加精确全面,但一定程度上自动改善语法问题,应该有一定帮助。

想法

这篇文章使用VAE来做句子复述,那么是否可以将condition的概念拓展到另外的领域?

在2016年的那篇VAE做NLP的开创性论文中,提及了这样一个问题,在实际的训练过程中,KL散度可能会出现collapse,导致后验等于先验。由于 RNN-based 的 decoder 有着非常强的 modeling power,直接导致即使依赖很少的 history 信息也可以让 reconstruction errors 降得很低,换句话说,decoder 不依赖 encoder 提供的 z 了,VAE-LSTM模型因此退化成RNN-LM语言模型。

在那篇论文里,使用的缓解办法就是KL cost annealing 和 Word dropout。目前对VAE结构的改进研究也很多,我认为改变VAE结构,进行微调,其效果有可能陷入GAN的一堆改进结构的泥淖里。

如果将VAE引入其他模型会怎么样呢?哈佛NLP组提出过注意力模型的解决方案。我觉得这方面的思考非常有吸引力。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值