【GANs学习笔记】(二十二)VAEGAN、BiGAN

完整笔记:http://www.gwylab.com/note-gans.html
———————————————————————

2. VAEGAN

     2.1 VAEGAN的原理

       我们知道VAE可以实现从原始分布编码到一个normal的分布,再从normal的分布解码回原始分布的功能,然后这个解码用到的decoder就可以单独被提取出来作为generator使用。但是,VAE有一个很大的问题就是,解码产生的图片往往都比较模糊。那为什么产生的图片会模糊?我会在之后学习VAE的过程中再去研究,目前我们只是知道,VAE产生的图片是容易模糊的。于是就出现了VAEGAN,它的作用,就是给VAE加上了GANs的架构,通过discriminator使得VAE产生的图片变得清晰。因此我们可以理解为,VAEGAN就是利用GANs去提升了VAE的图片生成质量。

【GANs学习笔记】(二十二)VAEGAN、BiGAN_第1张图片

       我们来说明一下这个架构。首先输入一张真实图像,通过一个encoder变成一个normal的分布z,然后z再输入到decoder中产生生成图像,这时VAE希望之间的loss越小越好,但是loss小不见得图片就清晰,于是又会被放入一个discriminator中,去让discriminator判断输入的图片属于还是,这样最终就会与不仅相似还清晰。

       而关于VAEGAN,有趣的一点是,我们不仅可以用GANs来提升VAE,也可以用VAE来提升GANs。如果是被用作后者的话,“GANVAE”其实就等效为CycleGAN的一部分,如下图所示。

【GANs学习笔记】(二十二)VAEGAN、BiGAN_第2张图片

       这两者的差别在于,把x encodez的过程是放在generator的前面还是后面,如果放在前面,就是VAEGAN;如果放在后面,就是CycleGAN

     2.2 VAEGAN的变种

       上一节的VAEGAN存在一个问题,就是Encoder编码出的z不一定完全符合我们期望的normal z的样式,也就是编码出的z和我们输入的z可以存在细微的不同,但是通过generator的处理,它们产生的输出都能够骗过discriminator

为了解决这一问题VAEGAN提出了一个变种,它改变了discriminator,使得discriminator能更精细的鉴别输入图像的种类,共包括三个种类:真实图片,重构图片,与生成图片。

【GANs学习笔记】(二十二)VAEGAN、BiGAN_第3张图片

       其中重构图片与生成图片的差异是,重构图片是真实图片通过encoderdecoder之后产生的图片,如下图所示。

而生成图片仅仅是一个初始分布z通过decoder之后产生的图片,如下图所示:

于是现在的差异能够被discriminator学到,又因为generator是共用的,那为了消除这种差异只能让输入z接近一致,也就是encoder编码出的z不断逼近我们给定的输入z,最终几乎完全一样。结果证明,这种模型在实验中比VAEGAN有少量的提升。



 

3. BiGAN

     3.1 BiGAN的原理

       GANs的花样可以说五花八门,上篇介绍的VAEGAN是基于GANs训练的auto-encoder,现在BiGAN提出,encoderdecoder的训练可以分开进行,结果依然是可靠的。

【GANs学习笔记】(二十二)VAEGAN、BiGAN_第4张图片

       BiGAN的架构其实挺好理解。首先有一个encoder,输入真实图片,产生一个编码;另外有一个与encoder无关的decoder,输入一段给定编码,产生一个图片;最后有一个discriminator,它输入一段图片与编码的配对,它需要去判断这个配对是来自encoder还是decoder

       我们从理论上来简单分析一下这个模型产生的效果。假定encoder产生的配对的分布是P(x,z),其中x已知,z未知;另一边decoder产生的配对的分布是Q(x’,z’),其中z’已知,x’未知。而discriminator的作用是在消除PQ之间的divergence,也就是说最终P分布会与Q分布长得一模一样,这意味着encoder学到的输出z就是已知的z’,而decoder学到的输出x’就是已知的x。因此,最终的encoderdecoder就是互为逆运算的过程。

【GANs学习笔记】(二十二)VAEGAN、BiGAN_第5张图片

下面我们来讨论一下BiGAN的实际使用效果。

     3.2 BiGAN的讨论

       在讨论BiGAN之前,我们先介绍一个与之对应的结构BiVAE

【GANs学习笔记】(二十二)VAEGAN、BiGAN_第6张图片

       就如同BiGAN的本质是在训练两个GANsBiVAE的本质就是在训练两个VAE。现在我们已知的信息是真实图片x和先验编码z。首先我们搭建一个VAE,实现x->encoder->z->decoder->的过程,我们希望x越接近越好;然后我们把encoderdecoder反过来,实现z->decoder->x->encoder->的过程,我们希望z越接近越好。

       那这样的BiVAE的训练结果如何呢?就是输出结果与原图非常相似,但是却比较模糊,这与传统VAE的毛病几乎是一致的。我们再来看一下BiGAN的输出结果,就是产生的图片会非常清晰,但是往往与原图不相似。举一个例子,比如说输入是一张鸟的图片,通过BiGAN的输出也会是一张清晰的鸟的图片,但是输出的鸟与输入的鸟不是同一种鸟。

       于是,现在我们可以知道,下一步人们需要做的,就是构造一个模型,把BiGANBiVAE的优点结合起来,实现一个稳定可靠的auto-encoder。可惜截至目前,还并没有一个模型能够解决这一问题。

你可能感兴趣的:(GANs学习笔记,GANs,VAEGAN,BiGAN)