【GAN】简述生成对抗式网络

来源:互联网 发布:云南广电网络集团待遇 编辑:程序博客网 时间:2024/06/15 11:35

写在前面

上学期的一些项目中有用到GAN,趁着假期整理一下上学期的工作资料,本文主要介绍了对于GAN的理解和它的一些延伸(CGAN、DCGAN、BEGAN)的介绍。

基本原理

生成式对抗网络系统由一个生成器G(Generator)和一个判别器D(Discriminator)构成。
生成器G捕捉真实数据样本的潜在分布,并生成新的数据样本,目标是生成的样本越真实越好;
判别器D是一个二分类器,判别输入是真实数据样本还是G生成的样本。

G的输入用z表示,真实数据用x表示。本质上,G就是把服从某一分布的输入z转换为G(z),并使得G(z)服从x的分布。而D的作用就是判断它的输入是否符合x的分布

无

在训练过程中**,G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。**G和D构成了一个动态的“博弈过程”。

理想状态下,G可以生成“以假乱真”的图片G(z)。对于D来说,它难以判定G(z)究竟是生成的图片还是真实的图片,因此D(G(z)) = 0.5,也就是乱猜。这样就达到了我们的目的,得到了一个生成器G,可以用它来生成我们想要的图片。

这里写图片描述

上图代表训练的不同阶段。黑色虚线是真实数据的分布,绿色的线是生成器学习到的伪造分布,蓝色的线是判别器判定为真实数据的概率,x横线代表服从分布q(x)的采样空间,z横线代表服从分布p(z)的采样空间。

GAN的训练

论文里的公式为:
这里写图片描述
x表示真实图片;
z表示G的输入;
G(z)表示G生成的图片;
D(x)表示D判断输入是否真实的概率——x是真实图片,所以D(x)越接近1越好,而D(G(z))是D判断G生成的图片是否真实的概率。

G的目的:G应该希望自己生成的图片“越真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此式子对于G来说是求最小(min_G);
D的目的:D的能力越强,D(x)应该越大,D(G(x))越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)。

在训练的过程中固定一方,更新另一方的网络权重,交替迭代。
当固定生成器G时,优化判别器D:
D的输入有真实数据x(标注为1)和G(z)(标注为0),对于真实数据,D优化自己使得自己的输出接近1,对于生成数据,D优化自己使得自己的输出接近0;
当固定判别器D时,优化生成器G:
此时输入D的G(z)标注为1,G优化自己使得D(G(z))接近1。

CGAN

CGAN是GAN的条件变体,其中生成器被指示生成具有特定特征的真实样本,而不是来自完全分布的通用样本。
CGAN通过增加额外信息y来控制生成的样本,即在输入层将输入与y信息的向量来实现。y信息的选择很灵活,可以是图片的标签获取其他信息,y可以表示为one-hot vector,也可以是图像。

这里写图片描述

DCGAN

DCGAN将G和D换成了卷积神经网络(CNN),利用CNN强大的特征提取能力来提高生成网络的学习效果。DCGAN对CNN结构做了一些改变来提高生成样本质量和收敛速度:

它优化了网络结构使得网络更容易训练,网络结构的主要改动如下:
这里写图片描述

BEGAN

传统GAN是直接拟合生成样本和真实样本之间的分布,而BEGAN用拟合损失分布的方法代替直接拟合样本分布。BEGAN用auto-encoder作为判别器,拟合auto-encoder损失的分布,这个损失的计算方法利用Wasserstein距离。

auto-encoder的主要思想就是学习一个输入输出的关系,对于真实数据使得输出尽可能和输入保持一致,对于G生成数据使得输入尽可能和输入不同。

这里写图片描述

参考资料

1)Generative Adversarial Networks;
2)Conditional Generative Adversarial Nets;
3)Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks。
4)BEGAN: Boundary Equilibrium Generative Adversarial Networks

原创粉丝点击