一、GAN
Generator,输入一个向量可以得到制作的图片(高维向量),改变向量可以改变输出的特征。
Discriminator,判断生成的图片的真假,越像真则数值越大
一开始的generator随机生成一些图片,discriminator收到生成的图片和真实的图片进行判断,discriminator学习给真实数据高分数,给生成数据低分数。两边一起进化博弈,generator生成更加真实的图片,discriminator进行更加准确的判断。
generator和discriminator两个在一起构成一个大网络,最后输出的是一个数值。训练generator时将后面的层冻结,可以看到,这个大网络中间的hidden layer输出的是64*64的数据,就是生成的图片。
训练过程
二、Conditional GAN
discriminator不仅要判断生成的是否像一张真的图片,还要判断是否符合输入的条件。
三、VAE-GAN
VAE-GAN
VAE-GAN的原理是用GAN来强化VAE,VAE本身就是一个auto-encoder的变形。auto-encider大家都很熟悉了。
在原来VAE的基础上加一个discriminator,看看output的image越真实越好。如果只是做VAE,那么图片会很模糊。加上discriminator后迫使output越真实越好。从GAN的角度来看,在train GAN的时候,generator从来没见过真正的image长什么样,如果通过auto-encoder的架构,generator不仅仅要骗过discriminator,它见过真实的图片长什么样,所以VAE GAN学起来会更稳一点。
在VAE-GAN中,各个部件的优化目标如下:
encoder:minimize reconstruction error,同时希望encode的向量z越接近真实越好。
Generator(同时也是decoder): Minimize reconstruction error, 同时 cheat discriminator
Discriminator: 区分真实图片和generator生成的图片。