背景:近年来很多文章将VAE应用到文本生成上,通过引入隐变量对不确定性进行建模。不过有个常见的KL collapsing的问题,最早由Bowman在16年指出[1],现象是直接训练VAE得到的KL接近0,也就意味着近似后验和先验一样,隐变量被模型忽略[5]。Bowman的解决办法是使用KL annealing(KL项的权重从0开始逐渐增加到1)或者word dropout(不常用在此略过)。17年杨子超[2]对kl collapsing的现象进行了更细致的分析,并提出降低decoder的contextual capacity改善这个现象。此外赵天成[3]提出bag-of-word loss去解决这个问题。18年Graves[4]也对kl collapsing进行了分析。
在我们的工作中,attention被建模成隐变量,由于decoder和encoder之间的主要信息传输通道是通过attention,如果忽略了这个隐变量,就会无法得到源文本的信息而得到很大的penalty(这相比之前的许多工作中直接把隐变量加入到每个decoding step不同,因为那样即使decoder忽略了隐变量,也可以达到很好的模型表现[5])。因此通过直接优化目标函数这个隐变量也不易被忽略,我们的实验完全验证了这一点。
值得注意的是,我们将attention建模成隐变量并不是为了单纯应用VAE这个工具,而是因为我们认为将attention建模成隐变量可以为decoder提供更clean的feature,从而在不增加模型参数的情况下提高模型的表达能力(注意inference network在测试阶段不被使用因此不计入模型参数),在我们后面的例子中我们会做一个简单的说明。
以下是一个简单的直觉:与传统的attention机制仅能通过之前生成的单词确定当前即将生成单词的attention(下图蓝色部分,仅能观测到已经预测的单词,由于存在多种翻译方式因此会attend到和实际翻译的单词并不对应的位置)不同,我们通过全部的源文本和目标文本去得到更准确的后验attention(下图红色部分,通过全部信息得到后验,因此attention和实际翻译应该attend的源单词对应),并把更好的后验attention提供给decoder从而使decoder拿到更clean的feature,藉此希望得到更好的模型。
方法:假定x是源文本,y是目标文本,z是attention,根据标准的VAE方法,我们引入inference network q(z | x, y)去近似后验,那么ELBO可以表达为(为了简单我们考虑目标文本只有一个单词的情况):
上面不等式的右侧是ELBO,其中第一项是从q(z | x, y)中采样出attention,使用采样出的attention作为decoder的输入计算cross entropy loss,第二项是确保后验分布接近先验分布(注意到此处的先验和一般的VAE不同,我们的先验是和模型一起学习的)。我们的p(z | x)和q(z | x, y)都是categorical分布,,因此我们使用policy gradient去优化上面的目标函数。
由于我们的后验q能看到全部的x和y,因此后验中采样的attention可以比先验p(z | x)好,比如以下的例子:
这里我们把德语(纵向)翻译成英语(横向),红色代表先验(即只观测到x而不观测到y的p(z | x)),蓝色代表后验(即观测到全部信息的p(z | x, y))。注意到在第二个单词“actually”处,红色的先验试图attend到“nun”后面的逗号“,”,从而试图生成一个“well, ”的翻译结果,然而实际的英语翻译中并没有逗号,而是直接是”well actually”,由于后验q(z | x, y)可以看到实际的翻译,因此蓝色的后验正确attend到了“tatsachlich”上。注意到训练目标ELBO中我们从q中采样attention给decoder,因此通过使用VAE的方法,decoder得到了更准确的attention信号,从而可能提高模型的表达能力。
结果:我们在IWSLT 14 German-English上得到了新的state-of-art,其中KL大约在0.5,cross entropy loss大约在1.26,而且我们人工比较了很多后验和先验也很符合我们的建模直觉。欢迎尝试我们的代码https://github.com/harvardnlp/var-attn(我们提供了能复现我们state-of-art效果的preprocessing、training、evaluation的command,以及我们报告的模型)。我们的工作是对attention的改进,因此理论上可以被应用到一切包含attention的task中,文章里除了机器翻译外我们也做了个视觉问答系统的实验。我们的具体模型和inference network的结构请参见我们的论文和代码。
限于作者的水平,本文中有错误和纰漏在所难免,望读者朋友多多包涵!也欢迎发邮件给我dengyuntian@seas.harvard.edu交流。
[1] Bowman et al, Generating Sentences from a Continuous Space
[2] Yang et al, Improved Variational Autoencoders for Text Modeling using DilatedConvolutions
[3] Zhao et al, Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders
[4] Graves et al, Associative Compression Networks for Representation Learning
[5] Zhang et al, Variational Neural Machine Translation