学习记录:GAN DCGAN cGAN

首先感谢各种博客,链接。
开始学习tensorflow,在网上查找了很多资料,也学到了很多,为了不让自己忘记,特此写下这篇博客

1.什么是GAN ?

GAN的全称为Generative Adversarial Networks,意为对抗生成网络。原始的GAN是一种无监督学习方法,它巧妙地利用“对抗”的思想来学习生成式模型,一旦训练完成后可以生成全新的数据样本。

2.GAN的基本原理

GAN的原理其实非常简单。它的主要灵感来源于博弈论中零和博弈的思想,应用到深度学习神经网络上来说,就是通过生成网络G(Generator)和判别网络D(Discriminator)不断博弈,进而使G学习到数据的分布,如果用到图片生成上,则训练完成后,G可以从一段随机数中生成逼真的图像。实际GAN可以应用到任何类型的数据。
GAN的两大护法G和D

G是generator,生成器: 负责凭空捏造数据出来

D是discriminator,判别器: 负责判断数据是不是真数据

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

3.什么是DCGAN?

DCGAN的全称是Deep Convolutional Generative Adversarial Networks , 意即深度卷积对抗生成网络,它是由Alec Radford在论文Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks中提出的。从名字来看,它是在GAN的基础上增加深度卷积网 络结构,专门生成图像样本。

4.DCGAN的基本原理

学习记录:GAN DCGAN cGAN_第1张图片
DCGAN的生成器网络结构如上图所示,相较原始的GAN,DCGAN几乎完全使用了卷积层代替全链接层,判别器几乎是和生成器对称的,从上图中我们可以看到,整个网络没有pooling层和上采样层的存在,实际上是使用了带步长(fractional-strided)的卷积代替了上采样,以增加训练的稳定性。
G的输入是一个100维的向量z。它是之前所说的噪声向量。G网络的第一层实际是一个全连接层,将100维的向量变成一个4x4x1024维的向量,从第二层开始,使用转置卷积做上采样,逐渐减少通道数,最后得到的输出为64x64x3,即输出一个三通道的宽和高都为64的图像。
DCGAN能改进GAN训练稳定的原因主要有:

1.不采用任何池化层( Pooling Layer ),在判别器D 中,用带有步长( Stride)的卷积来代替池化层。
2.在G 、D 中均使用Batch Normalization帮助模型收敛。
3.在G中,激活函数除了最后一层都使用ReLU 函数,而最后一层使用tanh函数。使用tanh函数的原因在于最后一层要输出图像,而图像的像素值是有一个取值范围的,如0~255 。ReLU函数的输出可能会很大,而tanh函数的输出是在-1~1之间的,只要将tanh函数的输出加1再乘以127.5可以得到0~255 的像素值。
4.在D 中,激活函数都使用Leaky ReLU作为激活函数。

5.什么是cGAN?

cGAN的全称为Conditional Generative Adversarial Networks,即条件对抗生成网络。

6.cGAN的基本原理

学习记录:GAN DCGAN cGAN_第2张图片
在Generator以及Descriminator上它都多了一个y标签作为输入。

所以变为,生成器的输入是噪声和标签,输出还是生成图;判别器的输入是生成图,真实图以及标签,输出还是真和假。这个是表面,真正的本质。
在这里插入图片描述
可以看到,无论是D还是G,他们的概率表达都变成了条件概率公式。

也就是说,这个目标函数实在输入为y特定标签的时候成立的,对于不同的标签,可以理解为有不同的目标函数。

也就可以将CGAN理解为一个包含了所有种类个数n的生成器集合

所以这样,通过更改标签,我们可以得倒自己需要的生成图像

也可以用同一个生成网络生成不同的目标

你可能感兴趣的:(学习记录:GAN DCGAN cGAN)