论文地址:
Auto-Encoding Variational Bayes
Tutorial on Variational Autoencoders
强烈建议看上方链接的第二篇,是一篇通俗易懂的变分自编码的教程,本文也是基于这篇教程
Variational Autoencoders
变分自编码器作为一种生成模型,类似GANs,使用一个潜变量(latent variable)z来生成x
其中举了一个例子关于latent variable z是什么
假设我们要生成0-9的图片
是我们用来进行maximum likelihood最大似然估计的概率,其中
在VAE(Variational Auto-Encoding )中,基于z的输出x分布存于高斯分布
其中为期望,
为方差,I为单位矩阵(identity matrix),
为超参数
首先,我们如何选择z来捕捉我们需要的隐藏信息呢,在VAE中,采用了让z服从于高斯分布
但是为什么z服从于高斯分布就可以生成x呢,文中举了一个例子
上图中的左图为高斯分布中随机采样出的z,我们想要让这些点形成一个环得到X
其中,就可以得到上图中右图的效果
下图中的这段文字解释了为什么高斯分布的z可以达到这样的效果
生成模型如上图所示,从z中进行N次采样进行生成X
我们想要最大化,其中
对上式使用贝叶斯得到
整理得到
Q将X进行encoding到z,P将z进行decoding到X,这就是编码器的体现
对于(5)的等式左边是我们需要优化的
对于(5)的等式右边是我们需要计算的
对于使用采样估计
上图左图就是整个变分自编码的网络,有两个loss,一个是KL散度,一个是X和生成的X之间的交叉熵
但是我们看到这个部分,是无法使用梯度下降进行反向传播的,因此在这里采用了reparameterization trick,也就是在N(0,I)上进行采样,然后使用协方差乘上加上期望来得到z,也就是上图右图所示的方法
在最终应用阶段和测试阶段,只需要decoder网络,输入从N(0,I)中随机采样的z,就可以得到生成的X
Conditional Variational Autoencoders
其中X为输入(条件condition),Y为我们期望的输出