文章名称
【ACL-2019】An End-to-End Generative Architecture for Paraphrase Generation
核心要点
文章旨在进行释义生成。作者通过构建条件生成网络架构(CVAE),结合对抗训练方法(在CVAE生成句子之后,加入句子是否是真实的判别器,通俗的说就是判断这个句子是不是假的或者不在语料里),在没有额外语义信息输入的情况下实现真实的释义生成。
方法细节
问题引入
原有的释义生成模型包括三种类型,1)seq2seq;2)基于强化学习;3)基于生成网络,如CVAE。作者发现原有方法存在两方面问题,1)由于潜在的搜索空间较大且大多数的搜素空间是不存在实际的语义(可以不去搜索),因此,随机采样的情况下,基于生成模型的释义生成网络,存在无法生成真实语句的问题。此外,利用LSTM的方法,存在Exposure Bias的问题(参见[1])并利用规划采样方法缓解这一问题。然而,[2]说明这种方法在实际场景中无法应用,主要是因为这个方法和训练的策略目标是不一致的。此外,原有的许多方法需要引入额外的语言学信息。
具体做法
作者提出的模型的整体框架如下图所示,模型可以被理解为,1)使用CVAE进行释义生成,2)并且利用一个外加的判别器,增强CVAE。这个基于对抗训练的判别器,被用来判断整个句子是否是真实的(符合语料中句子的分布)。由于不像以前的生成网络判断单个词是否真实(LSTM的生成原理,尽量确保下一个词的似然最大),理论上应该可以缓解上述提到的,LSTM曝光偏差问题。
总结下来,模型整体框架包括3部分,1)CVAE的编码器;2)CVAE的解码器;3)(基于对抗损失的)判别器。
首先,编码器由两个LSTM组成,用来生成隐变量。把输入的原句子和目标句子串联的输入到中隐变量的高斯分布参数,标记这个的分布为。这里讲的串联输入指的是什么呢?读过自然语言生成工具箱 - VAE-LSTM应该比较清楚,其实就是作为LSTM 的输入,作为LSTM 的输入,最终的隐状态作为的初始隐状态,利用的最终隐状态,得到。
但是,在预测时,我们没有平行语料,即只有没有,这就会造成上述VAE无意义的在搜索空间中搜索的问题(因为没有了目标指导的信息)。作者提出,另一路数据流,单独把输入到,并且得到,标记这个的分布为q(z|s^o)$(论文的文字描述部分应该是有typo)。
解码器部分仍然是由两个LSTM组成,同样分成两股数据里,第一股是把原始句子和作为输入,串联的输入到两个LSTM中。这里讲的串联输入也和自然语言生成工具箱 - VAE-LSTM中的一样,输入到LSTM 中,把生成的最终隐状态当做LSTM 的初始隐状态,把生成的词的词向量拼接上作为LSTM每一步的输入(第一个词用特殊标记BOS代替),得到生成的句子,生成的概率函数如下图所示。
第二股同理把原始句子和作为输入,串联的输入到两个LSTM中,训练时利用作为监督信息,计算重构损失,两个损失函数如下图所示。
由于采用了VAE的框架,因此需要通过优化ELBO来进行VAE模型的变分学习,优化的损失函数如下图所示。其中,共同训练编码器和解码器的损失中,表示是从该分布中采样的结果。
作者认为,由于使用了两个编码器和解码过程(以及对应两股损失的梯度回传),弥补了训练时有目标句子,测试时没有的差距,能够帮助减缓上述存在的搜索空间的问题,有助于生成多样化且真实的释义。
用来判断生成句子是否真实(是否符合原语料的分布的判别器)可以是一个简单的LSTM,这里的判别任务和原来GAN框架下的判别任务是一致的,都是区别一个样本是生成的还是原有的(真实的)。判别器的损失函数如下图所示,同样表示是从该分布中采样的结果。
值得注意的是,作者给出了两个训练的tricks。1)由于监督的反向传播很难训练序列生成网络,因此作者利用[3]中提出的policy gradient的方法训练解码器(生成器)和编码器,并把判别器的判别输出当做reward;2)GAN的训练是比较困难的,之前的方法会采用预训练的方式,作者利用超参数的提升,在的过程中逐渐增大对损失的影响(也就是判别器的影响)来有简单到复杂的训练模型,稳定训练过程。同样的思路也应用到超参来平衡目标句子的影响,逐渐过渡到测试状态。
代码实现
文章的伪代码如下图所示。
心得体会
服从的分布
由于文章在生成器部分分成了两股数据流,生成了两个,分别服从分布和(论文的文字描述部分应该是有typo)。因此,在计算损失的时候,需要注意生成的来自哪个分布。其中,公式7中的来自于平行语料生成的,而公式8的来自原始句子单独生成的。另外,判别器的损失函数中,也来自于原始句子单独生成的。
关于对撞结构,文中举的例子可能更贴切一点。一个人长得好看和脾气好没有什么关系(相互独立,不要跟我聊什么相由心生:p)。但是两者共同决定一个人是否受欢迎,如果这个人被确认是受欢迎的,那么他要么长得好,要么脾气好(不考虑其他的)。这个例子,比流行程度和物品特质这个例子更好理解。
文章引用
[1] Samy Bengio, Oriol Vinyals, Navdeep Jaitly, and Noam Shazeer. 2015. Scheduled sampling for sequence prediction with recurrent neural networks. In Advances in Neural Information Processing Systems, pages 1171–1179.
[2] Ferenc Huszar. 2015. How (not) to train your generative model: Scheduled sampling, likelihood, adversary? stat, 1050:16.
[3] Lantao Yu, Weinan Zhang, Jun Wang, and Yong Yu. 2017. Seqgan: Sequence generative adversarial nets with policy gradient. In Thirty-First AAAI Conference on Artificial Intelligence.