生成对抗网络GAN综述
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成对抗网络GAN综述相关的知识,希望对你有一定的参考价值。
- 题目:生成对抗网络GAN综述
- 系别:工程物理系
- 姓名:王雨阳
简 介: 生成对抗网络(
GAN
)是目前深度学习中应用较为广泛的一种网络。在我今后的研究中,可能会用到GAN
,并且我也想了解一下GAN
,因此将研究GAN
作为我的期末论文内容。但我之前并不了解任何有关GAN
的知识,因此本文着重于一些基本的GAN
的概念和算法等。本文主要从算法、理论方面对不同GAN
方法进行综述,并比较不同GAN
方法的异同。
关键词
: 生成对抗网络,GAN,综述
§01 引 言
GAN
主要包括两个模型:一个生成器和一个判别器,这两个模型均由神经网络来实现。生成器的目标是通过给定的数据结构来生成新的数据,争取骗过判别器;判别器的目标是将生成器生成的数据和真实数据进行判别区分,争取将生成器生成的数据挑选出来,完成判别。GAN
的优化是一个minimax
优化问题,极小化生成器目标函数,极大化判别器目标函数,最终两者达到纳什均衡[1]
。
由于有关于GAN
的论文实在过多,而期末的时间实在有限,故我挑选了一些比较常用的GAN
和具有代表性的GAN
来进行介绍。下面,在第2
章介绍2014
年由Goodfellow
提出的第一个GAN
;第3
章介绍CGAN
;第4
章介绍DCGAN
;第5
章介绍WGAN
。
§02 GAN
2.1 GAN网络基本概念
下面首先介绍GAN
的一些基本工作情况。
2.1.1 生成器G
生成器G的目标就是生成以假乱真的“假数据”。生成器G的输入为预定义好的随机噪声变量𝑧,其满足分布𝑝(𝑧),通过学习已有数据𝑥的分布 p g p_g pg ,生成从噪声空间到数据空间映射的数据𝐺(𝑧,𝜃𝑔),其中, θ g \\theta _g θg 为参数。
原始GAN
中生成器使用的是多层感知机。
2.1.2 判别器D
判别器D
的目标是将生成器G
生成的数据和真实数据𝑥区分开来。判别器D
的输入为𝑥或𝐺(
𝑧)
,输出𝐷(
𝑥,
𝜃𝑑)
为标量,用于指示输入的数据来源,其中,𝜃𝑑为参数。
原始GAN
中判别器同样使用多层感知机。
2.1.3 训练过程
D
和G
相当于在进行一个minimax
过程:
首先训练判别器D
。先初始化生成器G
,输入随机向量𝑧,此时生成器会生成一组数据,给这组数据打标签(如0
,代表假),给训练集中的真实数据打标签(如1
,代表真),将真假数据输入判别器D
中进行训练。
再训练生成器G
。将生成器G
与训练好的判别器D
串接,利用判别器的结果,此时判别器一定很容易判别真假数据的差别,通过反向传播对生成器G
进行训练,此时注意,在反向传播时不更新判别器D
的参数,只更新生成器G
的参数。此时就完成了一轮D
与G
的训练,再用训练好的G
生成的数据去训练D
,进行交替训练。
在实际的过程中,刚开始训练时,G
的效果总是很差的,因为其生成的数据与真实数据肯定有很大的偏差,此时希望G
的反向传播过程梯度越大越好,这样学习较快,但是由于log(1
−𝐷(
𝐺(
𝑧)))
饱和,其梯度较小,训练慢,此时我们可以训练G
使得log
𝐷(
𝐺(
𝑧))
最大化,从而使得反向梯度传播时有足够的梯度可以用于训练。
训练过程如下图所示:
▲ 图2.1.1 训练过程示意图
如图所示,随着训练过程的进行,真实数据(黑色)分布不变,生成器结果(绿线)的分布越来越接近真实数据,判别器结果(蓝线)越来越无法区分真假结果,最终的理想状态为D
给出的结果为0.5
,即无法分辨。
下图为作者给出的伪代码:
▲ 图2.1.2 GAN伪代码图
可以看到,G
与D
的每轮训练次数不同,D
的训练次数较多,原因是初代训练不稳定。也要注意到,D
的训练是同时输入生成的数据和样本数据计算loss
,而不是cross entropy
分开计算。
2.1.4 GAN优缺点
- 优点:GAN可以使用任意的模型作为G和D,也可以任意采样,十分值得推广。
- 缺点:很不好训练(具体原因可以见5.1)。
§03 CGAN
CGAN
(Conditional GAN
)在GAN
的基础上进行了拓展。原生的GAN
是无监督的,输出是完全随机的,比如在人脸上训练好的网络,最后生成什么样的人脸是完全没办法控制的。若能够在输入的时候加入条件信息,例如类别标签或者其他模态的信息,比如在MNIST
训练好的网络,可以根据条件信息指定生成某一个具体数字的图像,这就成了有监督的GAN
,CGAN
。同时,利用这种结构,也可以对数据进行自动标注。
CGAN
的生成器和判别器都增加额外信息𝑦为条件,𝑦可以是任意信息,
例如类别信息,或者其他模态的数据。通过将额外信息𝑦输送给判别模型和生成模型,作为输入层的一部分,从而实现CGAN
。在生成模型中,先验输入噪声𝑝(
𝑧)
和条件信息联合组成了联合隐层表征。对抗训练框架在隐层表征的组成方式方面相当地灵活。类似地,CGAN
的目标函数是带有条件概率的
3.1 生成器
生成器的结构如下图所示:
▲ 图3.1.1 生成器结构示意图
对于生成器G
,输入是噪声𝑧和𝑦,经过感知器最终输出产生的标签𝑦对应的图片,然后把生成的图片和𝑦送入判别器,进而反向优化。
3.2 判别器
判别器的结构如下图所示:
▲ 图 判别器结构示意图
对于判别器D
,训练的时候,输入的时候把训练样本𝑥或G
产生的样本和𝑦同时输入,在第一个hidden layer
合并,最后的输出是在𝑦的条件下训练样本𝑥或G
产生的样本是真样本的概率,然后反向优化。
3.3 利用CGAN自动标注
此方法的目的是把一副图像作为条件𝑦,希望生成的文本(单词)都是和图片相关的,这样就可以进行图像的自动标注。
具体的实现方式是条件𝑦是图片,利用训练好的网络的FC
层的feature
来表示成一维向量。训练样本𝑥是在经过训练好的language model
上统一转换成词向量,这些样本均来自于用户标注。然后进行训练,可以预见,最终的训练结果即可以自动为图片进行标注。
§04 DCGAN
DCGAN
(Deep Convolutional GAN
)结合了两个比较重要的神经网络模型:CNN
和GAN
。一般而言,CNN
都是采用监督学习的方式进行训练,而LAPGAN[5]
的网络模型使得无监督学习的CNN
成为可能,DCGAN
的思想与LAPGAN
类似,其训练出的结果具有非常好的泛化能力。DCGAN
的生成器和判别器均采用卷积网络CNN
进行实现。
4.1 生成器
生成器可由下图来说明:
▲ 图4.1.1 DCGAN生成器示意图
可见,这是一个带有4
层卷积结构的CNN
网络,且没有池化层部分。
4.2 判别器
判别器网络可由下图说明:
▲ 图4.2.1 DCGAN判别网络结构图
可见,判别器为同样由4
层卷积结构组成的CNN
网络。
4.3 CNN特点
结合上两图的模型结构,我们可以知道DCGAN
将传统的GAN
的生成器和判别器均采用CNN
实现。并且为了更好地适应于卷积神经网络架构,使用了以下的架构设计规则:
4.3.1 卷积层替代池化层
将池化层用卷积层替代[6],而不会损失掉精度。具体而言,在生成器上用反卷积替代,在判别器上用带步长的卷积替代,分别替代上采样和降采样池化。下面举例来说明卷积层是如何替代池化层的。
卷积执行下采样的示意图如下所示:
▲ 图4.3.1 卷及执行下采样示意图
可以看出,一个5*5
的矩阵通过3*3
的卷积核后,设置步长为2
,可以得到下采样相同的效果。
反卷积执行上采样的示意图如下所示:
▲ 图4.3.2 反卷积执行上采样
通过设置反向步长为
2
,可以将原本
3*3
的矩阵上采样至
5*5
。
4.3.2 消除全连接层
常规的卷积神经网络往往会在卷积层后添加全连接层用以输出最终向量,但我们知道全连接层的缺点是参数过多,当神经网络层数深了以后运算速度会变得非常慢,此外全连接层也会使得网络容易过度拟合。有研究使用了全局平均池化(global average pooling
)来替代全连接层,可以使得模型更稳定,但也影响了收敛速度。
DCGAN
采用了折中的方案,将最高卷积特征分别直接连接到生成器和判别器的输入和输出,这种方式工作较为良好。GAN
的第一层采用均匀的噪声分布𝑧作为输入,可以称为完全连接,因为它只是矩阵乘法,但结果被重塑为四维张量,并用作后续卷积层的开始。对于判别器,最后一个卷积层被展平,然后接入单个sigmoid
输出。
4.3.3 使用批归一化(Batch Normalization, BN)[7]
在生成器和判别器上都使用批归一化。这有助于处理由于初始化不良而产生的训练问题,并有助于在更深的模型中实现梯度流。事实证明,这对于让深层生成器开始学习至关重要,可以防止生成器将所有样本压缩到单个点,这是在GAN
中观察到的常见故障模式。然而,将BN
直接应用于所有层会导致样本振荡和模型不稳定,只要不对生成器输出层和判别器输入层应用BN
,即可以避免这种情况。
4.3.4 激活函数的选用
在生成器上除了输出层外的所有层使用ReLU
激活函数,输出层采用tanh
激活函数。
在判别器的所有层上使用LeakyReLU
激活函数。
4.4 DCGAN结果特点
图像的隐含空间,随着输入𝑧的不断变化,输出的图像会平滑地转变成为另一幅图像。如下图所示:
▲ 图4.4.1 G的结果岁输入z的变化
除此之外,究者对DCGAN
网络内部层进行了可视化。我们知道传统的有监督的CNN
网络通常在中间层能够学习到某些事物的特征,而对于无监督的DCGAN
在基于大量图片数据的训练后同样能够学习到很多有趣的特征。如下图所示,GAN
中判别器在训练后卷积层学习到的特征的可视化,已经可以隐约看到卧室中床和窗户的样子。
▲ 图4.4.2 特征可视化结果
§05 WGAN
5.1 GAN遇到的普遍问题
在GoodFellow
的GAN
论文中,他证明了固定生成器时,最优的判别器为:
D
G
∗
(
x
)
=
p
d
a
t
a
(
x
)
p
d
a
t
a
(
x
)
+
以上是关于生成对抗网络GAN综述的主要内容,如果未能解决你的问题,请参考以下文章