GAN系列1:简介

本文内容:

一、什么是GAN——简介

二、基本概念

三、生成器

四、判别器

五、GAN的训练和损失函数

六、GAN训练的难点

七、不同的GAN及其应用

 

一、什么是GAN——简介

GAN属于深度学习中的生成模型中的一员,属于非监督学习;

GAN可以生成相当真实的图片,如下图:

 

 

 

 

二、基本概念

GAN包含两部分:生成器和判别器

生成器从一个给定的噪音样本空间中生成假的数据;每次迭代的时候,它都试图生成更加真实的数据;

与此同时,判别器尝试区分生成器生成的图片和真实图片;当训练判别器的时候,我们需要提供真实的图片和生成的图片;当生成器无法区分二者的时候,训练结束了;

 

 

图2 GAN的基本架构

三、判别器

判别器尝试区分真实数据和生成的数据;

事实上,判别器也可以视为一个二分类器,可以区分正负样本;

正样本为真实数据(label为1);负样本是生成的数据(label为0);

如果我们以图像数据为例,则判别器就是一个卷积神经网络;

 

 

 图3 展示了当判别器训练的时候,数据流和反向传播

判别器的训练:

上文提到,判别器在训练的时候输入两个类型的数据;以图像为例,分为真实图像和生成器生成的图像;

重点:判别器在训练的时候,生成器固定;只反向传播判别器的损失值;

问题:如何训练判别器?

1)给定真实数据和生成数据,输入到判别器中;

2)通过对这两类数据进行分类,可以得到判别器损失,如图3所示;

3)如果判别器对数据进行了误分类,则对其进行惩罚;误分类(假的分成真的;真的分成假的);

4)通过误差反向传播更新权重; 重点:在判别器中的误差反向传播作用于整个判别网络;

 

上述过程中的重点:在判别器训练过程中更新的梯度是不会传递给生成器的;

 

四、生成器

生成器是从随机噪音(潜在向量)中生成数据;

每次迭代的时候,它都试图生成更加真实的数据;这些生成的数据对于判别器来说是负样本;

同时,负样本的生成过程是从判别器的反馈中得到的;

随着训练持续,生成器最终可以愚弄判别器,使其无法区分真实数据和生成数据;

 

 

 图4 生成器的训练

生成器的训练:

1)在潜在空间或者噪音空间中随机采样作为输入数据;

2)将输入数据传递给生成器中,使其生成数据;

3)判别器开始工作——判别器试图将生成器生成的图像判别为假;

4)从判别器中得到的输出,作为生成器的反馈;判别器的反馈被用于惩罚生成器;

5)从生成器的输出中得到生成损失;如果生成器不能愚弄判别器,则会被惩罚;

 

重点:从图4中可以看到,生成器损失,反向传播作用于生成器和判别器,当训练生成器的时候,我们需要通过反向传播作用于生成器,这是理所应当的,但是为什么反向传播也作用于判别器??

即使判别器被冻结了,但是我们仍然需要生成器表现的反馈;判别器参数在这一步虽然不被更新,但是我们需要通过判别器得到生成器的反馈;

这是GAN训练的重点,这也是为什么GAN难以训练的原因。这意味着,对于GAN来说,收敛到一个理想状态是困难的。

 

五、GAN的训练和损失函数

现在我们已经知道,在GAN训练的时候,我们需要训练两个网络;

迭代训练生成器和判别器——当判别器训练的时候,生成器不工作;当生成器训练的时候,判别器不工作;

同样的训练GAN是困难的;接下来,我们讨论一下GAN的损失函数;

GAN的损失函数:

 

 

 在GAN训练时,优化上面的损失函数,是两个生成器和判别器的求和游戏;

之所以成为Minmax是因为,判别器尝试最大化Log(D(x))这项,而生成器尝试最小化log(1-D(G(z)));

现在的问题在于,为什么这样的最小化和最大化可以导致GAN训练的收敛??

 

GAN训练收敛原因

在判别器训练的时候,生成器不训练;

D(x)对应的是给定x为真,判别器生成为真概率;因此,当判别器训练的时候,我们需要对真正的数据进行正确的分类,这等价于将D(x)分类为1; D(G(z))是G(z)为真的概率;我们希望在训练生成器的时候,这项最大化;但是同样的,为了最小化整个损失函数,我们需要最小化log(1-D(G(z)));

 

六、GAN训练的难点

 GAN并不好训练,即使迭代了很多次以后,结果也不一定保证收敛;

主要原因:

1)在早期训练阶段,生成器失败;

  在早期的时候,生成器效果肯定很差,对于判别器来说,则很容易区分真假数据;这会导致log(1-D(G(z)))达到饱和,但是实际上G没有学到任何东西;为了避免这种情况的发生,我们试图最大化logD(G(z)),这将在早期训练阶段提供更好的梯度,不会导致饱和;

 

2)模式坍塌

  参见modecollapse

  大意是,每次生成器都会在某个特定的采样范围内,生成相似的图片;图片的多样性很低;

3)梯度消失

  这个可能是任何神经网络中出现的问题,同样也会出现在GAN中;

 

七、不同的GAN及其应用

1) 生成新的图片——progressive和conditional GANs

 

2) 文字-图片合成

可以从文字生成图片;或者从图片生成文字——Stack GAN

 

 

3)图片上色以及图片-图片迁移

 

 4)超图分辨率

 

 还有一些其他的应用,诸如:

文字-语音;

生成真实的人脸;

音频预测;

更多内容可以在this amazing post by Jason Brownlee找到;

 

本文来自于:https://debuggercafe.com/introduction-to-generative-adversarial-networks-gans/

posted @ 2021-05-22 17:10  hi_mxd  阅读(718)  评论(0编辑  收藏  举报