论文引介 Generating Sentences from a Continuous Space

 

论文引介——Generating Sentences from a Continuous Space...



文章原名:Generating Sentences from a Continuous Space

作者:Samuel R.Bowman1, Luke Vilnis2, Oriol Vinyals3, Andrew M.Dai3, Rafal Jozefowicz3 & Samy Bengio3.

单位:NLP Group and Dept. of Linguistics, Stanford University1. University of Massachusetts Amherst2.  Google Brain3.

译者:曾文远

链接:

https://arxiv.org/abs/1511.06349(可戳下方阅读原文)

1
导读

传统的RNN语言模型虽然已经取得了不错的成效,但是由于每一步只生成一个单词,所以这一类模型在生成句子的时候并没有一个全局的特征,比较难以刻画主题、风格、内容等信息。本文将变分自动编码器引入到了RNN语言模型中,尝试解决该问题。文章中通过考察隐变量空间中先验分布生成的句子、相邻点生成的句子,发现将变分自动编码器和RNN结合取得了不错的结果。本文还详细说明了如何解决模型中存在的难以训练的问题,同时给出了一些失败的例子供读者参考。
2
模型

语言模型是一类无监督学习模型。训练样例为没有标注的纯文本。模型在每一个时间节点上根据上文来输出一个最可能的单词,不断重复该步骤便可生成一句完整的句子。训练中,优化的目标就是使得输出正确单词的概率尽可能的大。

变分自动编码器,又称VAE,是2014年新提出的一种自动编码器模型。比起传统自动编码器,变分自动编码器对于隐变量层有一个限制条件,使得隐变量层的结构更加紧凑。同时,这个限制条件的引入使得变分自动编码器实际上成为一种生成模型,可以从隐变量空间中根据先验分布采样一个点,然后由该点演化生成为一个目标输出。具体来说,变分自动编码器优化的目标如下:



其中L(θ;x)为待优化的损失函数,z 隐变量空间的向量,x 为输入向量。p(z) 表示隐变量空间的先验分布,一般选择为标准正态分布。qθ(z|x) 为隐变量空间在给定输入x后的后验分布,模型中采用神经网络来近似这一后验分布。 pθ(x|z) 为由隐变量空间中的点生成最终输出的概率分布,本质上是一个生成模型。通过优化L(θ;x),实际上是优化了真实数据分布p(x) 的一个下限,从而对真实数据分布进行一定程度上的近似和逼近。

在本文中,作者将语言模型(文章中采用了RNN)和变分自动编码器结合到一起,其模型结构可参见下图。



该模型的训练过程可以叙述如下:对于一句输入的纯文本,RNN依次读入每一个单词,并输出一个当前的状态。当最后一个单词读入完毕后,最后输出的这个状态被输入到多层感知机的模型中,输出两个参数μ,σ这两个参数即为qθ(z|x) (采用高斯分布)中的两个对应参数。随即模型从qθ(z|x) 中随即采样出一个点z, 这个z 向量将作为另一个RNN的初始状态向量,参与到最终输出文本的生成中。值得注意的是,在训练过程中,输入文本和输出文本是相同的一句话。而在测试过程中,则直接根据标准正态分布采样出一个点z, 然后再由训练好的RNN生成文本。
3
训练

作者指出,直接暴力的优化最终的目标,会存在学习困难的问题。这主要是由于RNN的语言模型有很强的表达能力,而变分自动编码器的隐变量层相对来说难以训练。这将导致模型在训练时先训练 pθ(x|z) ,而将 qθ(x|z) 坍缩到标准正态分布上。这样的结果会导致隐变量层实质上没有包含任何信息。为了解决这一点,作者提出了两种方案。

首先,作者采用了KL项退火的方式。即在刚开始训练时,对优化目标中的KL项给予很小的权重,之后慢慢的将这个权重加大直至1。这样在经历足够长的训练时间之后,确保模型是优化了正确的训练目标。在下图中,我们可以看到蓝色的曲线是KL项的权重,红色的线表示KL项的值。可以看到,在经历足够长的时间后,红色的线没有趋于零。这表示隐变量层的确包含了一定的信息。



其次,作者提出可以在RNN语言模型的生成端采用词级别的dropout。这是为了使得 pθ(x|z) 变得更加难以训练,从而平衡 pθ(x|z) 和 qθ(x|z) 的训练难度。
4
实验

本文在常用的PTB数据集上进行了语言模型的评价,同时对于生成的句子做了一些进一步的讨论。



可以看到,在标准意义下的评价中,本文的模型取得了和常规RNN模型相仿,但是稍差一些的结果。作者指出这可能是由于变分自动编码器实际上优化和计算的是一个PPL的上限,这可能会使得难以直接比较RNNLM和VAE的结果。不过,在作者提出的Inputless评价的意义上(类似于训练技巧中的词级别dropdout),本文的模型去的了更好的结果。

作者接下来讨论了各种情况下生成句子的质量和一些可能的原因。下图显示的是将一句话输入到模型中后,模型先计算对应的qθ(x|z) 后再生成句子所得到的结果。我们可以看到,即便是完全相同的输入,模型也会给出不同的结果。这区别于传统的RNNLM,因为RNNLM对于给定的开头一定会输出完全一样的结果。



另一个比较有趣的现象是隐变量空间中相邻点对应的句子输出。下图中的句子为隐变量空间中相近的点对应的句子。作者指出,这些句子拥有比较相似的主题和句法,这说明隐变量空间的确包含了非常有效的信息。
文章中还有一些其他情况下生成句子的讨论,有兴趣的读者可以进一步研究。
5
总结

本文提供了一种将变分自动编码器应用到语言模型的方法,同时提出了一些训练的技巧成功解决了模型存在的难以训练的问题。从实验来看,取得了不错的结果。文章还分析了大量的生成样例,并在不同的情况下进行了仔细的讨论。对于之后的语言模型有不少的借鉴价值。



    关注 智能立方


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册