VAE-GAN如下图所示,也就是VAE+GAN的组合。
我们知道VAE是由一个编码器一个解码器组成,编码器可以将数据映射到一个低维的空间分布code c,而解码器可以将这个分布还原回原始数据,因此decoder是很像GAN中的generateor,如果再后面拼接上一个判别器D,这样的话,前两个模块就是VAE,后俩模块就是GAN。

训练的时候,decoder输出的x’要和原始的x尽可能接近(L1或L2距离),x’和真实数据x经过D需要判别出是是否是真实的图片,训练结束后,我们就能直接取出GAN的部分做生成使用,也可以取出VAE的部分,做压缩降维处理。
为什么要这么设计呢?
VAE有一个很大的问题就是,解码产生的图片往往都比较模糊。虽然我们希望decoder输出的x’要和原始的x尽可能接近,也就是loss越小越好,但是很难真的能loss小到0啊,loss越小不代表图片越是看起来越真实啊,因此我们就需要一个判别器来判别图片是不是真实的,可以来帮助VAE提高真实性。
另一方面从GAN的角度来看,之前我们的generateor输入都是随机的,比如采样某个噪声输入,训练起来比较难,现在有了VAE,我么就能准确摸索到generateor的输入的大概空间分布了,这样会变得准确高效一些。
也就是VAE和GAN相辅相成,互帮互组,最后训练完了后,VAE和GAN都是表现的更加优秀。
既然VAE和GAN能相辅相成,我们也可以做出下面的变化,这是不是很熟悉?如下图:

是不是很熟悉?因为这个结构就像是CycleGAN的结构啊,我们希望输入generator的z和经过generator和encoder后得到的z越接近越好,此时也需要判别器D来帮助VAE提

最低0.47元/天 解锁文章
701

被折叠的 条评论
为什么被折叠?



