生成对抗网络研究综述①
2019-11-15邹秀芳朱定局
邹秀芳,朱定局
(华南师范大学 计算机学院,广州 510631)
近年来,人们对深度学习研究的热情高涨,深度学习在许多领域取得了不错的成果,各种框架、模型相继被提出,并且不断的被完善、改进.其中,生成对抗网络(GAN)是Goodfellow 等[1]在2014年提出的一种生成模型.GAN 的提出受到二人零和博弈(即参与博弈的两人利益之和为零,一方的利益是另一方的损失)的启发,这个模型包含一个生成器和一个判别器.生成器负责捕捉真实数据样本的分布并生成新的数据分布,而判别器则是一个二分器,判别输入的数据是真实的数据还是生成的数据.GAN 的优化是“极小极大博弈”问题,使生成器生成的数据分布尽最大的可能接近真实数据分布,从而“迷惑”判别器.
近两年来,GAN 已成为一个受欢迎的研究方向,越来越多关于GAN 的论文发表(如图1),其中包含对GAN 理论的完善,对GAN 模型的改进及应用研究.著名学者LeCun Y 对GAN 模型评价颇高,称其为“有史以来最酷的事情”、“在过去十年机器学习研究中最有趣的点子”.目前,生成对抗性网络主要应用于计算机图像与视觉领域,可以生成逼真的图像,可以生成人脸,可以对目标进行检测,也可以生成真实的场景并应用于无人驾驶场景;还可以根据图像的上下文进行图像修复[2],对图像进行转换[3].此外,GAN 还可以应用于文本生成、语音和语言的生成、视频预测等.
图1 命名为GAN 的论文的数量[4]
1 生成对抗性网络
1.1 GAN 的基本思想
GAN 的提出受到“二人零和博弈”的启发,由一个生成器和一个判别器构成.生成器根据输入的样本数据分布,生成新的数据分布,新的数据分布需要尽量接近真实数据分布,越接近表示生成的数据就越真实.判别器的作用则是判别输入数据是来自真实数据还是生成器生成的数据.GAN 的模型结构如图2所示.生成器和判别器可以用神经网络或者函数表示,用G表示生成器,D表示判别器.生成器G的目的是生成基于数据分布的pg,G的输入为随机噪声z(例如高斯噪声),z取样于先验分布pz(z).判别器对输入的数据进行判别,如果是真实数据则输出1,否则的话输出0.D(x)表示输入是真实数据的概率.对于初代生成器G和判别器D来说,初代D很容易能判别出是真实数据还是生成的数据,接下来,初代G进行优化产生第二代G,初代D不能判别第二代G生成的数据是假的,那么初代D也跟着优化,产生第二代D,能判别第二代G生成的数据是否是真实数据,接着产生第三代、第四代,直到第N代D无法正确判别数据是来自真实数据还是生成器G生成的.
图2 GAN 的模型结构
1.2 GAN 算法
生成器G和判别器D之间是互相对抗的,其优化过程是极小极大化过程.GAN 的目标函数如式(1)所示.
GAN 的优化过程是,先固定生成器G,优化判别器D,求得最优判别器D*;然后固定D为最优D*,优化生成器G,求得最优G.
当G固定的时候,优化判别器D就是求得使F(D,G)取得最大值的D*.F(D,G)可以写为如下形式:
对于任意非零实数a,b,且实数y∈[0,1],那么式(3):
H(G)=V(D∗G,G)
把最优判别器D*代入式(1),令,可以得到:
其中,JSD是香农散度,它是KL 的对称平滑版本,表示两个分布之间的差异.当pg=pdata时,H(G)取得最小值H*=-log(4),此时G为最优.GAN 的训练采用的是迭代的数值方法,为了防止过拟合,通常是对D进行k次优化后,再对G进行一次优化.
1.3 GAN 的优缺点
GAN 模型包含生成器G和判别器D,其模型有许多优点,但也存在一些问题.首先,GAN 没有使用复杂的马尔科夫链,而是用反向传播算法来获得梯度;其次,GAN 的学习过程不需要过多的推理,它的模型可以是神经网络,也可以是多种函数;再者,GAN 可以表示清晰,甚至退化的分布,并且能生成高清的图像.
GAN 基于连续数据,且假设有无限建模能力.GAN模型在生成和优化过程中,存在一些缺点:(1) GAN 在训练过程中,优化k次判别器D,同时优化1 次生成器G,需要保持D和G的同步,容易造成GAN 训练的不稳定;(2) GAN 存在模式崩溃(collapse mode)[5]现象,即生成器可能会生成许多它认为是多样的,实际上却只有细微差别的样本,这样会造成多样性缺乏;(3) GAN存在梯度消失问题,即当真实样本和生成样本之间没有重叠或者重叠可以忽略时,其优化网络的目标函数的Jensen-Shannon 散度是一个常数.这些问题在之后提出的衍生模型中得到了解决.
2 GAN 的优化和衍生模型
随着人工智能的发展,研究者们对GAN 的研究热情高涨,有对GAN 模型框架、理论的改进,有对GAN模型进行改造,或结合其他学习方法,使其能应用于更多场景.GAN 各种不同的衍生模型比较与区别见表1.接下来将介绍对GAN 进行优化和衍生的各种不同模型.
表1 GAN 各种不同的衍生模型比较与区别
2.1 基于离散数据
GAN 模型是基于Lipschitz 连续空间,且依赖于生成样本是可微的,一般对离散数据不起作用.Devon 等[6]提出一种引入离散数据的GAN 训练方法——边界寻找生成对抗网络,称为BGAN.BGAN 使用来自鉴别器的估计差分度量来计算生成的样本的重要性权重,为训练生成器提供一个基于KL-散度的策略梯度,且这个策略梯度引入奖励机制,使用重要权重作为奖励信号.GAN 应用于离散数据的另一种方法是Tong 等[7]提出的最大似然增强的离散生成对抗网络,其对GAN 的目标没有直接进行优化,而是使用遵循对数似然的对应的输出推导出了一种全新的、低方差的目标,主要是为了解决在离散数据上的反向传播困难的问题.虽然GAN 能应用于离散数据空间,但这几种方法实现的效果不是很好,不如基于连续空间的效果显著.
2.2 深度卷积生成对抗网络
Radford 等[8]提出了深度卷积生成对抗网络(DCGAN),将卷积神经网络(CNN)[9]应用到生成对抗网络中,通过对GAN 的体系结构更改,提高了GAN 的训练的稳定性.在DCGAN 中,对GAN 的体系结构进行了一些修改:将空间池化层函数替换为跨卷积;去除了完全连接层,能提高模型的稳定性;除了生成器的输出层和判别器的输入层之外,对每个单元的输入进行批归一化操作;在生成器中使用ReLU 激活函数,在其输出层使用Tanh 函数;在判别器中使用LeakyReLU 激活函数.DCGAN 具有更强大的生成能力,训练也更稳定,生成的样本具有更多的多样性,因此,很多对于GAN 的改进都是基于DCGAN 的结构.DCGAN 只是对GAN 模型的结构进行了改进,对生成器和判别器进一步的细化,并没有对优化方法进行改进.
2.3 GLS-GAN
GAN 在采用梯度下降训练过程中存在梯度消失问题,为了解决这个问题,Arjovsky 等[10]提出Wasserstein GAN (WGAN).WGAN 使用Earth-Mover 距离代替Jensen-Shannon 散度来计算生成样本分布与真实样本分布之间的距离.WGAN 在生成器和判别器的训练中不需要保持平衡,解决了GAN 训练不稳定的问题,同时也解决了模式崩溃现象,保证了生成样本的多样性,并且不需要精细设计网络架构就能实现上述功能.WGAN 使用了权重剪枝(weight clipping)对批评函数施加Lipschitz 约束,但是存在两个问题:(1) weight clipping 独立的限制每一个参数的取值范围,而判别器的损失函数希望尽量拉大真实样本与生成样本之间的差距,会导致判别器学习更简单的映射函数;(2) 如果clipping threshold 设置不合理,weight clipping 会容易导致梯度消失或梯度爆炸.Gulrajani 等[11]提出了一种代替weight clipping 的方法—引入梯度惩罚(gradient penalty),即对批评函数的输入准则进行处罚,称为WGAN-GP.WGAN-GP 只对采样点x起作用,而对真实数据附近的区域没有检查,判别器在这个区域可以自由的违反Lipschitz 连续.为了增强WGAN 中批评家的Lipschitz 约束,Cui 等[12]提出了结合指数梯度惩罚项和重要性加权策略的算法,该算法在不增加计算负担的情况下有更快的收敛速度,并且保持了WGANGP 训练的稳定性.函数为C0的GLS-GAN,而WGAN 则为代价函数是C1的GLS-GAN.
GAN 的判别器具有无限建模能力,即不管真实样本和生成样本多复杂,判别器D都能判别,这样容易造成过拟合问题.为了限制GAN 的无限建模能力,Qi[13]提出损失感知生成对抗网络(LS-GAN),LS-GAN 引入一个基于Lipschitz 连续的代价(cost)函数,把最小化目标函数得到的损失函数限定在这个代价函数上.广义LS-GAN 称为GLS-GAN[13](如图3所示),是LSGAN 的广义形式,通过定义一个满足一定条件的代价函数,不同的代价函数可以获得不同的GLS-GAN.LSGAN 和WGAN是GLS-GAN 的特例,LS-GAN 是代价
图3 广义GLS-GAN[14]
LS-GAN 和WGAN 的实现都采用了DCGAN 的网络架构思想,且对GAN 的优化方法进行了改进.WGAN 虽然解决了GAN 训练不稳定问题和模式崩溃问题,需要掌握对clipping threshold 的设置,如果设置不合理也会造成梯度消失或者梯度爆炸问题.WGAN使用EM 距离代替JS 散度,但是EM 距离不容易直接优化,使用的是其共轭函数作为目标函数进行优化,增加了计算的负担.广义LS-GAN 可以通过设置不同的代价函数获得不同的GLS-GAN,可以扩宽GLS-GAN,不过这个还有待去开发和试验.LS-GAN 在实现时需要考虑很多细节,容易影响实验效果.
2.4 InfoGAN
信息生成对抗网络(InfoGAN)[15]是GAN 信息理论的一个重要扩展.InfoGAN 相比一般的GAN,引入一个隐码c,c表示显著结构化隐层随机变量与特定语义特征之间的关系.生成器的输入为噪声z和 隐码c,输出为G(z,c),在GAN 中,PG(x|c)=PG(x).InfoGAN 使用互信息I(c;G(z,c))表示两个数据之间的关联性,而隐码c和生成分布G(z,c)之间有高的互信息.InfoGAN 的目标函数如式(6)所示:
2.5 其他衍生模型
GAN 的训练是无监督的,也可以结合半监督进行训练.SGAN[16]是使用半监督训练的生成对抗网络,它在生成器G的输入中加入类标签,判别器G输出相应的类标签.CatGAN[17]使用无监督和半监督来训练网络,提出了一种从未标记或部分标记数据中学习判别分类器的方法—使用目标函数来权衡观察到的例子和它们的预测分类类分布之间的互信息,判别器D输出类的分布.
条件生成对抗网络(CGAN)[18]引入一个额外信息y,y可以是任何辅助信息,类标签或者其他模式的数据,将y加入到生成器G和判别器D的输入层.一般的GAN 生成模型都是把隐层变量分布映射到真实数据分布上,Donahue 等[19]提出双向生成对抗网络(BiGAN)实现逆映射—将数据x映射到隐变量空间.BiGAN增加了一个编码器E,输出为E(x),其优化目标为
3 GAN 的应用领域
3.1 计算机视觉领域
3.1.1 图像生成
GAN 的最初目的是输入向量生成图像,开始生成的图像像素都不是很高,后来随着GAN 的不断深入研究,生成图像的质量也在不断提高.Ledig 等[20]提出一种增加图像分辨率的GAN—SRGAN,可以将低分辨率的图像转换为超分辨率图像.SRGAN 的生成器采用了残差网络(ResNet)[21],判别器使用了VGG[22].Karras等[23]提出了Progressive GAN—一种以渐进方式训练的GAN,在训练过程中增加一个能处理高分辨率的网络层,能生成以假乱真的图像.另外,ProGANSR[24]也能生成高分辨率的图像,它采用多尺度渐进式原则,同时增加上采样(upsampling)的重建质量.GAN 可以生成人脸,根据真实样本可以生成不存在的人脸;也可以生成动物等其他物体.除了生成人类、动物等物体,GAN 还可以生成真实的场景,可应用于无人驾驶等场景中.在这些应用中,对于图像分辨率的要求也将会随着技术的发展越来越高.
3.1.2 图像转换
图像转换也可以叫做图像翻译,是将图像变成另一种形式的图像,比如把图像内容移除一个域的属性,转移到另一个域上.图像转换的输入是图像,输出的是转换后的图像.Pix2pix[25]使用条件生成对抗网络(CGAN)来进行图像转换,使用成对的数据来进行训练.因为pix2pix 需要使用成对的数据来进行训练,但有些情况下成对的数据不容易获得,因此,Zhu[3]提出CycleGAN,不需要使用成对的数据,就能把图像从源域X转换为目标域Y.CycleGAN 使用两个判别器Dx和Dy,分别判别x和转换图像F(y)、y和G(x),还引入循环一致性损失来执行F(G(x))≈x.对于上述两种GAN,都存在生成图像分辨率低的问题,Wang 等[26]提出pix2pixHD,可以生成分辨率高达2048×1024 的图像,同时支持用户交互,编辑图像中目标外观,可以合成一些道路场景,可以结合目标检测及行人识别,用于无人驾驶中.
3.1.3 风格迁移
风格迁移是指将学习到目标图像的风格应用于源图像,使得源图像保留内容的同时具有目标图像的风格,比如把一张图像变成油画风格的图像.Li 等[27]提出一种基于马尔科夫链的生成对抗网络(MGAN)来实现图像的风格迁移,效果如图4所示.Azadi 等[28]使用GAN 来对字体进行风格迁移学习,能产生多种不同风格的字体.除此之外,风格迁移还可应用于音乐等其他领域,只是效果都不如图像的风格迁移好.
图4 图像风格迁移效果[27]
3.1.4 图像修复
GAN 与图像修复能很好的结合,对缺失的图像进行完整的修复.Denten 等[2]使用半监督方法,在生成器中增加一个随机的、能隐藏的补丁,根据上下文信息对图像进行修复.Liu 等[29]使用部分卷积进行图像修复,修复效果如图5所示.
图5 图像修复效果[29]
3.1.5 视频生成和预测
在生成图像的基础上,GAN 还可以生成视频.Tukyakov 等[30]提出一种通过分解动作和内容来生成视频的方法—MoCoGAN,将一个随机向量的序列映射到一个视频帧序列上,每个随机向量包含一个动作和一个内容.视频预测是根据当前的一帧或几帧视频来预测视频接下来的内容,比如当一个人拿起一个球的时候预测这个人接下来要干什么.Xiong 等[31]提出一种多阶段动态生成对抗网络来生成延时视频,首先为每一帧生成现实内容的视频,然后进行运动建模,使相邻帧之间的物体运动更加生动,同时保持内容逼真.另一种视频预测方法是Jang 等[32]提出的方法—通过外观和动作来指定未来,减少不确定性,解决了当有多个正确的、等可能的未来时,模型不知如何选择的问题.
3.2 文本生成领域
除了生成图片之外,GAN 还能生成文本.Zhang 等[33]用GAN 来生成文本,其判别器为卷积神经网络(CNN).GAN 一般是基于连续空间,但也可以应用于离散数据.但是GAN 用于生成序列存在两个问题,GAN 生成的是连续数据,难的是直接生成离散序列;另一个问题是,GAN 只能对整个生成序列打分,而对于一部分生成的序列,很难判断它现在生成序列的质量和之后生成整个序列的质量.SeqGAN[34]能解决上述两个问题,它结合强化学习,能生成离散的序列,使用策略梯度训练生成器G 来解决输出离散数据时梯度不能返回生成模型的问题,通过蒙特卡洛搜索得到奖励信号.WGAN 也能推广应用于离散数据空间,在基于WGAN 的基础上,代威[35]提出一种使用字符级文本构造方法的无监督文本生成方法Lable GAN,能适用于多种序列处理任务,并且能有效的干预和约束生成数据空间.SeqGAN可以应用于语音生成、诗词生成、机器翻译、对话生成等.MaskGAN[36]根据上下文内容来填充缺失的文本,并引入actor-critic 架构.
此外,GAN 还可以根据文字描述来生成图文匹配的图像.StackGAN[37]能够根据输入文本描述生成细化的高分辨率图像.AttnGAN[38]可以生成更细腻的图像,通过关注自然语言描述中的相关词汇,可以在图像的不同子区域合成出精细的细节,此外,还提出了一种深度注意多模态相似度模型,用于计算用于训练生成器的细粒度图像-文本匹配损失.
3.3 其他领域
GAN 除了在视觉领域、文本生成领域外,还在其他领域有涉及.GAN 能应用于密码破译,CipherGAN[39]提出了一个能够用于破译密码的框架,能够高度准确地破译使用移位和Vigenere 密码的语言数据,且能支持更多的词汇.GAN 还可以进行行人重识别、重定向等.GAN 除了能生成图像外,还能生成音乐、3D 物体等.
4 存在的问题及发展趋势
4.1 存在的问题
GAN 模型是一种框架,可以与其他方法相结合.GAN 模型包含生成器G 和判别器D,在训练过程中需要保持生成器G 和判别器D 之间的同步,因此容易造成训练不稳定.虽然WGAN 使用EM 距离代替JS 散度,不需要保持生成器G 和判别器D 之间的同步,解决了训练不稳定的问题,但是,在使用JS 散度的模型的训练稳定性问题还是没有得到很好的解决.此外,GAN 还存在模式崩溃问题.WGAN 能解决模式崩溃问题,但是,如果损失函数的参数设置不合理的话会导致梯度消失或梯度爆炸.因此,模式崩溃问题还没有彻底的解决.
同时,GAN 也面临着一个如何评估生成样本质量的问题,也就是说GAN 缺乏客观的评估方法.现有对GAN 的评价方法都是基于样本层面,对生成样本与真实样本提取特征,在特征空间做距离度量.Xu 等[40]实验结果表明,在基于样本的评价方法中,核函数最大平均偏差(Kernel MMD)和1-近邻(1-NN)双样本检验方法是最合适的评价方法,这两种评价指标能够有效的区别生成样本和真实样本,同时也能识别模式崩溃的模式下降问题,检测过度拟合,且具有高效性.但是,对于生成效果和质量,却只能依赖于视觉上的观察,由人眼去判断生成的质量好坏.有些评价指标在数值上虽高,但是实际的生成效果却不好.因此,GAN 很难找到一个比较客观的、可量化的评价指标.
4.2 发展趋势
自从GAN 被提出以来就受到广泛的关注,近两年来对GAN 的研究热度也是只增不减.虽然GAN 能实现的功能巨大,但是这个模型存在的一些问题未能彻底解决,影响其生成效果.在模型的训练稳定性和评价指标方面,仍有待研究改进.GAN 在图像领域有着卓越的应用效果,在其他领域也有着不错的应用.GAN对于文本方面的应用是基于离散数据,效果不是很理想,在这一方面的改进空间将会很大.随着人工智能的不断发展,对无人驾驶的研究也在不断成熟,GAN 可以结合其对图像领域的生成效果,应用于无人驾驶,这也将会是很热门的一个研究方向.视频与语音在日常生活中是必需的,随着人们需求的增大,GAN 在视频与语音方面的应用也更需要去研究改进.GAN 也可以应用于图像去噪方面,现在也有一些突破性的进展.
4.2.1 图像去噪
人们对图像的反映是通过视觉直观的体现出来的,图像质量差会影响人们对图像细节的掌握,影响图像的视觉效果.噪声是图像干扰的重要原因,实际上一幅图可能会存在各种各样的噪声,所以图像噪声在视觉图像中影响很大.图像噪声一般产生于图像的采集或者传输过程中,比如使用的设备不一样,在传输过程中有压缩等等.
传统的图像去噪最初采用的是使用像素尺度的空间域滤波方法[41],该方法中的中值滤波和均值滤波都是使用图像信号和滤波模板结合来进行滤波.空间域滤波方法在使用简单的卷积核的时候容易导致图像信息丢失,针对这一缺点,一些学者提出基于变换域的去噪方法,包含傅里叶变换域,小波域,脊波域等等[42,43].随着深度学习的发展,深度卷积网络在图像去噪的应用有着不错的效果.去噪卷积网络(DnCNN)[44]第一次结合残差网络应用于图像去噪领域,使得去噪效果大大提升.Wang[45]采用空洞卷积代替卷积核,提高了训练运行速度,效果不亚于去噪卷积网络.
4.2.2 结合GAN 的图像去噪
现有的去噪方法大多是基于已知噪声,例如高斯噪声,GAN 可以学习复杂的分布,可以在GAN 的生成器中输入含有已知噪声的图片,然后判别器输出对应无噪声的图像.张元祺[46]结合生成对抗网络,对彩色图像进行去噪,通过神经网络将含噪图像变换到特征域进行处理,并利用多尺度特征保留图像丰富的纹理细节.
那么对于图像里包含的未知噪声信息,即对图像进行盲去噪,GAN 拥有强大的学习能力,可以学习复杂的分布,可以使用GAN 来构建成对的无噪-有噪图像的训练数据集.在有未知噪声图像的情况下,一种建立成对训练数据集的方法是训练GAN 的生成网络,学习从无噪图像到相似噪声图像的映射.生成网络可以训练学习真实噪声图像的分布,生成具有相似噪声的图像,但不能保证原始图像的纹理细节等不改变.因此,Chen 等[47]提出一种盲去噪方法——使用GAN 来对未知噪声图像进行噪声提取并建模,生成网络生成类似的是噪声而不是噪声图像,生成相似分布的噪声,然后使用深度卷积网络进行图像去噪.
对于噪声已知的图像,可以直接作为生成器的输入,判别器进行去噪,输出对应的无噪图像,在这个过程中,需要保留图像原始的内容,即不能损失图像的纹理细节等.如何在去噪的过程中保留图像内容也值得去研究.对于图像盲去噪,可以通过GAN 来建模获得相似噪声分布,然后再使用深度卷积网络或者其他网络进行去噪.在这个过程中,需要使用两个或两个以上模型,如何使用GAN 模型进行图像的盲去噪将会是一个值得研究的方向.
5 结论
生成对抗性网络GAN 包含生成器和判别器,有很强的生成能力,在不进行限制的情况下,具有无限建模的能力,主要应用于图像视觉领域.现今GAN 能够产生超分辨率图像,能够结合半监督、强化学习、特征学习等,在图像、视觉、文本方面有广泛应用.GAN在图像领域的应用效果显著,虽然在其他领域也应用广泛,但实现的效果并没有图像的好.GAN 如何更好的应用于更多领域,在应用的同时不断优化性能,并发挥更大的优势,将会是有趣的研究.随着人工智能的发展,人们追求的是更加智能化,如何结合深度学习等不同技术来提高GAN 的应用效果,使GAN 更智能化,是GAN 未来发展需要提升的.GAN 可以和图像去噪相结合,利用GAN 的强学习能力,实现噪声已知的图像去噪,也可以建模生成相似的忙噪声分布,有助于图像盲去噪.GAN 对于图像去噪的应用将有待于更进一步的研究.