URL: https://github.com/baoy-nlp/DSS-VAE

TL;DR

ACL 2019 使用变分自编码器生成句子,通过损失函数使得语法和语义空间分离,从而在无条件生成、复述、风格迁移方面取得更优的结果。

Algorithm

将变分自编码器的潜空间分割为独立的语法和语义两部分。 \( p(x) = \int p(z)p(x|z)dz \Rightarrow p(x) = \int p(z_{sem}) p(z_{syn}) p(x|z_{sem}, z_{syn}) dz_{sem}dz_{syn} \) 类似的通过最大化改进的时间最小边界(ELBO)进行训练。 \( \log p(x) \ge \mathrm{ELBO} = \mathop\mathbb{E}\limits_{q(z_{sem}|x)q(z_{syn}|x)} [\log p(x|z_{sem}, z_{syn})] - KL(q(z_{sem}|x) || p(z_{sem})) - KL(q(z_{syn}|x || p(z_{syn})) \)

考虑到语法有无穷形式,所以采用线性化到语法树到编码来控制生成到语法。

alg
除了采用正则化潜空间常用的多任务损失和对抗损失外,考虑到即使完美划分,两部分也可以通过重排序等方法而不需要另一部分完成任务,这里还用重构对抗损失进一步强化潜空间划分。 $L = L_{vae} + L_{aux} = - \mathop\mathbb{E}\limits_{q(z_{sem}|x)q(z_{syn}|x)} [\log p(x|z_{sem}, z_{syn})] + \lambda^{KL}{sem} KL(q(z{sem}|x) || p(z_{sem})) + \lambda^{KL}{syn} KL(q(z{syn}|x || p(z_{syn})) + \lambda^{mul}{sem} L^{mul}{sem} + \lambda^{adv}{sem} L^{adv}{sem} + \lambda^{rec}{sem} L^{adv}{rec}(z_{sem}) + \lambda^{mul}{syn} L^{mul}{syn} + \lambda^{adv}{syn} L^{adv}{syn} + \lambda^{rec}{syn} L^{adv}{rec}(z_{syn}), \lambda \text{ are the hyperparameters to adjust}$

Dataset

Experiment Detail

作者在重构和无条件生成、无监督复述、风格迁移三个方面进行了实验,并取得了最好的结果。

res1
res2
res3

Thoughts

需要重构对抗损失说明两个空间的假设分布是不独立的。