GAN(Generative Adversarial Networks), 生成式对抗神经网络,是一种基于无监督学习方法的生成类模型。
GAN所建立的一个学习框架,实际上就是生成模型和判别模型之间的一个模仿游戏。生成模型的目的,就是要尽量去模仿和学习真实数据的分布;判别模型则是要判别自己所得到的一个输入数据,究竟是来自于真实的数据分布还是来自于一个生成模型。
GAN的主要灵感来源于博弈论中零和博弈的思想,应用到深度学习神经网络上来说,就是通过生成网络G ( Generator)和判别网络D ( Discriminator)不,断博弈,进而使G学习到数据的分布,如果用到图片生成上,则训练完成后,G可以从一段随机数中生成逼真的图像。
GAN的核心思想是:同时训练两个相互协作、同时又相互竞争的深度神经网络。一个称为生成器Generator,另一个称为判别器Discriminator)来处理无监督学习的相关问题。在训练过程中,两个网络最终都要学习如何处理任务。
在训练过程中,生成器努力地让生成的图像更加真实,而判别器则努力地去识别图像的真假,这个过程相当于二人进行博弈,随着时间的推移,生成器和判别器在不断地进行对抗。
最终两个网络达到了一个动态平衡,生成器生成的图像接近于真实图像分布,而判别器识别不出真假图像,对于给定图像的预测为真的概率基本接近0.5
(相当于随机猜测类别)。
●生成模型G构建一个从先验分布Pz (z)到数据空间的映射函数 G(z; θg)。判别模型D的输入是真实图像或者生成图像,D(x; θd )输出一个标量, 表示输入样本来自训练样本(而非生成样本)的概率。
●模型G和D同时训练: 1、固定判别模型D,训练生成器G,调整G的参数使得log(1 - D((G))的期望最小化;实际就是让D(G(z))的期望最大化,接近于1。
●固定生成模型G,训练判别器D,调整D的参数使得logD(X) + log(1 - D(G(z))的期望最大化。这个优化过程可以归结为一个“二元极小极大博弈
( minimax two-player game)”问题:
● 图像生成
● 图像转换
● 图像合成
● 人脸合成
● 文本到图像的合成
● 风格迁移
● 图像超分辨率
● 图像修复
条件生成式对抗网络(CGAN) 是对原始GAN的一个扩展,生成器和判别器都增加额外信息y为条件, y可以使任意信息,例如类别信息,或者其他模态的数据。通过将额外信息y输送给判别模型和生成模型,作为输入层的一部分,从而实现条件GAN。
在生成模型中,先验输入噪声p(z)和条件信息y联合组成了联合隐层表征。条件GAN的目标函数是带有条件概率的二人极小极大值博弈(two-player minimax game ) ,如果 条件变量y是类别标签,可以看做CGAN是把纯无监督的GAN变成有监督的模型的一种改进。
DCGAN是继GAN之后比较好的改进,其主要的改进主要是在网络结构上,到耳前为止,DCGAN的网络结构还是被广泛的使用,DCGAN极大的提升了GAN训练的稳定性以及生成结果质量。
DCGAN的生成器网络结构如上图所示,相较原始的GAN. ,DCGAN几乎完全使用了卷积层代替全连接层,判别器几乎是和生成器对称的,从上图里我们可以看到,G网络没有pooling层, 使用了转置卷积并且步长大于等于2进行上采样。
● 预处理环节,将图像scale到tanh的[-1, 1]。
所有的参数初始化由(0, 0.02)的正态分布中随即得到。
● LeakyReLU的斜率是0.2 (默认)。
● 优化器使用调好超参的Adamoptimizer。
● learning rate=0.0002
● 将momentum参数beta从0.9降为0.5来防止震荡和不稳定。