A Review on Generative Adversarial Networks: Algorithms, Theory, and Application

478 阅读13分钟

3 算法

在本节中,我们首先介绍最原始的 GAN。然后,介绍其具有代表性的变体、训练及评估方式以及任务驱动的 GAN。

3.1 GAN

  z 是噪声变量,G 是一个由参数为 θgθ_g 的神经网络表示的可微函数。

  当模型都是神经网络时,GAN 架构实现起来非常直观。为了学习生成器在数据 x 上的分布 pgp_g,首先定义一个关于输入噪声变量的先验分布 pz(z)p_z(z)[3]。接着,GAN 表示了从噪声空间到数据空间的映射G(z,θg)G(z, θ_g)。除了 G 之外,另一个神经网络 D(x,θd)D(x, θ_d) 也用参数 θdθ_d 定义,D(x) 的输出是一个标量。D(x) 表示了 x 来自真实数据而不是来自生成器 G 的概率。我们对判别器 D 进行训练,以最大化为训练数据和生成器 G 生成的假样本提供正确标签的概率。同时,我们训练 G,最小化 log(1-D(G(z)))。

3.1.1 目标函数

  GAN 可以使用各种不同的目标函数。

3.1.1.1 最原始的极大极小博弈

  原始GAN的目标函数 和 KL散度相关   x为真实数据中的样本,PdataP_{data}真实数据分布,PzP_{z} 噪声变量z的先验分布。

判别器和生成器的loss为:   判别器的loss其实就是负的二分类交叉熵损失。

通过数学推荐可以求出DD^*GG^*

  • 先求出DD^*为: DD^*代入maxDV(G,D)max_DV(G,D)中可得 因此,最大化V(G,D)V(G,D)问题的求解实际上就是在求解𝑃𝑑𝑎𝑡𝑎与𝑃𝐺之间 JS散度。

  • 求解最优GG^*

3.1.1.2 非饱和博弈

  实际上,原始目标函数 可能无法为 G 提供足够大的梯度使其很好地学习。一般来说,G 在学习过程的早期性能很差,产生的样本与训练数据有明显的差异。

  因此,D 可以以高置信度拒绝 G 生成的样本。在这种情况下,log(1-D(G(z))) 是饱和的。我们可以训练 G 以最大化 log(D(G(z))),而非最小化 log(1-D(G(z)))。

生成器的损失则变为     这个新的目标函数可以在训练过程中使 D 和 G 的达到相同的不动点,但是在学习初期就提供了大得多的梯度。非饱和博弈是启发式的,而非理论驱动的。

  然而,非饱和博弈还存在其它问题,如用于训练 G 的数值梯度不稳定。如在最优判别器下计算最优G

3.1.1.3 最大似然

  在 GAN 中,有许多方法可以近似 (1) 式。假设判别器是最优的,我们想最小化   在 GAN 框架中有其它可能的方法逼近最大似然 [17]。图 1 展示了对于原始零和博弈、非饱和博弈以及最大似然博弈的比较。   由图 1 可以得到三个观察结果。   当样本可能来自于生成器的时候,即在图的左端,最大似然博弈和原始极大极小博弈都受到梯度弥散的影响,而启发式的非饱和博弈不存在此问题。 最大似然博弈还存在一个问题,即几乎所有梯度都来自曲线的右端,这意味着每个 minibatch 中只有极少一部分样本主导了梯度的计算。这表明减小样本方差的方法可能是提高基于最大似然博弈的 GAN 性能的重要研究方向。 基于启发式的非饱和博弈的样本方差较低,这可能是它在实际应用中更成功的可能原因。   M.Kahng 等人 [124] 提出了 GAN Lab,为非专业人士学习 GAN 和做实验提供了交互式可视化工具。Bau 等人 [125] 提出了一个分析框架来可视化和理解 GAN。

3.2 GAN的典型变体

  与 GAN [126]-[131] 相关的论文有很多,例如 CSGAN [132] 和 LOGAN [133]。在本小节中,我们将介绍一些具有代表性 GAN 变体。

3.2.1 InfoGAN

3.2.2 ConditionalGANs(cGANs)

3.2.3 CycleGAN

3.2.4 f-GAN

3.2.5 IntegralProbabilityMetrics(IPMs)

3.2.6 LossSensitiveGAN(LS-GAN)

  有一个叫做「The GAN Zoo」的网站(github.com/hindupuravi… GAN 的变体。更多详细信息请访问该网站。

3.3 GAN训练

  改善 GAN 训练的一种方法是评估训练中可能发生的经验性「症状」。这些症状包括:生成器坍塌至对于不同的输入只能生成极其相似的样本 [29];判别器损失迅速收敛至零 [179],不能为生成器提供梯度更新;使生成器、判别器这一对模型难以收敛 [32]。 训练困难原因 1、理论上 **2、实践中

其一,GAN提出者Ian Goodfellow在理论中虽然证明了GAN是可以达到纳什均衡的。可是我们在实际实现中,我们是在参数空间优化,而非函数空间,这导致理论上的保证在实践中是不成立的。 其二,GAN的优化目标是一个极小极大(minmax)问题,即

也就是说,优化生成器的时候,最小化的是

可是我们是迭代优化的,要保证V(G,D)最大化,就需要迭代非常多次,这就导致训练时间很长。如果我们只迭代一次判别器,然后迭代一次生成器,不断循环迭代。这样原先的极小极大问题,就容易变成极大极小(maxmin)问题,可二者是不一样的,即:

如果变化为极小极大问题,那么迭代就是这样的,生成器先生成一些样本,然后判别器给出错误的判别结果并惩罚生成器,于是生成器调整生成的概率分布。可是这样往往导致生成器变“懒”,只生成一些简单的,重复的样本,即缺乏多样性,也叫mode collapse。

3.3.1 目标

模式崩溃是由目标函数引起的,因此只能更改目标函数解决。

3.3.1.1 LSGANs

3.3.1.2 Hinge loss based GAN

给真假样本添加一个阈值,超过阈值不可优化,可防止过拟合。

3.3.1.3 EBGAN

EBGAN则是加入VAE的重构误差以解决mode collapse。

3.3.1.4 BEGAN

3.3.1.5 MDGAN

利用编码器生成隐变量,而不是噪声

3.3.1.6 UnrolledGAN

UnrolledGAN采用修改生成器loss来解决。 具体而言,UnrolledGAN在更新生成器时更新k次生成器,参考的Loss不是某一次的loss,是判别器后面k次迭代的loss。注意,判别器后面k次迭代不更新自己的参数,只计算loss用于更新生成器。这种方式使得生成器考虑到了后面k次判别器的变化情况,避免在不同mode之间切换导致的模式崩溃问题。此处务必和迭代k次生成器,然后迭代1次判别器区分开[8]。

3.3.1.7 SN-GANs

3.3.1.8 RGANs

为了避免前面提到的由于优化 maxnmin 导致mode跳来跳去的问题l前文所述的

3.3.2 技巧

Feature matching: 方法很简单,使用判别器某一层的特征替换原始GAN Loss中的输出。即最小化:生成图片通过判别器的特征和真实图片通过判别器得到的特征之间的距离。 标签平滑:GAN训练中的标签非0即1,这使得判别器预测出来的confidence倾向于更高的值。使用标签平滑可以缓解该问题。具体来说,就是把标签1替换为0.8~1.0之间的随机数。 谱归一化:WGAN和Improve WGAN通过施加Lipschitz条件来约束优化过程,谱归一化则是对判别器的每一层都施加Lipschitz约束,但是谱归一化相比于Improve WGAN计算效率要高一些。 PatchGAN:准确来说PatchGAN并不是用于稳定训练,但这个技术被广泛用于图像翻译当中,PatchGAN相当于对图像的每一个小Patch进行判别,这样可以使得生成器生成更加锐利清晰的边缘。具体做法是这样的:假设输入一张256x256的图像到判别器,输出的是一个4x4的confidence map,confidence map中每一个像素值代表当前patch是真实图像的置信度,即为PatchGAN。当前图像patch的大小就是感受野的大小,最后将所有Patch的Loss求平均作为最终的Loss。

3.3.3 结构

3.4 GAN 的评价指标

在本小节中,我们说明用于 GAN 的一些评价指标 [215],[216]:

3.4.1 InceptionScore(IS)

3.4.2 Modescore(MS)

3.4.3 FrechetInceptionDistance(FID)

3.4.4 Multi-scalestructuralsimilarity(MS-SSIM)

3.4.5 结论

3.5 任务驱动的 GAN

本文的重点关注 GAN 模型。目前,对于涉及特定任务的紧密相关的领域,已经有大量的文献。

3.5.1 半监督学习

3.5.2 迁移学习

3.5.3 强化学习

3.5.4 多模态学习

3.5.5 其他任务驱动的GAN

GAN 已被用于特征学习领域,例如特征选择 [277],哈希 [278]-[285] 和度量学习 [286]。MisGAN [287] 可以通过 GAN 利用不完整数据进行学习。[288] 中提出了进化型 GAN(Evolutionary GAN)。Ponce 等人 [289] 结合 GAN 和遗传算法为视觉神经元演化图像。GAN 还被用于其它机器学习任务 [290],例如主动学习 [291],[292],在线学习 [293],集成学习 [294],零样本学习 [295],[296] 和多任务学习 [297]。

4 理论

4.1 最大似然估计(MLE)

并不是所有生成模型都使用 MLE。一些生成模型不使用 MLE,但可以被修改为使用 MLE(GAN 就属于此类)。可以简单地证明,最小化 p_data(x) 和 p_g(x) 之间的 KL 散度(KLD)等价于最大化样本数 m 增加时的对数似然: 为了保证符号一致性,将模型概率分布 p_θ(x)替换为 p_g(x)。有关 MLE 和其他统计估计量的更多信息,请参阅 [298] 的第 5 章。

4.2 模式坍塌

GAN 很难训练,并且在 [26],[29] 已经观察到它们经常受到模式坍塌 [299],[300] 的影响,其中生成器学习到仅仅根据少数几种数据分布模式生成样本,而忽视了许多其它的模式(即使整个训练数据中都存在来自缺失模式的样本)。在最坏的情况下,生成器仅生成单个样本(完全坍塌)[179],[301]。

在本小节中,我们首先引入 GAN 模式坍塌的两种观点:散度观点和算法观点。然后,我们将介绍通过提出新的目标函数或新的架构以解决模式坍塌的方法,包括基于目标函数的方法和基于架构的方法。

4.3 它理论问题

4.3.1. GAN 是否真正学到了分布?

4.3.2. 散度/距离

4.3.3. 逆映射

4.3.4. 数学观点(例如优化)

4.3.5. 记忆

5 应用

如前所述,GAN 是可以由随机向量 z 生成逼真的样本的强大的生成模型。我们既不需要知道显式的真实数据分布,或进行其他任何数学假设。这些优点使 GAN 可以被广泛应用于许多领域,例如图像处理和计算机视觉、序列数据等。

5.1 图像处理和计算机视觉

GAN 最成功的的应用是在图像处理和计算机视觉方面,例如图像超分辨率、图像生成与操作和视频处理。

5.1.1 超分辨率

5.1.2 图像合成和操作

5.1.3纹理合成

5.1.4目标检测

5.1.5视频应用

5.1.6

5.2 序列数据 GAN 也在序列数据上取得了一定成就如自然语言、音乐、语音、音频 [376], [377]、时间序列 [378]–[381] 等。 6 开放性研究问题 GAN 领域仍然存在许多开放性研究问题。 将 GAN 用于离散数据:GAN 依赖于生成参数关于生成样本是完全可微的。因此,GAN 无法直接生成离散数据,例如哈希编码和独热(one-hot)向量。解决此类问题非常重要,因为它可以释放 GAN 在自然语言处理和哈希计算中的潜力。Goodfellow 提出了三种解决这个问题的方法 [103]:使用 Gumbel-softmax [448],[449] 或离散分布 [450];利用强化算法 [451];训练生成器以采样可转换为离散值的连续值(例如,直接对单词的嵌入向量进行采样)。 还有其他方法朝着该研究方向发展。Song 等人 [278] 使用了一个连续函数来近似哈希值的符号函数。Gulrajani 等人 [19] 用连续生成器建模离散数据。Hjelm 等人 [452] 引入了一种用离散数据训练 GAN 的算法,该算法利用来自判别器的估计差异度量来计算生成样本的重要性权重,从而为训练生成器提供了策略梯度。可以在 [453],[454] 中找到其它的相关工作。在这个有趣的领域需要有更多的工作出现。

新的散度:研究者提出了一系列用于训练 GAN 的新的积分概率度量(IPM),如 Fisher GAN [455],[456],均值和协方差特征匹配 GAN(McGan)[457] 和 Sobolev GAN [458]。是否还有其它有趣的散度类别?这值得进一步的研究。

估计不确定性:通常来说,我们拥有的数据越多,估计的不确定性会越小。GAN 不会给出生成训练样本的分布,但 GAN 想要生成和训练样本分布相同的新样本。因此,GAN 既没有似然也没有明确定义的后验分布。目前已经有关于这个方向研究的初步尝试,例如 Bayesian GAN [459]。尽管我们可以利用 GAN 生成数据,但是如何度量训练好的生成器的不确定性呢?这是另一个值得未来研究的有趣问题。

理论:关于泛化问题,Zhang 等人 [460] 提出了在不同评价指标下的真实分布和学习到的分布之间的泛化界。当用神经距离进行评价时,[460] 中的泛化界表明,只要判别器的集合足够小,无论假设集或生成器集合的大小如何,泛化性都是可以保证的。Arora 等人 [306] 提出了一种新颖的测试方法,使用离散概率的「生日悖论」来估计支撑集大小,并且表明即使图像具有较高的视觉质量,GAN 也会受到模式坍塌的影响。更深入的理论分析非常值得研究。我们如何经验性地测试泛化性?有用的理论应当能够选择模型的类别、容量和架构。这是一个值得未来工作深入研究的有趣问题。

其它:GAN 领域还有许多其它重要的研究问题,如评估方式(详见 3.4 小节)和模式坍缩(详见 4.2 小节)。 7 结论