VAE with a VampPrior

Tomczak J. & Welling M. VAE with a VampPrior. In International Conference on Artificial Intelligence and Statistics (AISTATS), 2018.

这篇文章提出了一种新的"多模态"的先验.

主要内容

首先根据这里的推导可知,

\[\begin{array}{ll} \mathcal{L}(\phi, \theta, \lambda) =& \mathbb{E}_{q(x)} [\mathbb{E}_{q_{\phi}(z|x)}\log p_{\theta}(x|z)] \\ &+ \mathbb{E}_{x \sim q(x)}[\mathbb{H}[q_{\phi}(z|x)]] \\ &- \mathbb{E}_{z \sim q(z)}[-\log p_{\lambda}(z)]. \end{array} \]

其中, \(q(z) = \frac{1}{N} \sum_{n=1}^{N} q_{\phi}(z|x_n).\)
因为只有最后一项(交叉熵)和先验分布有关系, 可见, 最优的先验分布\(p_{\lambda}\)就是

\[q(z) = \frac{1}{N} \sum_{n=1}^{N} q_{\phi}(z|x_n). \]

但是这样的先验分布每一次计算量太大, 所以作者退而求其次, 假设

\[p_{\lambda}(z) = \frac{1}{K} \sum_{k=1}^K q_{\phi}(z|\mu_k), \]

其中\(\mu_k\)是可训练的参数.

分级的VAE

image-20210319181208994

一般的VAE的隐变量往往只有少部分是激活的有效的, 而且这一点越在deep的网络中越容易出现.
所以作者提出了如上图(b)的一种双层的改进方式.

具体的, variational part:

\[q_{\phi}(z_1|x, z_2)q_{\psi}(z_2|x), \]

generative part:

\[p_{\theta}(x|z_1, z_2) p_{\lambda}(z_1|z_2)p(z_2). \]

其中:

image-20210319181904353

感觉有点残差的味道.

代码

原文代码

posted @ 2021-03-19 18:21  馒头and花卷  阅读(158)  评论(0编辑  收藏  举报