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\)的概率尽可能大,即最大重构。