生成对抗网络GAN

初识生成对抗网络GAN。

Generatrion

生成器generator学习分布,因为不是分布的话,如果和之前的话,Network的输出可能会存在歧义的情况;比如说下图中的情况,对视频进行预测,根据前面的帧来进行预测的话,下一帧可能会向左转,或者向右转,于是视频中就出现了分裂的情况;

distribution

因此这种学习分布的Generator适合于需要创造性的任务;

Generative Adversarial Network(GAN)

GAN网络很多变种,GitHub链接:the-gan-zoo

GAN的基本思路就是一个对抗相互学习的过程;

basic idea of GAN

Theory behind GAN

以 Unconditional GAN 为例,GAN的目标是希望生成数据的分布 P_G 和真实数据分布 P_{data} 尽可能地接近,于是就出现了该怎么样衡量两个分布之间的相似性,divergence 散度;

可以从两个分布中进行采样,计算采样出来的样本之间的相似性;

gan theory
sampling

对于判别器(Discriminator)而言,旨在训练一个分类器,它能够最大化D、G之间的散度,这里并不是严格意义上的散度,而是用V表示的一个function;

dicsriminator

总的来说,GAN的步骤就是:

gan step

其他的散度也可以使用;

Tips for GAN

JS divergence 不太适合;

大部分情况下,P_G 和 P_{data} 并不重叠,这样计算出的JS永远为log2,那这个loss值就没有任何的意义,因为无论generator生成的图片是什么样的效果,discriminator都可以达到百分百的准确率;

JS diverence
JS duverence problem

于是出现了Wassersteion distance,考虑到两个分布之间的距离,Wassersteion计算从一个分布到另一个分布需要移动的距离,相较于JS divergence有很大的提高;

problem

采用了Wassersteion distance的网络当年就是WGAN,公式就是下图中的;重点在于对D有一个限制条件,对这个限制条件后面也有一系列的研究;

WGAN
WGAN condition

Conditinal Generation

对于图中的文字转图片的应用来说,这个眼睛颜色就是输入的条件,generation需要根据这个condition决定后面输出的结果;但是对于discriminator来说,不能仅仅判断图像是生成的还是真实的,还需要加上condition

Conditional GAN
Discriminator
Discriminator

Learning from Unpaired Data

这部分主要涉及到的就是风格迁移,将图像从一个domain转换到另一个domain上;

style transform

CycleGAN:

由于没有配对样本,看似可以直接通过generator生成另一个domain里的图片,但是可能生成的跟原始图像之间没有关系,就骗过了discriminator;于是CycleGAN中采用了两个生成器,表示可以将生成的图像又可以转换回原domain中;包含双向的过i成;

cyclegan
cyclegan
cyclegan
cyclegan
cyclegan

Evaluation of Generation

人眼评价;
对生成的图像进行分类,结果集中的话就说明这图生成得很好,和真实的类似;

多样性评价:

GAN训练过程中可能会出现生成的图像全是同一类的,这样虽然质量很好,骗过discriminator;Mode Collapse问题;

mode collapse

在人脸生成过程中,可能存在generator不断迭代,但是人脸只是肤色变化了的问题,Mode Dropping的问题;

mode dropping