一、说明
在上一篇文章中,我们达到了理解未配对图像到图像翻译的地步。尽管如此,在实现自己的超酷深度GAN模型之前,您必须了解一些非常重要的概念。如本文所提的GAN模型新成员的引入:Wasserstein distance,boundary equilibrium 和 progressively growing GAN三个方面。
二、关于:瓦瑟斯坦距离、边界平衡,逐渐增长的GAN值
GAN主导着深度学习任务,如图像生成和图像翻译。
在上一篇文章中,我们达到了理解未配对图像到图像翻译的地步。尽管如此,在实现自己的超酷深度GAN模型之前,您必须了解一些非常重要的概念。
在这一部分中,我们将看看一些基础工作。我们将看到最常见的GAN距离函数及其工作原因。然后,我们将 GAN 的训练视为试图找到双人博弈的平衡。最后,我们将看到一项革命性的增量训练工作,它首次实现了逼真的百万像素图像分辨率。
我们将探索的研究主要解决模式崩溃和训练不稳定性。从未训练过GAN的人很容易争辩说我们总是提到这两个轴。在现实生活中,为新问题训练大规模 GAN 可能是一场噩梦。
如果您开始阅读和实施最新的方法,则几乎不可能在新问题中成功训练新的 GAN。实际上,这就像中了彩票一样。
当你离开最常见的数据集(CIFAR、MNIST、CELEBA)时,你就陷入了混乱。
通常情况下,您尝试直观地将学习曲线理解为调试,以便猜测可能更好地工作的超参数。但是GAN训练非常不稳定,以至于这个过程往往是浪费时间。这部可爱的工作是最早为 GAN 培训计划提供广泛理论依据的工作之一。有趣的是,他们发现了分布之间所有现有距离之间的模式。
2.1 核心理念
核心思想是有效地测量模型分布与实际分布的接近程度。因为选择测量距离的方式直接影响模型的收敛性。正如我们现在所知,GAN 可以表示低维流形(噪声 z)的分布。
直观地说,这个距离越弱,就越容易定义从参数空间(θ-space)到概率空间的映射,因为事实证明,分布更容易收敛。
我们有理由要求这种连续映射。主要是因为可以定义一个连续函数来满足这种连续映射,该映射给出所需的概率空间或生成的样本。
出于这个原因,这项工作引入了一个新的距离,称为Wasserstein-GAN。它是推土机(EM)距离的近似值,理论上表明它可以逐步优化GAN的训练。令人惊讶的是,在训练期间不需要平衡D和G,也不需要网络架构的特定设计。通过这种方式,减少了 GAN 中固有存在的模式崩溃。
2.2 了解瓦瑟斯坦距离
在我们深入研究拟议的损失之前,让我们看一些数学。正如 wiki 中完美描述的那样,偏序集合的子集的上确界 (sup) 是大于或等于 的所有元素的最小元素。因此,上确界也被称为最小上限。我个人将其称为可以在 T 中找到的所有可能组合的子集的最大值。
现在,让我们在GAN术语中引入这个概念。T 是我们可以从 G 和 D 得到的所有可能的对函数近似 f。S 将是那些函数的子集,我们将约束这些函数以使训练更好(某种正则化)。排序自然来自计算的损失函数。基于上述,我们最终可以看到测量两个分布 Pr 和 Pθ 之间距离的 Wasserstein 损失函数。
严格的数学约束称为 K-Lipschitz 函数,用于获取子集 S。但是,如果数学得到广泛证明,则不需要了解更多。但是,我们如何引入这种约束呢?
解决这个问题的一种方法是大致近似这个约束,方法是训练一个神经网络,其权重位于一个紧凑的空间中。 为了实现这一目标,最简单的方法是将砝码夹紧到固定范围内。
就是这样,重量剪辑可以按照我们想要的方式工作!因此,在每次梯度更新后,我们将w范围裁剪为[−0.01,0.01]。这样,我们就可以显著地强制执行 Lipschitz 约束。简单,但我可以向你保证它有效!
事实上,有了这个距离损失函数,当然,它是连续的和可微的,我们现在可以用提出的准则训练D,直到最优,而其他距离则饱和。饱和意味着鉴别器的损耗为零,生成的样本仅在某些情况下有意义。所以现在,饱和(自然导致模式崩溃)得到了缓解,我们可以在所有训练范围内使用更线性风格的梯度进行训练。让我们看一个例子来澄清这一点:
为了在实践中查看所有以前的数学,我们在 Pytorch 中提供了 WGAN 编码方案。您可以直接修改项目以包含此损失标准。通常,最好在实际代码中看到它。值得一提的是,要保存子集并取上限,这意味着我们必须取很多对。这就是为什么你会看到我们每隔几次训练生成器,以便鉴别器获得更新。这样,我们就有了定义上确界的集合。请注意,为了接近上确界,我们还可以在升级 D 之前为 G 做很多步骤。
在后来的工作中,证明即使这个想法是可靠的,重量裁剪也是强制执行所需约束的糟糕方法。强制函数成为K-Lipschitz的另一种方法是梯度惩罚。
关键思想是相同的:将重量保持在紧凑的空间内。然而,他们通过约束批评家输出相对于其输入的梯度范数来做到这一点。
我们不会介绍本文,但为了用户的一致性和易于实验,我们提供了代码作为原版 wgan 的改进替代方案。
2.3 结果和讨论
按照我们的简要描述,我们现在可以跳入一些结果。很高兴看到GAN在训练过程中如何学习,如下图所示:
DCGAN发电机的瓦瑟斯坦损耗准则。如您所见,损失迅速稳定地减少,而样品质量提高。这项工作被认为是GAN理论方面的基础,可以总结为:
TL;RL
- Wasserstein 准则允许我们训练 D 直到最优。当标准达到最佳值时,它只是为生成器提供损失,我们可以像任何其他神经网络一样训练该生成器。
- 我们不再需要正确平衡 G 和 D 容量。
- Wasserstein损失导致训练G的梯度质量更高。
- 据观察,WGAN在生成器和超参数调优的架构选择方面比普通GAN更健壮
的确,我们确实提高了优化过程的稳定性。但是,没有什么是零成本的。WGAN训练在基于动量的优化器(如Adam)以及高学习率下变得不稳定。这是合理的,因为标准损失是高度非平稳的,因此基于动量的优化器似乎表现得更差。这就是他们使用RMSProp的原因,众所周知,RMSProp在非平稳问题上表现良好。
最后,理解本文的一种直观方法是对层内激活函数的历史进行梯度类比。具体来说,sigmoid 和 tanh 激活的梯度消失了,取而代之的是 ReLU,因为整个值范围内的梯度有所改善。
三、开始(边界均衡生成对抗网络2017)
我们经常看到判别器在训练开始时进步太快。尽管如此,平衡鉴别器和生成器的收敛性仍然是一个现有的挑战。
这是第一部能够控制图像多样性和视觉质量之间权衡的工作。用简单的模型架构和标准的训练方案获取高分辨率图像。
为了实现这一点,作者引入了一个技巧来平衡生成器和鉴别器的训练。BEGIND的核心思想是这种新实施的均衡,它与描述的Wasserstein距离相结合。为此,他们训练了一个基于自动编码器的鉴别器。有趣的是,由于D现在是一个自动编码器,它产生图像作为输出,而不是标量。在我们继续之前,让我们记住这一点!
正如我们所看到的,匹配误差的分布而不是直接匹配样本的分布更有效。关键的一点是,这项工作旨在优化自动编码器损失分布之间的Wasserstein距离,而不是样本分布之间的Wasserstein距离。BEGIND的一个优点是它没有明确要求判别器受到K-Lipschitz约束。自动编码器通常使用 L1 或 L2 范数进行训练。
3.1 两人博弈均衡的表述
为了用博弈论来表达这个问题,增加了一个平衡判别器和生成器的均衡项。假设我们可以理想地生成无法区分的样本。然后,它们的误差分布应该是相同的,包括它们的预期误差,这是我们在处理每批后测量的误差。完全平衡的训练将导致 L(x) 和 L(G(z) 的预期值相等。然而,事实并非如此!因此,BEGIN决定量化余额比率,定义为:
此数量在网络中建模为超参数。因此,新的训练方案涉及两个相互竞争的目标:a)自动编码真实图像和b)区分
从生成的图像中真实。γ术语让我们平衡这两个目标。较低的γ值会导致较低的图像多样性,因为鉴别器更侧重于自动编码真实图像。但是,当预期损失发生变化时,如何控制此超参数呢?
3.2 边界平衡GAN(开始)
答案很简单:我们只需要引入另一个落在 [0, 1] 范围内的变量 kt。此变量将设计用于控制训练期间放在 L(G(z)) 上的焦点。
它初始化为 k0 = 0,λ_k在本研究中也被定义为 k 的比例增益(使用 0.001)。这可以看作是闭环反馈控制的一种形式,其中kt在每一步都进行调整,以保持所选超参数γ所需的平衡。
请注意,在早期训练阶段,G 倾向于为 D 生成易于重建的数据。同时,尚未准确学习真实的数据分布。基本上,L(x)>L(G(z))。与许多 GAN 相反,BEGIN 不需要预训练,可以使用 Adam 进行优化。最后,利用均衡概念推导出收敛的全局度量。
从本质上讲,可以将收敛过程表述为找到 a) 最接近的重建 L(x) 和 b) 控制算法的最低绝对值 ||γ L(x)−L(G(z)) ||.加上这两个术语,我们可以识别网络何时收敛。
3.3 模型体系结构
模型架构非常简单。一个主要区别是引入了指数线性单位而不是 ReLU。他们使用带有深度编码器和解码器的自动编码器。超参数化旨在避免典型的GAN训练技巧。
使用 U 形架构,无需跳跃连接。下采样实现为子采样卷积,内核为 3,步幅为 2。另一方面,上采样是通过最近邻插值完成的。在编码器和解码器之间,处理数据的张量通过全连接层映射,之后没有任何非线性。
3.4 结果和讨论
在下面的 128x128 插值图像中可以看到一些呈现的视觉结果:
图片来源:BEGAN[https://arxiv.org/abs/1703.10717] .由 BEGIN 生成的插值 128x128 图像
值得注意的是,观察到多样性随着γ而增加,但伪像(噪点)也是如此。可以看出,插值显示出良好的连续性。在第一行,头发过渡和发型被改变。还值得注意的是,左图中的某些特征消失了(香烟)。第二行和最后一行显示简单的旋转。虽然旋转很平稳,但我们可以看到个人资料图片并没有完美捕获。
最后,使用BEGIND平衡方法,网络收敛到多样化且视觉上令人愉悦的图像。在 128x128 分辨率下,只需稍作修改,情况仍然如此。训练稳定、快速,并且对微小的参数变化具有鲁棒性。
但是让我们看看在真正的高分辨率下会发生什么!
四、渐进式 GAN(GANs 的渐进增长以提高质量、稳定性和变化 2017)
到目前为止,我们描述的方法会产生清晰的图像。但是,它们仅以相对较小的分辨率和有限的变化生成图像。分辨率保持较低的原因之一是训练不稳定。如果您已经部署了自己的GAN模型,您可能知道,由于计算空间的复杂性,大分辨率需要较小的小批量。这样,时间复杂度的问题也随之上升,这意味着你需要几天的时间来训练一个GAN。
4.1 增量增长架构
为了解决这些问题,作者逐渐增加了生成器和鉴别器,从低分辨率图像到高分辨率图像。
直觉是,随着训练的进行,新添加的层旨在捕获与高分辨率图像相对应的更高频率的细节。
但是,是什么让这种方法如此出色呢?
答案很简单:模型不必同时学习所有尺度,而是首先发现大规模(全局)结构,然后发现局部细粒度细节。增量训练性质旨在朝这个方向发展。需要注意的是,在整个训练过程中,所有层都是可训练的,并且网络架构是对称的(镜像)。所述体系结构的图示如下所示:
图片来自 GAN 论文的渐进增长 [https://arxiv.org/abs/1710.10196]
然而,由于不健康的竞争,模式崩溃仍然存在,这增加了G和D中误差信号的大小。
4.2 在过渡之间引入平滑层
这项工作的关键创新是新增加的层数平稳过渡,以稳定训练。但是每次过渡后会发生什么?
图片来自 GAN 论文的渐进式增长,链接:https://arxiv.org/abs/1710.10196
真正发生的事情是图像分辨率翻了一番。因此,在 G 和 D 上添加了一个新层。这就是魔术发生的地方。在过渡期间,以更高分辨率运行的层被用作残差跳跃连接块,其权重 (α) 从 0 线性增加到 1。一个表示跳过连接被丢弃。
所描绘的 toRGB 块表示将一维特征向量投影并重塑为 RGB 颜色的层。它可以被视为始终使图像具有正确形状的连接层。同时,fromRGB 执行相反的操作,而两者都使用 1 × 1 卷积。真实图像相应地缩小以匹配当前尺寸。
有趣的是,在过渡期间,作者在真实图像的两种分辨率之间进行插值,类似于类似GAN的学习。此外,对于渐进式 GAN,大多数迭代都是以较低的分辨率执行的,导致 2 到 6 个列车加速。因此,这是第一部达到百万像素分辨率的作品,即 1024x1024。
与遇到协方差偏移的下游任务不同,GAN 表现出不断增加的误差信号幅度和竞争问题。为了解决这些问题,他们使用正态分布初始化和每层权重归一化,通过每批动态计算的标量。这被认为可以使模型学习尺度不变性。为了进一步约束信号幅度,它们还将像素特征向量归一化为生成器中的单位长度。这可以防止特征图的升级,同时不会显着恶化结果。随附的视频可能有助于理解设计选择。官方代码在TensorFlow中发布在这里。
4.3 DR:结果和讨论
结果可以总结如下:
1)网络容量的逐渐增加解释了融合性的改善。直观地说,现有层学习较低的比例,因此在过渡之后,引入的层的任务只是通过越来越小的比例效果来细化表示。
2)渐进式增长的加速随着输出分辨率的提高而增加。这首次能够生成 1024x1024 的清晰图像。
3)尽管实现这样的架构确实很困难,并且缺少许多培训细节(即何时进行过渡以及为什么过渡),但它仍然是我个人喜欢的令人难以置信的工作。
图片来自 GANs的渐进增长,百万像素分辨率,链接:https://arxiv.org/abs/1710.10196
4.4 结论
在这篇文章中,我们遇到了一些即使在今天也使用的最高级培训概念。我们专注于涵盖这些重要培训方面的原因是能够进一步介绍更高级的应用程序。如果你想从更多的博弈论角度看待GANs,我们强烈建议你观看Daskalakis的演讲。最后,对于我们的数学爱好者,这里有一篇精彩的文章,更详细地介绍了向 WGAN 的过渡。
总而言之,我们已经找到了几种通过增量训练来处理模式崩溃、大规模数据集和百万像素分辨率的方法。对于整个文章系列,请随时访问AI之夏。
五、引用
[1] Arjovsky, M., Chintala, S., & Bottou, L. (2017).瓦瑟斯坦甘。arXiv预印本arXiv:1701.07875。
[2] Berthelot, D., Schumm, T., & Metz, L. (2017).开始:边界均衡生成对抗网络。arXiv预印本arXiv:1703.10717。
[3] Karras, T., Aila, T., Laine, S., & Lehtinen, J. (2017).逐步生长甘氏,以提高质量、稳定性和变化。arXiv预印本arXiv:1710.10196。
[4] Daskalakis, C., Ilyas, A., Syrgkanis, V., & Zeng, H. (2017).训练人乐观。arXiv预印本arXiv:1711.00141。
[5] Gulrajani, I., Ahmed, F., Arjovsky, M., Dumoulin, V., & Courville, A. C. (2017).改进了瓦瑟斯坦甘斯的训练。神经信息处理系统进展(第5767-5777页)。