GAN学习笔记(未完待补充)

以下是我学习Coursera课程Build Basic Generative Adversarial Networks (GANs)后写下的笔记


GAN

GAN把对训练样本概率分布进行建模的问题(Generative Model),转换成两个模型之间的二人非合作博弈问题。一个模型是生成器(generator)。它以一个低维的随机噪声向量作为输入,产生随机“假”样本。另外一个则是判别器(discriminator),试图正确辨别生成器生成的“假”样本以及训练样本中的“真”样本。在辨别真假的训练过程中,判别器给每个假样本打分,并把分数告诉生成器。生成器则利用这些分数信息,试图在下一轮博弈中生成出仿真效果更好的假样本。质量更高的假样本反过来又推动判别器学会更好的辨别真伪。生成器就在这样的竞争中不断优化,生成出仿真度越来越高的样本。

DCGAN

DCGAN也就是deep convolution GAN,源自于2016的论文。生成器和判别器都采用卷积神经网络的模型。据论文描述,这是第一次成功的将CNN应用到GAN上面,而成功的原因主要是因为结合了当时一些新技术,比如去掉了pooling layer,采用batch normalization,等等。

WGAN

值得注意的是,生成器在训练过程中是看不到真实样本的;它所依靠的就是判别器对每个图片的打分。因此判别器的打分对生成器的训练效果至关重要。

现实中的图片因为各种限制,其实是可以通过一个维度小很多的随机变量映射过来的。同样的,生成器生成的图片显然也有这个性质。当维度很小的随机变量映射到高维空间时,很容易找到一个超平面完美的将真伪样本区分。那么对于采用cross entropy loss的判别器,很容易就直接给出0或者1的分数,从而无法给生成器有效的优化信息。Wasserstein GAN(WGAN)的提出正是为了解决这个问题。Wasserstein GAN采用Wasserstein metric作为优化目标。而Wasserstein metric衡量的是把一个概率分布“挪到”另外一个概率分布的所需要的最短平均距离。比起cross entropy,Wasserstein metric更加的平滑,因此即使生成器生成出来的样本与真实样本相距甚远,判别器打出的分数也能能够帮助生成器往正确方向优化。

对于GAN的缺点以及WGAN是如何(部分)解决这个问题的,更详细,更严密的解释参见

https://lilianweng.github.io/lil-log/2017/08/20/from-GAN-to-WGAN.html以及原论文

Conditional GAN

在很多应用中,我们不仅想要随机生成一些样本,我们还希望能够控制产生样本的类别。比如一个生成动物照片的模型,我们可能希望能够按照我们输入的物种来生成图片。实现这一点,只需要在生成器和判别器增加一个输入,即动物的类别。


Comments