小菜

导航

vae

vae推导

我们试着由编码器去推出一个分布,不再是固定的编码,编码器为\(p(z|x)\),解码器为\(p(x|z)\)

不同于混合高斯的是,关于隐含变量的混合高斯不容易求,如下式:

\[p(z|x)=\frac{p(x,z)}{p(x)}\\ p(z|x)=\frac{p(x|z)\times p(z)}{\int_{z}p(x|z)\times p(z)dz} \tag{1} \label{1}\\ \]

对于混合高斯来说,\(p(x|z)\)容易求得,因为\(z\)是离散的,且\(p(z)\)容易求得,分母也可以转化为求和,所以混合高斯的隐含变量的后验容易。

但是隐含变量离散的话表达不了更复杂的隐含特征,如果是连续多维的,后验便不那么容易求得到。现在我们引入

\(q(z|x)\)这个可伸缩的分布来逼近后验。

\[\begin{aligned} \log p(x) &= \log{\frac{p(x,z)}{p(z|x)}}\\ &=\log{p(x,z)}-log{p(z|x)} \end{aligned} \]

现在我们证明一个东西:等式两端对\(q(z|x)\)求期望

左边:

\[\begin{aligned} \mathbb{E}_{z\sim q(z|x)}{\log p(x)}&=\int{q(z|x)\log{p(x)}dz} \\ &=\log{p(x)\int{q(z|x)}dz}\\ &=\log{p(x)} \end{aligned} \]

右边:

\[\begin{aligned} \mathbb{E}_{z\sim q(z|x)}{\log{p(x,z)}-log{p(z|x)}}&=\int{q(z|x)(\log{p(x,z)}-log{p(z|x))}dz} \\ &=\int{q(z|x)\log{\frac{p(x,z)}{q(z|x)}}dz}-\int{q(z|x)\log{\frac{p(z|x)}{q(z|x)}}dz}\\ &=\int{q(z|x)\log{\frac{p(x,z)}{q(z|x)}}dz}+\mathbb{D}_{KL}(q(z|x)||{p(z|x)})\\ &=ELBO+\mathbb{D}_{KL}(q(z|x)||{p(z|x)}) \end{aligned} \]

\[\log{p(x)}=ELBO+\mathbb{D}_{KL}(q(z|x)||{p(z|x)}) \tag{2}\label{2} \]

好,证明告一段落,现在回到最初:我们要用\(q(z|x)\)来逼近\(p(z|x)\),通过\(\eqref{2}\)式得,给定x时,左边值固定,那么当\(ELBO\) 取最大时,\(\mathbb{D}_{KL}\)最小,他俩越接近。

我们这里假设\(q(z|x)\)的参数为\(\phi\) ,即我们要通过神经网络拟合的就是这个\(\phi\),如何拟合呢,即给定x时,不断地

\[\begin{aligned} \mathop{\arg\max}_{\phi} ELBO &=\mathop{\arg\max}_{\phi}\int{q_{\phi}(z|x)\log{\frac{p(x,z)}{q_{\phi}(z|x)}}dz}\\ &=\mathop{\arg\max}_{\phi}\int{q_{\phi}(z|x)\log{\frac{p(x|z)p(z)}{q_{\phi}(z|x)}}dz}\\ &=\mathop{\arg\max}_{\phi}\int{q_{\phi}(z|x)\log{{p(x|z)}}dz}+\mathop{\arg\max}_{\phi}\int{q_{\phi}(z|x)\log{\frac{p(z)}{q_{\phi}(z|x)}}dz}\\ &=\mathop{\arg\max}_{\phi}\mathbb{E}_{z\sim q_{\phi}(z|x)}log{p(x|z)}-\mathop{\arg\min}_{\phi}\mathbb{D}_{KL}(q_{\phi}(z|x)||p(z)) \end{aligned}\\ \tag{3}\label{3} \]

到了这里,我们梳理一下,我们要通过\(q(z|x)\)来逼近后验分布$p(z|x) \(,如何逼近呢,就是对\)ELBO\(求最大,然后\)ELBO\(求最大需要哪些步骤呢,如\)\eqref{3}$ 式的两部分,即最大重构与和先验分布的最大相似。

loss也就由这两部分组成,loss越小,\(q(z|x)\)越接近后验分布$p(z|x) $。

\(\eqref{3}\)式的右半部分即是让后验和先验近似,在整理我们假设先验\(p(z)\)为正态分布,因为要近似,我们也假定\(q_{\phi}(z|x)\)为正态分布,我们通过编码网络训练\(\phi\) 然后通过给定\(x\)来求出\(\mu(x,\phi),\sigma(x,\phi)\)

\[\mathop{\arg\min}_{\phi}\mathbb{D}_{KL}(q_{\phi}(z|x)||p(z)) \]

我们先考虑

\[\mathbb{D}_{KL}(q_{\phi}(z|x)||p(z)) \]

\[q_{\phi}(z|x)=N(\mu(x,\phi),\sigma^2(x,\phi)I)\\ p_{\phi}(x|z)=N(\mu(z,\theta),\sigma^2(x,\theta)I) \]

这里的\(\theta\)也不难理解,就是\(p(x|z)\)这个解码器的参数,即\(p_{\phi}(x|z)\),这里我们没对他进行逼近。

\[\begin{aligned} \mathbb{D}_{KL}(q_{\phi}(z|x)||p(z))&=KL(N(\mu,\sigma^2)||N(0,1))\\ &=\int{\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{-(x-\mu^{2})/2\sigma^2}\left(\log{\frac{e^{-(x-\mu^{2})/2\sigma^2}/\sqrt{2\pi\sigma^{2}}}{e^{-x^2/2}/\sqrt{2\pi}}}\right)dx}\\ &=\int{\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{-(x-\mu^{2})/2\sigma^2}\log{\Bigg \{\frac{1}{\sqrt{\sigma^2}}exp\Big\{\frac{1}{2}[x^2-(x-\mu)^2/\sigma^2]\Big\}\Bigg\}} dx}\\ &=\frac{1}{2}\int{\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{-(x-\mu^{2})/2\sigma^2}\Big[-\log\sigma^2+x^2-(x-\mu^2)/\sigma^2\Big]dx} \\&=\frac{1}{2}(-\log\sigma^{2}+\mu^{2}+\sigma^{2}-1) \end{aligned} \]

\(\eqref{3}\)式的左半部分可以采用MC算法等价为

\[\mathop{\arg\max}_{\phi}\mathbb{E}_{z\sim q_{\phi}(z|x)}log{p(x|z)}\approx \mathop{\arg\max}_{\phi}\frac{1}{N}\sum_{n=1}^{N}\log{p(x|z^{(n)})} \]

即可理解为通过对隐藏变量进行采样然后通过解码器\(p(x|z)\) 使生成的\(x\)的概率尽可能大,即最大重构。

posted on 2020-12-16 14:59  penbol  阅读(257)  评论(0编辑  收藏  举报