前言
近年来,生成对抗网络(GAN)得到广泛的研究,已经在一些特定应用上与其它机器学习算法相结合,针对有监督学习、半监督学习、无监督学习任务都有许多新型算法涌现出来。同时,由于 GAN 无需显式建模任何数据分布就可生成Real-like的样本,因此已经广泛应用到了诸如计算机视觉、自然语言处理等领域中。
一、GAN与不同任务
1.1 GAN与有监督学习
机器学习中的监督式学习,是通过有标签数据集训练模型的一种机器学习方式,训练后的模型可以对未标签数据进行分类或回归分析。将有监督学习与GAN结合,目标在于期望根据网络输入的标签生成对应的输出。针对带标签数据的生成问题,一些研究者基于GAN的结构提出了条件式生成对抗网络的变体,其中典型的变体有 CGAN 和LAPGAN。
如图1所示,条件式生成对抗网络(CGAN),在原始GAN的判别器和生成器的输入部分x与z,都加上一个额外的辅助信息y,一般是类别标签c。即生成器同时输入随机噪声z和类别标签c,判别器则将生成样本、真实样本与类别标签作为输入,以此学习标签和图片之间的关联性。
1.2 GAN与半监督学习
对于许多实际场景中,有标注数据其实只占少数,而大量无标签数据更容易获取。因此,衍生出半监督学习,以同时利用少量标签数据与大量无标签数据进行协同训练,从而实现对未标签数据的分类问题。而对于生成对抗网络训练中的真实数据集,可以被看作有标签数据,而由生成器随机生成的数据则可以被看作是无标签数据,基于此思路衍生的变体中比较典型的有SGAN与ACGAN。
如图2所示,半监督式GAN(SGAN),相比于原始 GAN,主要区别在于判别器输出一个类别数 1 维度的信息。因此对于判别器,其损失包括两部分,一部分是判断样本真假的损失,另一部分是判断样本类别的损失。而生成器则只需要尽量生成逼真的样本即可。
提出SGAN的目标是希望能够做到同时训练生成器与半监督式分类器,最终得到一个更优的半监督式分类器,以及一个样本生成质量更高的生成模型。其训练完成后,判别器就可以作为一个分类模型去分类。但是,上述SGAN的结构中,训练判别器进行半监督学习过程中存在一个问题,其既要区分真假样本,也要学习预测分类,二者目标不一致,容易导致二者都达不到最优。一个直观的想法就是把预测标签和区分真假样本分开。
1.3 GAN与无监督学习
相对于有监督学习方法,无监督学习不使用任何标签信息。因此,无监督学习方法需要对隐空间进行分解得到有意义的特征表示,类似于自动编码器,生成对抗网络通过输入隐向量,来模拟真实数据空间的低维表征,然后来生成对应的高维数据。但是,此时生成的数据表征并非可解释型特征,对后续分类等任务帮助有限。于是,有研究者提出InfoGAN,对传统GAN结构进行了一系列修改,从而使得生成模型可以产生有意义且可解释的特征。
如图4所示,InfoGAN将输入噪声分解为隐变量 z 和条件变量 c,期望在两个维度上都生成可解释型特征。区别于传统GAN仅输入随机噪声z,InfoGAN的生成器同时输入z和c,以生成概率PG(x|c)得到G(z, c)分布的样本。为了约束c与生成样本之间的关系,在训练过程中需要对隐含编码c和生成分布G(z, c)求互信息I(c; G(z, c)),并通过最大化此互信息,以实现变量解耦。具体来说,互信息表示c里面关于G(z, c)的信息有多少,如果最大化互信息I(c; G(z, c)),即最大化生成样本与条件变量c的关联性。
二、GAN的应用
2.1 图像
目前GAN在图像处理和计算机视觉方面应用最为广泛,例如图像翻译、图像生成、图像超分辨率、目标检测、视频生成等领域的应用。
其中,图像翻译是指从一副(源域)图像到另一副(目标域)图像的转换,类似于机器翻译,从一种语言转换为另一种语言的过程,这个翻译过程中会保持源域图像内容不变,但是风格或者一些其他属性变成目标域。该任务根据有无成对训练数据分为成对图像翻译、无成对图像翻译两类。对于成对图像翻译,典型的变体就是pix2pix,其使用成对数据训练了一个条件GAN,损失包括原始GAN 的判别损失以及逐像素差损失。另外一种变体 PAN 则使用特征图上的逐像素差替代图片上的逐像素差作为损失,以生成人眼感知上更加接近源域的图像。
图像生成是GAN另一个最经典的应用,比如目前最为常见的人脸生成,旨在将视频或图片中的人脸进行互换。其中一种经典的变体faceswap-GAN,在训练阶段通过算法将人脸A数据进行扭曲,变得与人脸A不同,再通过自动编码器在重建的人脸上生成遮罩,最终通过遮罩信息与之前输入的信息还原人脸A数据。然后,在测试阶段,网络输入人脸B数据,视为训练集中扭曲过的训练集人脸,并采取同样的步骤将其还原为人脸A 的状态,实现换脸。
而在图像超分辨方面,一种经典变体SRGAN,通过结合传统GAN和感知损失生成细节丰富的图像。其中,感知损失重点关注中间特征层的误差,而不是输出结果的逐像素误差,从而避免了生成的高分辨图像缺乏纹理细节信息的问题。同时,正是得益于GAN 在图像超分辨中的应用,针对目标检测问题,就可以首先利用GAN生成目标的高分辨率图像,再进行检测,从而提高目标检测精度。
另外,对于视频生成任务,通常来说,视频由相对静止的背景和运动的前景组成,因此,VideoGAN使用一个两阶段的生成器,由3D CNN生成器生成运动前景,由2D CNN生成器生成静止的背景。而Pose GAN则使用VAE和GAN生成视频,首先VAE结合当前帧和前几帧的姿态特征预测下一帧的运动信息,然后用3D CNN基于运动信息生成后续视频帧。MoCoGAN则提出将隐空间按运动部分和内容部分进行分离,对于运动部分使用 RNN 建模。
2.2 序列
近几年,GAN也逐渐被应用于序列数据上,比如自然语言、音乐、语音、音频等序列数据。不过,相比于其在图像领域的应用,这方面的应用要少很多。主要原因有两个:1)优化GAN需要使用 BP 算法,而对于文本、语音这类离散数据,GAN没法直接映射到目标值,只能根据梯度一步步靠近;2)对于序列生成问题,比如文本生成任务,每生成一个单词就需要判断这个序列是否合理,可是GAN里面的判别器是没法做到的,除非GAN针对每一步都设置一个判别器,但这显然不合理。于是,针对上述问题,研究者引入强化学习中的策略梯度下降来解决序列生成问题。
比如音乐生成任务,一种经典变体RNN-GAN使用 LSTM 作为生成器和判别器,直接生成整个音频序列。然而,音乐需要生成的歌词和曲都是离散数据,正如上述问题,此时直接使用GAN会导致生成的数据缺乏局部一致性。相比之下,另一种变体SeqGAN把生成器的输出作为一个智能体的策略,而判别器的输出作为奖励,使用策略梯度下降来训练模型。
另外,对于语言和语音方面的数据,研究者提出一种VAW-GAN的结构,通过结合VAE和WGAN实现了一个语音转换系统。具体来说,其由编码器编码语音信号的内容,由解码器重建音色。但是由于VAE容易导致生成结果过于平滑,所以此处一般使用WGAN来生成更加清晰的语音信号。
结语
如今,虽然GAN已经衍生出许多的变体,商业应用场景变得非常广泛。但GAN本身仍然存在许多开放性研究问题需要继续深入探索,比如GAN的评估优化,由于其训练过程实质是一个无监督学习过程,导致有许多指标在训练过程中虽然高,但是生成效果却未必好,所以目前还很难找到一个比较客观且可量化的评估指标。再比如GAN的模型崩溃问题,尽管已经有很多相关研究,但是对于高维数据,这个问题依然还没完全解决。
[1]Hong Y, Hwang U, Yoo J, et al. How Generative Adversarial Networks and Their Variants Work[J]. ACM Computing Surveys (CSUR), 2019.
[2]Gui Jie, Sun Zhenan, Wen Yonggang, et al. A Review on Generative Adversarial Networks:Algorithms, Theory, and Applications[J]. 2020.
[3]万字综述之生成对抗网络, https://www.jiqizhixin.com/articles/2019-03-19-12, last accessed 2019/3/19.