定义
生成对抗网络(Generative Adversarial Network,GAN)是一种通过让两个神经网络相互博弈的方式进行学习的网络模型[1] 。
生成对抗网络由一个生成网络(Generator)与一个判别网络(Discriminator)组成。生成网络从潜在空间(latent space)中随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实。
这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。这样我们就得到了一个可以用来生成图片模型[2] 。
图 1 GAN基本结构[3]
生成对抗网络的应用范围正在大幅增加。例如图像超分辨、图像修复、语义分割以及用GAN生成的图像来进行数据增强等[4] 。
参考文献
[1] http://www.360doc.com/content/16/0401/11/29971918_547040958.shtml
[2] https://zhuanlan.zhihu.com/p/24767059
[3] https://zhuanlan.zhihu.com/p/33752313
[4] https://openai.com/blog/generative-models/