生成对抗网络小综述

发布时间 2023-12-31 14:36:55作者: 巴啦啦胖魔仙

摘要

生成对抗网络自2014年提出以来,一直是人工智能领域的研究热点,在语音、文本、图像、网络安全等诸多领域都有广泛应用。本文首先阐述了原始生成对抗网络的结构和原理,梳理了一些基于原始生成对抗网络的衍生结构,之后分析生成对抗网络训练中单阶段训练和数据增强问题,最后介绍了生成对抗网络的典型应用,以及对未来生成对抗网络的研究展望。

关键词:深度学习;生成模型;生成对抗网络(GAN);数据增强;无监督学习

Generative adversarial networks have been a hot research topic in artificial intelligence since they were proposed in 2014. It is frequently employed in a variety of industries, including network security, voice, text, and image.This paper first describes the structure and guiding principles of the original generative adversarial network (GAN), then combines some derivative structures based on the original GAN, and last introduces the typical applications of GANs in computer vision.

Keywords: deep learning; generative models; generative adversarial networks (GAN); data augmentation; unsupervised learning

1 引言

生成对抗网络,简称 GAN(Generative Adversarial Networks ),是一种使用深度学习方法,如卷积神经网络,进行生成建模的方法。生成建模是机器学习中的一项无监督学习任务,关于自动发现和学习输入数据中的规律性或模式,从而让模型可以通过学习原始数据集得到新的样本。

传统的生成模型有高斯混合模型、隐马尔可夫模型、朴素贝叶斯分类器等。通常要先假定一个分布再采样,基于最大似然估计等方法调整假设分布的形状,向真实分布方向拟合。

GAN 是一种训练生成模型的方法,它通过将问题定义为两个子模型的监督学习问题:训练生成新样本的生成网络,以及尝试将样本分类为真实或伪造的判别器。与之前的许多生成模型不同,GAN显然更加暴力,将生成分布和度量分布之间距离都用神经网络去完成,充分利用了神经网络的拟合能力。同时,GAN也能用反向传播更新参数,且网络结构也更易于扩展。

2 原始生成对抗网络

生成对抗网络由生成器和判别器两部分组成。如图1所示,生成器接收随机噪声作为输入,生成假数据作为输出。判别器接收的输入包括两部分,一部分来自真实数据集,一部分来自生成器生成的假数据。通常判别器是一个二分类器,输出是一个概率值,表示判别器认为输入符合真实分布的概率。判别器的输出会反过来指导生成器的训练,让生成器向拟合真实数据集分布的方向前进。理想情况下,判别器无法判断输入来自生成器还是真实数据样本输入,此时判别器的输出稳定在1/2左右,模型达到最优状态。在2014年首次提出的原始的生成对抗网络模型中,生成器和判别器都用多层感知机实现。

从博弈的角度上看,先固定生成器G,调整优化判别器D,调整的方向是使价值函数最大,即判别器要提高自身的判别能力。再固定判别器D,调整优化生成器G,调整的方向是使价值函数最小,即生成器要不断优化输出,让判别器无法鉴别自身输出的样本和真实样本的区别。GAN结构完整目标函数定义如式(1)所示。

从概率分布角度上看,判别器的作用是度量生成分布和真实数据样本分布之间的差异,生成器不断调整生成样本的分布,与真实数据样本分布的距离最小。如此说来,与之前的许多生成模型不同,GAN显然更加暴力,将生成分布和度量分布之间距离都用神经网络去完成,充分利用了神经网络的拟合能力。省去了许多生成模型需要用马尔科夫链采样的步骤,也不再需要先假定一个分布,再用极大似然估计调整这个假定分布向真实数据分布拟合的过程。

生成对抗网络思想来源之一是博弈论中的二人零和博弈理论,无论双方采用什么策略,双方最终收益总为0。模型的收敛问题是一个纳什平衡问题,模型的收敛点是纳什平衡点。
图1 生成对抗网络结构图
\(\min _{G} \max _{D} V(D, G)=\mathbb{E}_{x \sim p_{\text {data }}(x)}[\log D(x)]+\mathbb{E}_{z \sim p_{z}(z)}[\log (1-D(G(z)))]\)

2.1 生成器

生成器的本质是一个可微分函数,故而可以用神经网络的结构拟合。生成器接收一段随机噪声,或者是符合某种分布的随机变量Z作为输入。通常设置为一个100维的随机噪声,经过生成器G整形处理,输出一个生成图像G(x)。生成器训练学习的方向是使生成样本服从的数据分布逐渐拟合真实数据集服从的数据分布,当生成分布近似真实分布,生成器可以产生许多真实世界中不存在,但与真实数据集非常相似的样本。

理想情况下,生成分布完全拟合真实分布,此时生成器产生的样本相当于从真实分布中直接采样。理论上,生成器可以逐渐学习任意分布。

2.2 判别器

判别器和生成器类似,也是一个可微分函数,像深度网络分类器一样训练判别器。如果输入是真实的,希望判别器的输出D(x) = 1。如果输入是生成样本,则希望输出D(x) = 0。通过这个过程,判别器学习有助于分类真实图像的特征。另一方面,生成器的目标是“欺骗”判别器,生成使得判别器输出为1的样本,即生成器目标为D(G(Z)) = 1。因此,可以通过将该目标值一直反向传播回生成器来训练生成器,即我们训练生成器来创建判别器认为真实的图像。

以交替的步骤训练这两个网络,并使生成器和判别器两个结构在竞争对抗中不断提高。最终,判别器识别出真实和生成的微小差异,而生成器则创造出判别器无法辨别的图像。GAN模型最终会收敛,并产生自然外观的图像。这个判别器的概念也可以应用于许多现有的深度学习应用,可以将判别器插入现有的深度学习解决方案中,以提供反馈,使模型表现更好。

3 GAN的衍生模型

3.1 DCGAN

DCGAN(Deep convolutional Generative Adversarial Network, 简称DCGAN)[2]模型最早发表于2015年,对后续生成对抗网络的演化起到了很大的推动作用。原始的GAN模型使用多层感知机(Mulitilayer Preceptron Classifier, 简称MLP)搭建生成网络和判别网络,DCGAN则将生成对抗网络和卷积神经网络(Convolutional Neural Network, 简称CNN)结合,提供了将卷积、池化、批量归一层等结构应用到GAN中的建议,包括用步长大于2的卷积层代替池化层进行下采样、去除全连接层、不在生成网络的最后一层和判别网络的第一层使用批量归一层等。但注意到,DCGAN生成的图像质量仍然不高,且GAN的训练困难问题并没有得到解决。

3.2 CGAN

无条件的GAN(Unconditional-GAN),即原始的GAN结构,生成器的自由度较高,无法控制数据的生成过程。CGAN(Conditional Generative Adversarial Nets,简称CGAN)[4]在原始GAN的基础上增加约束条件,限制数据生成空间,引导数据的生成过程。CGAN结构如图 2所示。
图2 CGAN基本结构

如式(2)所示,CGAN在原始GAN的价值函数基础上,将条件概率加入到期望中,约束项y,可以是图像的标签,也可以是图像的一些属性数据。

\(\min _{G} \max _{D} V(D, G)= \\\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x} \mid \boldsymbol{y})]+\mathbb{E}_{\boldsymbol{z} \sim p_{z}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z} \mid \boldsymbol{y})))]\)

3.3 Pix2Pix

图像翻译是除了数据生成外另一个生成对抗网络非常适合应用的领域。Pix2Pi引入CGAN的思想,提出了一个在图像翻译领域比较通用的解决方案。 如图所示,从 GAN 到 Pix2Pix 最明显的变化是,生成器输入的不是噪声 z,而是实际图像 x,我们希望将其“翻译”成另一个结构相似的图像 y。生成器输出样本G(x),理想的情况是G(x)和y无法分辨。

\(\begin{aligned} \mathcal{L}_{c G A N}(G, D)= & \mathbb{E}_{x, y}[\log D(x, y)]+ \\ & \mathbb{E}_{x, z}[\log (1-D(x, G(x, z))]\end{aligned}\)
\(\mathcal{L}_{L 1}(G)=\mathbb{E}_{x, y, z}\left[\|y-G(x, z)\|_{1}\right].\)
\(G^{*}=\arg \min _{G} \max _{D} \mathcal{L}_{c G A N}(G, D)+\lambda \mathcal{L}_{L 1}(G).\)

如式3所示,传统GAN结构中的损失函数,会阻止生成器生成新的图像。由于试图生成“平均”正确的图像,L1 损失本身会产生模糊或褪色的图像,L1损失如式4所示。如式3所示,通过结合 GAN 损失和L1损失,可以引导网络生成更为清晰的图像。

如图3所示,Pix2Pix的另一变化是在生成器中采用了U-Net结构。简单地说,U-Net是一个自动编码器,其中网络的编码器部分的输出与网络的解码器部分的输出相连接。通过跳跃连接,可以补充图像在上采样过程中需要的信息。
image.png

此外,Pix2Pix还讨论使用了PatchGAN这一不同的判别器结构,PatchGAN结构如图4所示。原始GAN结构中的判别器为整个图像生成一个分数,更倾向于对生成图像的整体质量评分。PatchGAN的思路为将图像划分为一个个块,为图像的每个Patch生成一组单独的分数,将这些分数平均在一起产生最后的分数。这种方法可以通过依赖更少的参数来提高性能,正确调整的Patch大小可以提高图像质量。Patch大小与图像大小相同的 PatchGAN 等同于传统的鉴别器架构,PatchGAN有利于引导生成器生成更高质量的图像。
image.png

3.4 CycleGAN

传统的图像翻译工作,将图像域X的图像转换为另一个图像域y的图像,一般需要两个域中各有一张相同内容的图片作为训练数据,即有监督的图像翻译。Pix2Pix完成的是有监督的图像翻译,CycleGAN[6]的目标是无监督的图像翻译工作,即不需要配对的数据进行训练。
如图5所示,CycleGAN包含两个生成器和两个判别器,生成器G将图像从X域转换为Y域,另外一个生成器F,将图像从Y域转换为X域。每个生成器对应一个判别器,判别器负责将生成样本和真实训练数据分开。
图5 CycleGAN网络结构

CycleGAN的目标函数包含两个部分,一部分是对抗损失,如式(6)所示,一部分是循环损失,如式(7)所示。对抗损失对模型产生约束,但并不足以产生良好的图像。它强制生成的输出属于适当的域,但并不保证图像底层内容相同。故而引入循环损失以解决这个问题,通过将图像连续输入两个生成器,最后结果类似原始的输入。

\(\begin{aligned} \mathcal{L}_{\mathrm{GAN}}\left(G, D_{Y}, X, Y\right) & =\mathbb{E}_{y \sim p_{\text {data }}(y)}\left[\log D_{Y}(y)\right] \\ & +\mathbb{E}_{x \sim p_{\text {data }}(x)}\left[\log \left(1-D_{Y}(G(x))\right]\right.\end{aligned}\)

\(\begin{aligned} \mathcal{L}\left(G, F, D_{X}, D_{Y}\right) & =\mathcal{L}_{\mathrm{GAN}}\left(G, D_{Y}, X, Y\right) \\ & +\mathcal{L}_{\mathrm{GAN}}\left(F, D_{X}, Y, X\right) \\ & +\lambda \mathcal{L}_{\mathrm{cyc}}(G, F)\end{aligned}\)_

\(\begin{aligned} \mathcal{L}_{\mathrm{cyc}}(G, F) & =\mathbb{E}_{x \sim p_{\text {data }}(x)}\left[\|F(G(x))-x\|_{1}\right] \\ & +\mathbb{E}_{y \sim p_{\text {data }}(y)}\left[\|G(F(y))-y\|_{1}\right]\end{aligned}\)_

\(G^{*}, F^{*}=\arg \min _{G, F} \max _{D_{x}, D_{Y}} \mathcal{L}\left(G, F, D_{X}, D_{Y}\right)\)
与Pix2Pix类似,CycleGAN的生成器是U-Net结构,判别器是PatchGAN结构。

4 GAN 的训练问题

近年来,一些研究者[9]开始将通用的数据增强方法用到GAN的训练中,如图像翻转、改变亮度、对比度等。这会带来另外一个问题:比如将旋转过的图片喂到网络里面去,生成器将会直接拟合生成旋转过的图片。此时GAN拟合的就不是原始的数据分布,而是数据增强后的扩充的数据分布。也就是说GAN里面的数据增强,不管是增强真实数据还是对生成数据进行增强,都会一定程度上的改变原始数据的分布。

Ngoc-Trung Tran[9]等人讨论了经典的数据增强方法在GAN训练中的应用问题,通过实验验证了传统意义上的数据增强会让模型学到偏移的分布。另外,从JS散度等理论验证,若数据增强过程可逆,增强数据可以帮助GAN的训练和收敛,而不会学习到偏移的分布。但是,对数据进行可逆的数据增强,并且对生成数据和真实数据都进行可逆增强时,单个判别器无法保证GAN收敛.。

zhao等人[10]对小样本场景验证了判别器容易过拟合。为了让数据增广过程参与梯度回传进行优化,在不改变损失函数和网络结构的情况,分别从只用传统的数据增强、对判别器的可微分数据增强以及同时对生成器和判别器的可微分数据增强进行实验讨论,通过实验验证了需要同时对生成器和判别器都进行可微分增广才能够更好地提升模型实际表现。

除了用各种数据增强的方法缓解数据有限场景下的过拟合问题,Yang[11]等人提出在判别器对真实图像和生成图像进行判定的同时,让判别器给出样本具体所属的类别,以此提高判别器对特征的提取能力。相比于传统GAN结构的判别器,Yang等人提出的判别模型需要同时对真实图像和生成图像进行实例判别。

5 GAN 应用与研究展望

5.1 图像生成

生成新的图像样本是 Ian Goodfellow 等人在原始论文中描述的应用方向。在 2014 年的论文“生成对抗网络”中,GAN被用于MNIST手写数据集的生成。2015年的DCGAN,研究者展示了用其生成MNIST手写数据集和卧室图片的结果。用CGAN和DCGAN生成MNSIT手写图像结果如图6所示。
图6 CGAN和DCGAN生成手写数字图像

此外,Park等人[12]将GAN用于火灾图像生成,Yapici等人将CycleGAN[13]用于恶意软件生成等。值得注意的是,GAN、CGAN和DCGAN等结构更强调于对原始数据分布的拟合,无法丰富数据的源分布和类型。考虑一些能对隐空间进行插值的StarGAN等结构,数据增强的效果或许更好。

图像风格迁移是指将一张图片风格迁移到另外一张图片上,传统的图像风格迁移工作大多是基于CNN。2017年提出的基于CGAN的有监督图像翻译模型Pix2Pix,将GAN引入到该领域,随后出现了许多基于GAN的图像翻译模型。pix2pixHD[14]在Pix2Pix的基础上,考虑将高分辨率网络融合低分辨率特征,得到更高质量的生成图像。CycleGAN[6]网络,讨论了无监督情况下的图像翻译工作。StarGAN[15]训练了一个多域转换的GAN模型。

此外我们看到GAN在医疗领域也有很多应用,例如:药物发现[16]、医学影响处理[17]等。GAN被广泛用于数据增强,例如恶意软件检测[18]、隐私保护[19]等。

5.2 GAN 研究展望

本文主要介绍了GAN在计算机视觉领域的应用,GAN能够产生许多高质量的多样化的图像。最近,同样作为生成模型的扩散模型的相关研究也开始火热起来。对比扩散模型,GAN能够更灵活地处理不同任务,训练和部署等资源相对更小,但有时GAN生成的样本质量比较一般[2]。扩散模型需要的算力更高,优点在于生成图像的质量好。GAN有一个良好的隐空间表达,可以完成不同图像域的转换[5],GAN作为生成模型方面的研究仍然非常有意义。

然而,将 GAN 应用于更具挑战性的视频场景的研究比较有限。此外,在时间序列生成和自然语言处理等其他领域的 GAN 相关研究在性能和能力方面落后于计算机视觉。
一些研究结果表明[9],数据越多,GAN的训练和收敛通常表现会更好。也就是说,GAN是一个很吃数据的网络结构。这似乎是一个矛盾。GAN作为生成模型,一个重要的应用是去做数据增强,但没有足够的数据又无法支持GAN很好地训练和收敛。基于以上情况,近年来许多研究关注解决GAN的训练问题,包括如何将传统的数据增强方法应用到GAN的训练中。

6 参考文献

[1] Goodfellow, Ian, et al. "Generative adversarial networks." Communications of the ACM 63.11 (2020): 139-144.
[2] Goodfellow, Ian. "Nips 2016 tutorial: Generative adversarial networks." arXiv preprint arXiv:1701.00160 (2016).
[3] Radford, Alec, Luke Metz, and Soumith Chintala. "Unsupervised representation learning with deep convolutional generative adversarial networks." arXiv preprint arXiv:1511.06434 (2015).
[4] Mirza, Mehdi, and Simon Osindero. "Conditional generative adversarial nets." arXiv preprint arXiv:1411.1784 (2014).
[5] Isola, Phillip, et al. "Image-to-image translation with conditional adversarial networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[6] Zhu, Jun-Yan, et al. "Unpaired image-to-image translation using cycle-consistent adversarial networks." Proceedings of the IEEE international conference on computer vision. 2017.
[7] Zhang, Han, et al. "Cross-modal contrastive learning for text-to-image generation." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021.
[8] Shen, Chengchao, et al. "Training generative adversarial networks in one stage." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.
[9] Tran, Ngoc-Trung, et al. "On data augmentation for gan training." IEEE Transactions on Image Processing 30 (2021): 1882-1897.
[10] Zhao, Shengyu, et al. "Differentiable augmentation for data-efficient gan training." Advances in Neural Information Processing Systems 33 (2020): 7559-7570.
[11] Yang, Ceyuan, et al. "Data-efficient instance generation from instance discrimination." Advances in Neural Information Processing Systems 34 (2021): 9378-9390.
[12] Park, Minsoo, et al. "Wildfire-detection method using DenseNet and CycleGAN data augmentation-based remote camera imagery." Remote Sensing 12.22 (2020): 3715.
[13] Tekerek, Adem, and Muhammed Mutlu Yapici. "A novel malware classification and augmentation model based on convolutional neural network." Computers & Security 112 (2022): 102515.
[14] Wang, Ting-Chun, et al. "High-resolution image synthesis and semantic manipulation with conditional gans." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[15] Choi, Yunjey, et al. "Stargan: Unified generative adversarial networks for multi-domain image-to-image translation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[16] M. Benhenda, “Chemgan challenge for drug discovery: can ai reproduce natural chemical diversity?,” arXiv preprint arXiv:1708.08227, 2017.
[17] W. Dai, J. Doyle, X. Liang, H. Zhang, N. Dong, Y. Li, and E. P. Xing, “Scan: Structure correcting adversarial network for chest xrays organ segmentation,” arXiv preprint arXiv:1703.08770, vol. 1, 2017.
[18] W. Hu and Y. Tan, “Generating adversarial malware examples for black-box attacks based on gan,” arXiv preprint arXiv:1702.05983, 2017.
[19] M. Abadi and D. G. Andersen, “Learning to protect communications with adversarial neural cryptography,” arXiv preprint arXiv:1610.06918, 2016.