谷歌大脑发布GAN全景图:看百家争鸣的生成对抗网络

近日,谷歌大脑发布了一篇全面梳理 GAN 的论文,该研究从损失函数、对抗架构、正则化、归一化和度量方法等几大方向整理生成对抗网络的特性与变体。作者们复现了当前最佳的模型并公平地对比与探索 GAN 的整个研究图景,此外研究者在 TensorFlow Hub 和 GitHub 也分别提供了预训练模型与对比结果。

深度生成模型可以应用到学习目标分布的任务上。它们近期在多种应用中发挥作用,展示了在自然图像处理上的巨大潜力。生成对抗网络(GAN)是主要的以无监督方式学习此类模型的方法之一。GAN 框架可以看作是一个两人博弈,其中第一个玩家生成器学习变换某些简单的输入分布(通常是标准的多变量正态分布或均匀分布)到图像空间上的分布,使得第二个玩家判别器无法确定样本术语真实分布或合成分布。双方都试图最小化各自的损失,博弈的最终解是纳什均衡,其中没有任何玩家能单方面地优化损失。GAN 框架一般可以通过最小化模型分布和真实分布之间的统计差异导出。

训练 GAN 需要在生成器和判别器的参数上求解一个极小极大问题。由于生成器和判别器通常被参数化为深度卷积神经网络,这个极小极大问题在实践中非常困难。结果,人们提出了过多的损失函数正则化方法、归一化方案和神经架构。某些方法基于理论洞察导出,其它的由实践考虑所启发。

在本文中谷歌大脑提供了对这些方法的全面的经验分析,作为研究员和从业者在这个领域的引导。他们首先定义了 GAN 全景图(GAN landscape):损失函数、归一化和正则化方案,以及最常用架构的集合。他们在多个现代大规模数据集上通过超参数优化探索了这个搜索空间,考虑了文献中报告的「好」超参集合,以及由高斯过程回归得到的超参集合。通过分析损失函数的影响,他们总结出非饱和损失 [9] 在各种数据集、架构和超参上足够稳定。接着,研究者分析了不同归一化和正则化方案,以及不同架构的影响。结果表明梯度惩罚 [10] 以及谱归一化 [20] 在高深度架构中都很有用。然后他们证实我们可以同时使用正则化和归一化来改善模型。最后,他们讨论了常见陷阱、复现问题和实践考虑。研究者提供了所有参考实现,包括 GitHub 上的训练和评估代码,并在 TensorFlow Hub 上提供了预训练模型。

  • Github:http://www.github.com/google/compare_gan

  • TensorFlow Hub:http://www.tensorflow.org/hub

论文:The GAN Landscape: Losses, Architectures, Regularization, and Normalization

论文地址:https://arxiv.org/abs/1807.04720

摘要:生成对抗网络(GAN)是一类以无监督方式学习目标分布的深度生成模型。虽然它们已成功应用到很多问题上,但训练 GAN 是很困难的并需要大量的超参数调整、神经架构工程和很多的「技巧」。在许多实际应用中的成功伴随着量化度量 GAN 失败模式的缺失,导致提出了过多的损失函数正则化方法、归一化方案以及神经架构。在这篇论文中我们将从实践的角度清醒地认识当前的 GAN 研究现状。我们复现了当前最佳的模型并公平地探索 GAN 的整个研究图景。我们讨论了常见的陷阱和复现问题,在 GitHub 开源了我们的项目,并在 TensorFlow Hub 上提供了我们的预训练模型。

2 GAN 全景图

在这一章节中,作者主要总结了 GAN 的各种变体与技术,详细内容可参考该论文与各种 GAN 变体的原论文。作者主要从损失函数、判别器的正则化与归一化、生成器与判别器的架构、评估度量与数据集等 5 个方面讨论了各种不同的技术。

其中在损失函数中,作者讨论了原版 GAN 的 JS 距离、WGAN 的 Wasserstein 距离和最小二乘等损失函数。而判别器的正则化主要为梯度范数罚项,例如在 WGAN 中,这种梯度范数惩罚主要体现在对违反 1-Lipschitzness 平滑的软惩罚。此外,模型还能根据数据流形评估梯度范数惩罚,并鼓励判别器在该数据流形上成分段线性。判别器的归一化主要体现在最优化与表征上,即归一化能获得更高效的梯度流与更稳点的优化过程,以及修正各权重矩阵的谱结构而获得更更丰富的层级特征。

研究者主要探讨了两种生成器与判别器架构,包括深度卷积生成对抗网络与残差网络。其中深度卷积生成对抗网络的生成器与判别器分别包含 5 个卷积层,且带有谱归一化的变体称为 SNDCGAN。而 ResNet19 的生成器包含 5 个残差模块,判别器包含 6 个残差模块。

随后的评估度量则主要包含四种,包括 Inception Score (IS)、Frechet Inception Distance (FID) 和 Kernel Inception distance (KID) 等,它们都提供生成样本质量的定量分析。最后研究者考虑了三种数据集,并在上面测试各种 GAN 的生成效果。这些数据集包括 CIFAR10、CELEBA-HQ-128 和 LSUN-BEDROOM。

GAN 的搜索空间可能非常巨大:探索所有包含各种损失函数正则化和归一化策略以及架构的组合超出了能力范围,因此在这一项研究中,研究者在几个数据集上分析了其中一些重要的组合。

作者在表 1a 中总结了近来在各项研究中展示「比较好」的参数。并且为了提供一个相对公平的对比,我们在表 1b 展示的超参数上执行高斯过程优化。

表 1:本研究中使用的超参数范围。固定值的笛卡尔乘积足够复现已有的结果。在 bandit setting[27] 中的高斯过程优化用于从特定范围中选择好的超参数集合。

3 结果和讨论

由于每个数据集都有四个主要成分(损失、架构、正则化、归一化)需要分析,探索完整的全景图是不可行的。因此,研究者选择了一个更加实际的方案:保持某些维度为固定值,并变化其它维度的值。在每个实验中重点关注三个方面:(1)top5% 已训练模型的 FID 分布;(2)对应的样本多样性分数;以及(3)计算开销(即训练的模型数量)和模型质量(FID 度量)之间的权衡。来自固定种子集的每个模型使用不同的随机种子训练 5 次,并报告中位数分数。由高斯过程回归得到的种子方差已经隐含地得到了处理,因此每个模型只需要训练一次。

3.1 损失函数的影响

这里损失函数是非饱和损失(NS),或者最小二乘损失(LS)[19],或者 Wasserstein 损失(WGAN)[2]。研究者使用了 ResNet19 作为生成器和判别器架构,架构细节在表 3a 中。本研究中考虑了最主要的归一化和正则化方法:梯度惩罚 [10] 和谱归一化 [20]。两项研究都使用了表 1a 中的超参数设置,并在 CELEBA-HQ-128 和 LSUN-BEDROOM 数据集上进行实验。

结果如图 2 所示。可以观察到,非饱和损失在两个数据集上都是稳定的。谱归一化在两个数据集上都提高了模型质量。类似地,梯度惩罚可以帮助提高模型质量,但寻找好的正则化权衡比较困难,需要大量的计算开销。使用 GP 惩罚的模型对判别器和生成器更新有改善的比例是 5:1,正如文献 [10] 所提到的。

图 1:非饱和损失在两个数据集上都是稳定的。梯度惩罚和谱归一化改善了模型质量。从计算开销的角度(即需要训练多少个模型已达到特定的 FID),谱归一化和梯度惩罚相比基线方法的表现更好,但前者更加高效。

3.2 正则化与归一化的影响

该研究的目的是对比文献中提到的各种正则化与归一化方法的表现。最终,研究者考虑批归一化(BN)、层归一化(LN)、谱归一化(SN)、梯度惩罚(GP)、Dragan 惩罚(DR)或者 L2 正则化

这些方法的结果展示在图 2 中。可以观察到向判别器添加批归一化会损害最终表现。其次,梯度惩罚有所帮助,但训练不稳定。

图 2:梯度惩罚和谱归一化表现都很好,也应被视为可行的方法。此外,后者的计算成本更低一些。不幸的是,两者都不能完全解决稳定性问题。

同时使用正则化和归一化的影响:

图 3:梯度惩罚配合谱归一化(SN)或者层归一化(LN)方法,能够极大地改进其表现。

3.3 生成器和判别器架构的影响

一个有趣的实际问题是:本研究的发现在不同的模型容量上是否一致。为了验证此问题,研究者选择了 DCGAN 类型的架构。在非饱和 GAN 损失、梯度惩罚和谱归一化下,同样完成了该研究。

结果如下图 4,可以观察到得益于正则化和归一化,两种架构都得到了相当好的结果。在两种架构上,使用谱归一化极大地超越了基线标准。

图 4:判别器和生成器架构对非饱和 GAN 损失的影响。频谱归一化与梯度惩罚都能改进非正则化基线模型的表现。

工程谷歌大脑生成对抗网络
6
相关数据
神经网络技术
Neural Network

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

生成对抗网络技术
Generative Adversarial Networks

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

范数技术
Frobenius Norm

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。半范数反而可以为非零的向量赋予零长度。

超参数技术
Hyperparameter

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

图像处理技术
Image processing

图像处理是指对图像进行分析、加工、和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

层归一化技术
Layer Normalization

深度神经网络的训练是具有高度的计算复杂性的。减少训练的时间成本的一种方法是对神经元的输入进行规范化处理进而加快网络的收敛速度。层规范化是在训练时和测试时对数据同时进行处理,通过对输入同一层的数据进行汇总,计算平均值和方差,来对每一层的输入数据做规范化处理。层规范化是基于批规范化进行优化得到的。相比较而言,批规范化是对一个神经元输入的数据以mini-batch为单位来进行汇总,计算平均值和方法,再用这个数据对每个训练样例的输入进行规整。层规范化在面对RNN等问题的时候效果更加优越,也不会受到mini-batch选值的影响。

损失函数技术
Loss function

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

纳什均衡技术
Nash equilibrium

纳什平衡,又称为非合作赛局博弈,是在非合作博弈状况下的一个概念解,在博弈论中有重要地位,以约翰·纳什命名。 如果某情况下无一参与者可以通过独自行动而增加收益,则此策略组合被称为纳什均衡点。

规范化技术
Normalization

规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0 到1.0 或0.0 到1.0。 通过将属性数据按比例缩放,使之落入一个小的特定区间,如0.0到1.0,对属性规范化。对于距离度量分类算法,如涉及神经网络或诸如最临近分类和聚类的分类算法,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘,对于训练样本属性输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属相相比,权重过大。有许多数据规范化的方法,包括最小-最大规范化、z-score规范化和按小数定标规范化。

参数技术
parameter

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

正则化技术
Regularization

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

权重技术
Weight

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

WGAN技术
Wasserstein GAN

就其本质而言,任何生成模型的目标都是让模型(习得地)的分布与真实数据之间的差异达到最小。然而,传统 GAN 中的判别器 D 并不会当模型与真实的分布重叠度不够时去提供足够的信息来估计这个差异度——这导致生成器得不到一个强有力的反馈信息(特别是在训练之初),此外生成器的稳定性也普遍不足。 Wasserstein GAN 在原来的基础之上添加了一些新的方法,让判别器 D 去拟合模型与真实分布之间的 Wasserstein 距离。Wassersterin 距离会大致估计出「调整一个分布去匹配另一个分布还需要多少工作」。此外,其定义的方式十分值得注意,它甚至可以适用于非重叠的分布。

张量技术
Tensor

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

TensorFlow技术
TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

机器之心
机器之心

机器之心是国内领先的前沿科技媒体和产业服务平台,关注人工智能、机器人和神经认知科学,坚持为从业者提供高质量内容和多项产业服务。

推荐文章
返回顶部