生成对抗网络是伊恩,古德费洛(Ian Goodfellow)在2014年提出的。他最早想要解决的问题是如何生成高质量的人工数据集以弥补真实数据的不足,跟“对抗”没有半点关系。当时,他遇到的难点是如何衡量生成的数据的质量。简单的办法是希望生成的数据与真实数据尽可能相似,也就是用L1范数或L2范数作为损失函数;又或者直接简单地在两个真实样本之间插值产生样本。但古德费洛又发现,这些方法的效果都不理想,于是就想到训练个神经网络来判别生成样本的好坏。他用一个生成器生成假样本,用另一个判别器去区分真假样本,这就是GAN的维形。在训练的过程中,生成器努力地欺骗判别器,而判别器努力地学习如何正确区分真假样本,这样,两者就形成了对抗的关系。至此,也就产生了生成对抗网络。随后,各种关于GAN的论文如雨后春笋般破土而出。
具体而言,一个GAN主要包含两个独立的神经网络:生成器(Generator)和判别器(Discriminator)生成器的任务是,从一个随机均匀分布里采样一个噪声z,然后输出合成数据G(z);判别器获得一个真实数据x或者合成数据G(z)作为输入,输出这个样本为“真”的概率。
训练GAN的时候,判别器希望目标函数最大化,也就是使判别器判断真实样本为“真”,判断合成样本为“假”的概率最大化;与之相反,生成器希望该目标函数最小化,也就是降低判别器对数据来源判断正确的概率。
虽然“对抗机制”很巧妙地让我们免去了设计复杂目标函数的烦恼,但GAN也存在一些问题。实际应用中,由于生成器的更新依赖于判别器,所以,如果判别器学习得不好,生成器也会学习得不好。为了缓解这个问题,在实际训练中,我们常常让判别器更新若干次之后,再让生成器更新一次。即便如此,GAN的训练过程还是非常不稳定,而且生成的数据的多样性仍不如真实样本,此谓“模式收缩”(mode collapse)。后来,研究者们通过一系列的理论研究,发现导致训练不稳定以及模式收缩的主要原因是,最早的GAN中对真实分布与模拟分布的距离度量方法不合适,于是提出用更平滑的度量来代替原来的方法,进而提出了WGAN-GP等方法。
领取专属 10元无门槛券
私享最新 技术干货