GAN基础笔记
GAN简述
GAN的全称是Generative Adversarial Network,中文名为生成对抗网络。主要构成为Generator和Discriminator。Generator为生成器,Discriminator为鉴别器。给定一个Database(假设为image),Generator的目标是尽力生成和Database接近的image;而Discriminator的目标是尽力区分Generator产生的image以及Database的image。Generator和Discriminator互相对抗提升(类似做假钞的坏蜀黍和验假钞的警察uncle),最终要达到的结果是Discriminator无法区分image是来自Generator还是Database。Generator能不能单独完成任务?
回答是可以的。相当于Auto-encode中的Deconder。但是网络层数相同的情况下,用VAE产生的图片的质量没有用GAN产生的好。此外,pixel和pixel之间也无法相互联系(也即没有全局观),除非加深网络深度。Discriminator能不能单独完成任务?
明确Discriminator训练过程中需要合适的Negative example,而Generator恰好能提供。
Generator就相当于上述式子Generator+Discriminator
Bottom up (Generator):learn to generate the object at the component level.
Top down (Discriminator):Evaluating the whole object and find the best are.
在生成图像过程中,component之间的关系尤为重要。故而两者能够互补互成。GAN算法
记Generator产生的数据集为,记输入网络的数据集为,我们应当使得和尽可能地接近。由Maximum Likelihood Estimation = Minimize KL Divergence.我们得知,我们应当算出和的Divergence,然后再最小化Divergence。来到这里我们先来看看有关Discriminator的训练。
Train Discriminator:(fix G)
通过推算,我们可以得出,在寻求D的最优解过程,实际就是在计算和的JS divergence。所以就转换为。我们再回过头来看,如何去,由于在Training Discriminator的过程中我们是把Generator定住的,所以我们先把记为,对其求偏导:
下图为pratice中的算法流程: