GAN的全称为Generative Adversarial Networks,意为对抗生成网络。原始的GAN是一种无监督学习方法,它巧妙地利用“对抗”的思想来学习生成式模型,一旦训练完成后可以生成全新的数据样本。DCGAN将GAN的概念扩展到卷积神经网络中,可以生成质量较高的图片样本。GAN和DCGAN在各个领域都有广泛的应用,这篇文章首先会介绍他们的原理,再介绍如何在TensorFlow中使用DCGAN生成图像,关于GAN和DCGAN的更多项目会在接下来的章节中进行介绍。
GAN的原理
GAN的原理其实非常简单。可以把GAN看成数据生成工具,这里以生成图片数据为例进行讲解,实际GAN可以应用到任何类型的数据。
假设有两个网络,生成网络G(Generator)和判别网络D(Discriminator)
他们的功能分别是:
- G负责生成图片,它接收一个随机的噪声z,通过该噪声生成图片,将生成的图片记为G(z)。
- D负责判别一张图片是不是“真实的”。它的输入是x,x代表一张图片,输出D(x)表示x为真实图片的概率,如果为1,代表真实图片的概率为100%,而输出为0,代表不可能是真实的图片。
在训练过程中,生成网络G的目标是尽量生成真实的图片去欺骗判别网络D,而