标题:Large Scale GAN Training for High Fidelity Natural Image Synthesis

链接:[1809.11096] Large Scale GAN Training for High Fidelity Natural Image Synthesis (arxiv.org)

摘要

尽管在生成图像建模方面取得了近期的进展,但成功地从诸如ImageNet之类的复杂数据集中生成高分辨率且多样化的样本仍然是一个难以捉摸的目标。为了实现这一目标,我们尝试以迄今为止最大的规模训练生成对抗网络,并研究了与这种规模特定的不稳定性。我们发现,向生成器应用正交正则化使其适应一个简单的“截断技巧”,通过减少生成器输入的方差,从而在样本保真度和多样性之间实现精细的控制。我们的修改导致了在类条件图像合成方面刷新了最新技术水平的模型。在以128×128分辨率训练的ImageNet上,我们的模型(BigGANs)实现了166.5的Inception分数(IS)和7.4的Fréchet Inception 距离(FID),相比之前最佳IS的52.52和FID的18.65有所提高。

1. 引言

在近年来,生成图像建模领域取得了巨大的进步,生成对抗网络(GANs,Goodfellow等人,2014)处于直接从数据中学习生成高保真度、多样化图像的努力前沿。GAN的训练是动态的,几乎涉及其设置的每个方面(从优化参数到模型架构),但大量的研究已经产生了实证和理论上的见解,使得在各种环境下实现稳定训练成为可能。尽管取得了这些进展,目前在条件下的ImageNet建模(Zhang等人,2018)的最新技术水平在Inception分数(Salimans等人,2016)方面达到52.5,而真实数据则为233。

在本研究中,我们旨在缩小GAN生成图像与ImageNet数据集中真实图像之间的保真度和多样性差距。我们为实现这一目标做出了以下三方面的贡献:

  • 我们证明GAN在规模上能够取得巨大的收益,训练的模型参数是之前方法的两倍到四倍,批量大小是之前的八倍。我们引入了两个简单的、通用的架构变化,提高了可扩展性,并修改了正则化方案以改善条件,从而明显提升了性能。
  • 由于我们的修改,我们的模型适用于“截断技巧”,这是一种简单的采样技术,允许明确、精细地控制样本多样性和保真度之间的权衡。
  • 我们发现了大规模GAN特有的不稳定性,并进行了实证表征。借助于这一分析的见解,我们展示了一种新颖和现有技术的组合可以减少这些不稳定性,但要实现完全的训练稳定性只能以性能的显著代价为代价。

我们的修改显著改进了类条件GAN。在以128×128分辨率训练的ImageNet上,我们的模型(BigGANs)将最新的Inception分数(IS)和Fréchet Inception 距离(FID)从52.52和18.65提高到分别为166.5和7.4。我们还成功地在256×256和512×512分辨率的ImageNet上训练了BigGANs,分别在256×256分辨率下实现了IS和FID为232.5和8.1,在512×512分辨率下实现了IS和FID为241.5和11.5。最后,我们在一个更大的数据集JFT-300M上训练了我们的模型,并展示了我们的设计选择在ImageNet上的良好转移性。我们预训练生成器的代码和权重已公开提供。

2. 背景

生成对抗网络(GAN)涉及生成器(G)和判别器(D)网络,它们的目的分别是将随机噪声映射到样本并区分真实和生成的样本。形式上,GAN的目标,在其原始形式下(Goodfellow等人,2014),涉及寻找以下两个玩家的极小-极大问题的纳什均衡:
min ⁡ G max ⁡ D E x ∼ q data ( x ) [ log ⁡ D ( x ) ] + E z ∼ p ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] (1) \min_G \max_D \mathbb{E}_{x \sim q_{\text{data}}(x)}[\log D(x)] + \mathbb{E}_{z \sim p(z)}[\log(1 - D(G(z)))] \quad \tag{1} GminDmaxExqdata(x)[logD(x)]+Ezp(z)[log(1D(G(z)))](1)
其中 z ∈ R d z z \in \mathbb{R}^{d_z} zRdz 是从分布 p ( z ) p(z) p(z)(例如 N ( 0 , I ) N(0, I) N(0,I) U [ − 1 , 1 ] U[-1, 1] U[1,1])中抽取的潜变量。

当应用于图像时,G和D通常是卷积神经网络(Radford等人,2016)。在没有辅助稳定技术的情况下,这种训练过程通常非常脆弱,需要精细调整的超参数和架构选择才能正常工作。

因此,最近的许多研究都集中在对传统GAN方法的修改上,以实现稳定性,并利用越来越多的实证和理论见解(Nowozin等人,2016;Sønderby等人,2017;Fedus等人,2018)。其中一个研究方向是改变目标函数(Arjovsky等人,2017;Mao等人,2016;Lim和Ye,2017;Bellemare等人,2017;Salimans等人,2018),以鼓励收敛。另一个研究方向是通过梯度惩罚(Gulrajani等人,2017;Kodali等人,2017;Mescheder等人,2018)或标准化(Miyato等人,2018)来约束D,以抵消无界损失函数的使用,并确保D在所有地方都提供梯度给G。

与我们的工作特别相关的是谱标准化(Miyato等人,2018),它通过使用参数的第一个奇异值的运行估计进行归一化,从而在D上强制实现Lipschitz连续性,引入了自适应地正则化顶部奇异方向的向后动态。相关地,Odena等人(2018)分析了G的雅可比矩阵的条件数,并发现性能取决于G的条件。Zhang等人(2018)发现在G中应用谱标准化可以改善稳定性,允许每次迭代中减少D的步骤。我们对这些分析进行了扩展,以进一步了解GAN训练的病态现象。

其他研究关注架构的选择,例如SA-GAN(Zhang等人,2018),它从(Wang等人,2018)中添加自注意块,以提高G和D对全局结构的建模能力。ProGAN(Karras等人,2018)通过在一系列逐渐增加分辨率的情况下训练单一模型,从而在单类别设置下训练高分辨率GAN。

在条件GAN中(Mirza和Osindero,2014),类别信息可以以多种方式输入模型。在(Odena等人,2017)中,它通过将1-hot类向量与噪声向量串联来提供给G,并修改目标函数以鼓励条件样本最大化辅助分类器预测的相应类别概率。de Vries等人(2017)和Dumoulin等人(2017)通过在BatchNorm(Ioffe和Szegedy,2015)层中提供类别条件的增益和偏置来修改类别条件传递给G的方式。在Miyato和Koyama(2018)中,D通过使用其特征与一组学习的类别嵌入之间的余弦相似性作为区分真实和生成样本的附加证据,有效地鼓励生成与学习类别原型的特征匹配的样本。

客观评估隐式生成模型很困难(Theis等人,2015)。许多研究提出了在没有可计算似然的情况下测量模型样本质量的启发式方法(Salimans等人,2016;Heusel等人,2017;Bińkowski等人,2018;Wu等人,2017)。其中,Inception分数(IS,Salimans等人,2016)和Fréchet Inception距离(FID,Heusel等人,2017)尽管存在明显的缺陷(Barratt和Sharma,2018),但已经变得流行。我们将它们用作样本质量的近似度量,并用于与先前工作进行比较。

3. 扩展GAN

在本节中,我们探讨了将GAN训练扩展到更大的模型和更大的批次以获得更好性能的方法。作为基准,我们使用了Zhang等人(2018)的SA-GAN架构,该架构使用了铰链损失(Lim和Ye,2017;Tran等人,2017)的GAN目标。我们使用类别条件的BatchNorm(Dumoulin等人,2017;de Vries等人,2017)向 G G G提供类别信息,使用投影(Miyato和Koyama,2018)向 D D D提供类别信息。优化设置遵循Zhang等人(2018)(特别是在 G G G中使用谱归一化),但我们将学习率减半,并使每次 G G G步骤执行两次 D D D步骤。在评估方面,我们使用了 G G G的权重的移动平均,这是根据Karras等人(2018)、Mescheder等人(2018)和Yazc等人(2018)的方法进行的,衰减系数为0.9999。我们使用正交初始化(Saxe等人,2014),而之前的工作使用的是 N ( 0 , 0.02 I ) N(0,0.02I) N(0,0.02I)(Radford等人,2016)或Xavier初始化(Glorot和Bengio,2010)。每个模型在Google TPUv3 Pod(Google,2018)的128到512个核心上进行训练,并在所有设备上计算 G G G中的BatchNorm统计量,而不是每个设备分别计算。我们发现即使对于我们的512×512模型,渐进增长(Karras等人,2018)也是不必要的。附录C中提供了更多的细节。

我们首先通过增加基线模型的批量大小,立即发现这样做有巨大的好处。表1的第1-4行显示,将批量大小增加8倍仅仅通过增加批次覆盖更多模式,为两个网络提供更好的梯度,从而将最新的Inception分数提高了46%。我们猜测这是因为每个批次涵盖了更多模式,为两个网络提供了更好的梯度。这种缩放的一个显着副作用是,我们的模型在更少的迭代次数内达到更好的最终性能,但变得不稳定并经历完全的训练崩溃。我们在第4节中讨论了这种情况的原因和影响。对于这些实验,我们报告了在崩溃之前保存的检查点的分数。

然后,我们将每个层中的宽度(通道数)增加了50%,大约使两个模型的参数数量增加了一倍。这导致了进一步的Inception分数提高了21%,我们认为这是由于模型的容量相对于数据集的复杂性增加了。将深度加倍最初没有带来改进 - 我们在稍后的BigGAN-deep模型中解决了这个问题,该模型使用了不同的残差块结构。

我们注意到,用于 G G G中条件BatchNorm层的类别嵌入 c c c包含大量权重。与其为每个嵌入使用单独的层(Miyato等人,2018;Zhang等人,2018),我们选择使用一个共享的嵌入,该嵌入被线性投影到每个层的增益和偏置上(Perez等人,2018)。这减少了计算和内存成本,并通过37%的训练速度(达到给定性能所需的迭代次数)的提高来改进训练速度。接下来,我们添加了直接的从噪声向量 z z z G G G的多个层的跳过连接(skip-z),而不仅仅是初始层。这个设计背后的直觉是允许 G G G使用潜在空间直接影响不同分辨率和层次的特征。在BigGAN中,这是通过将 z z z分成每个分辨率一个块,并将每个块连接到条件向量 c c c,该向量被投影到BatchNorm的增益和偏置中。在BigGAN-deep中,我们使用了一个更简单的设计,将整个 z z z与条件向量连接起来,而不将其分成块。以前的工作(Goodfellow等人,2014;Denton等人,2015)已经考虑过这个概念的变体;我们的实现是对这个设计的轻微修改。Skip-z使性能略有提高,大约提高了4%,并进一步提高了18%的训练速度。

3.1 在保真度和多样性之间平衡:截断技巧

不像需要通过其潜变量进行反向传播的模型,GAN可以使用任意的先验分布 p ( z ) p(z) p(z),然而绝大多数以前的工作选择了从 N ( 0 , I ) N(0,I) N(0,I) U [ − 1 , 1 ] U[-1,1] U[1,1]中抽取 z z z。我们质疑了这种选择的最优性,并在附录 E E E中探索了替代方案。值得注意的是,我们的最佳结果是通过在采样时使用与训练中不同的潜变量分布获得的。采用 z ∼ N ( 0 , I ) z \sim N(0, I) zN(0,I)进行训练的模型,如果从被截断的正态分布中采样 z z z(将落在某个范围内的值重新采样为该范围内的值),立即提高了IS和FID。我们称之为截断技巧:通过重新采样值的幅度超过所选阈值的 z z z向量,可以在个体样本质量方面提高,但会减少整体样本的多样性。图2(a)演示了这一点:随着阈值的降低, z z z的元素被截断为接近零(潜变量分布的模态)的位置,个体样本趋向于 G G G的输出分布的模态。与此相关的观察在(Marchesi,2016;Pieters和Wiering,2014)中也有提到。

这种技术允许根据给定的 G G G对样本质量和多样性之间的权衡进行精细选择。值得注意的是,我们可以计算一系列阈值的FID和IS,得到类似于精度-召回曲线的多样性-保真度曲线(图17)。由于IS不惩罚类别条件模型中的多样性不足,因此降低截断阈值会直接增加IS(类似于精度)。FID惩罚多样性不足(类似于召回),但也奖励精度,因此我们最初看到FID有适度的改进,但随着截断接近零,多样性减少,FID急剧下降。使用与训练中看到的不同潜变量进行采样引起的分布偏移对许多模型来说是有问题的。一些较大的模型不适合截断,当输入被截断的噪声时会产生饱和伪影(图2(b))。为了抵消这一点,我们试图通过使 G G G平滑来实现适应截断的性质,以便整个 z z z的空间将映射为良好的输出样本。为此,我们转向正交正则化(Brock等人,2017),它直接强制执行正交条件:
R β ( W ) = β ∥ W T W − I ∥ F 2 (2) R_{\beta}(W) = \beta \left\| W^T W - I \right\| ^2_F \tag{2} Rβ(W)=β WTWI F2(2)

其中 W W W是权重矩阵, β \beta β是超参数。已知这种正则化通常太限制性(Miyato等人,2018),因此我们探索了几个设计,旨在放松约束,但仍能实现所需的模型平滑性。我们发现效果最好的版本是从正则化中去除对角线项,并旨在最小化滤波器之间的成对余弦相似性,但不限制其范数:

R β ( W ) = β ∥ W T W ⊙ ( 1 − I ) ∥ F 2 (3) R_{\beta}(W) = \beta \left\| W^T W \odot (1 - I) \right\| ^2_F \tag{3} Rβ(W)=β WTW(1I) F2(3)

其中1表示所有元素均设置为1的矩阵。我们扫描 β \beta β值并选择 1 0 − 4 10^{-4} 104,发现这个小的额外惩罚足以提高我们的模型适应截断的可能性。在表1的不同运行中,我们观察到,没有正交正则化,只有16%的模型适用于截断,而在使用正交正则化进行训练时,适用于截断的模型比例达到了60%。

3.2 小结

我们发现,当前的GAN技术足以实现模型的大规模扩展和分布式大批量训练。我们发现,我们可以显著改进现有技术水平,并在512×512的分辨率下训练模型,无需像Karras等人(2018)那样明确使用多尺度方法。尽管有了这些改进,我们的模型仍然会经历训练崩溃,在实际中需要提前停止。在接下来的两个部分中,我们将调查为什么在以往的工作中稳定的设置在应用到大规模情况下会变得不稳定。

4. 分析

4.1 衡量不稳定性:生成器

过去的许多研究从各种分析角度和玩具问题上调查了GAN的稳定性,但我们观察到的不稳定性出现在小尺度下是稳定的设置中,因此需要在大尺度下进行直接分析。我们在训练过程中监测了一系列权重、梯度和损失统计量,寻找可能预示着训练崩溃开始的度量标准,类似于(Odena等人,2018)。我们发现每个权重矩阵的前三个奇异值 σ 0 σ_0 σ0 σ 1 σ_1 σ1 σ 2 σ_2 σ2是最具信息的。它们可以使用Arnoldi迭代方法(Golub和der Vorst,2000)高效地计算,该方法扩展了Miyato等人(2018)中使用的幂迭代方法,以估计附加的奇异向量和值。一个明确的模式出现了,如图3(a)和附录F所示:大多数 G G G层具有良好的谱范数,但一些层(通常是 G G G中的第一层,该层是过完备且非卷积的)的谱范数在训练期间逐渐增长,并在崩溃时爆炸。

为了确定这种病理是崩溃的原因还是仅仅是症状,我们研究了对 G G G施加额外条件的效果,以明确地抵消谱爆炸。首先,我们直接对每个权重的前三个奇异值 σ 0 σ_0 σ0进行正则化,要么朝着固定值 σ r e g σ_{reg} σreg,要么朝着第二个奇异值的某个比率 r r r r ⋅ s g ( σ 1 ) r \cdot sg(σ_1) rsg(σ1)(其中 s g sg sg是阻止正则化增加 σ 1 σ_1 σ1的停梯度操作)。或者,我们使用部分奇异值分解来代替将 σ 0 σ_0 σ0夹紧。对于给定的权重 W W W,它的前三个奇异向量 u 0 u_0 u0 v 0 v_0 v0,以及 σ c l a m p σ_{clamp} σclamp是将 σ 0 σ_0 σ0夹紧到的值,我们的权重变为:
W = W − max ⁡ ( 0 , σ 0 − σ c l a m p ) v 0 u 0 T (4) W = W - \max(0, σ_0 - σ_{clamp})v_0u_0^T \tag{4} W=Wmax(0,σ0σclamp)v0u0T(4)
其中 σ c l a m p σ_{clamp} σclamp设置为 σ r e g σ_{reg} σreg r ⋅ s g ( σ 1 ) r \cdot sg(σ_1) rsg(σ1)。我们观察到,无论是否使用谱归一化,这些技术都会防止 σ 0 σ_0 σ0 σ 0 / σ 1 σ_0 / σ_1 σ0/σ1逐渐增加和爆炸,但即使在某些情况下,它们稍微改善了性能,也没有任何组合可以防止训练崩溃。这些证据表明,虽然对 G G G进行调整可能会改善稳定性,但这还不足以确保稳定性。因此,我们将注意力转向 D D D

4.2 衡量不稳定性:判别器

G G G类似,我们分析 D D D的权重谱以获取关于其行为的见解,然后通过施加额外的约束来寻求稳定训练。图 3 ( b ) 3(b) 3(b)显示了 D D D σ 0 σ_0 σ0的典型情况(附录 F F F中还有更多的图表)。与 G G G不同,我们看到谱是嘈杂的, σ 0 / σ 1 σ_0 / σ_1 σ0/σ1是良好的,奇异值在训练过程中逐渐增长,但只在崩溃时跳跃,而不是爆炸。 D D D谱中的峰可能表明它周期性地接收非常大的梯度,但我们观察到弗罗贝尼乌斯范数是平滑的(附录F),这表明这种效应主要集中在前几个奇异方向上。我们假设这种噪声是通过对抗训练过程的优化产生的,其中 G G G周期性地产生强烈扰动 D D D的批次。如果这种谱噪声与不稳定性有因果关系,那么一个自然的对策就是使用梯度惩罚,这会明确地规范 D D D的雅可比变化。我们探索了Mescheder等人(2018)的 R 1 R1 R1零中心梯度惩罚:
R 1 : = γ 2 E p D ( x ) [ ∥ ∇ D ( x ) ∥ F 2 ] (5) R1 := \frac{\gamma}{2} \mathbb{E}_{p_D(x)} \left[ \left\| \nabla D(x) \right\|_F^2 \right] \tag{5} R1:=2γEpD(x)[D(x)F2](5)
使用默认建议的 γ \gamma γ强度为 10 10 10,训练变得稳定,改善了 G G G D D D中谱的平滑性和有界性,但性能严重下降,IS减少了45%。减小惩罚部分地减轻了这种退化,但导致谱变得越来越不稳定。即使将惩罚强度降低到1(在此强度下不会突然崩溃),IS也减少了20%。对各种强度的正交正则化、DropOut(Srivastava等人,2014)和L2进行重复实验(详见附录I),发现这些正则化策略的行为类似:通过对 D D D施加足够大的惩罚,可以实现训练的稳定性,但代价是严重的性能损失。

我们还观察到,在训练过程中, D D D的损失接近零,但在崩溃时出现急剧上升(附录F)。对于这种行为,一个可能的解释是 D D D对训练集进行了过拟合,记忆了训练样本,而不是学习真实图像和生成图像之间的有意义的边界。作为对 D D D记忆性的简单测试(与Gulrajani等人(2017)相关),我们在ImageNet的训练和验证集上评估了未崩溃的判别器,并测量了多少百分比的样本被分类为真实图像或生成图像。尽管训练精度始终在98%以上,但验证精度在50-55%的范围内,不比随机猜测更好(无论正则化策略如何)。这证实了 D D D确实在记忆训练集;我们认为这与 D D D的角色一致,其不是明确进行泛化,而是提取训练数据并为 G G G提供有用的学习信号。附录 G G G中提供了额外的实验和讨论。

4.3 小结

我们发现,稳定性不仅仅来自 G G G D D D,而是来自它们通过对抗性训练过程的相互作用。尽管可以使用它们的条件的症状来跟踪和识别不稳定性,但确保合理的条件对于训练是必要的,但不足以防止最终的训练崩溃。通过强烈约束 D D D可以实现稳定性,但这会导致性能的显著损失。使用当前的技术,可以通过放宽这种条件并允许在训练的后期阶段发生崩溃,到那时模型已经足够训练以实现良好的结果。

5 实验

5.1 在ImageNet上的评估

我们在ImageNet ILSVRC 2012(Russakovsky等人,2015)的128×128、256×256和512×512分辨率上评估了我们的模型,使用表格1中的设置,第8行。我们在图4中展示了我们的模型生成的样本,附录A中还有额外的样本,在线上也有展示。我们在表2中报告了IS和FID。由于我们的模型能够在样本质量和多样性之间进行权衡,因此不清楚如何最好地与之前的方法进行比较;因此,我们根据三个设置报告值,在附录D中有完整的曲线。首先,我们报告在达到最佳FID的截断设置下的FID/IS值。其次,我们报告在截断设置下的FID,其中我们的模型的IS与真实验证数据达到的IS相同,理由是这是在仍然达到良好的“物体性”水平的情况下实现最大样本多样性的可接受度量。第三,我们报告每个模型实现的最大IS处的FID,以展示在最大化质量时必须进行多少样本多样性的权衡。在这三种情况下,我们的模型在IS和FID分数上均超过了Miyato等人(2018)和Zhang等人(2018)达到的之前的最先进的分数。

除了在论文第一版中引入并在大多数实验中使用的BigGAN模型(除非另有说明),我们还展示了一个4x更深的模型(BigGAN-deep),它使用了不同的残差块配置。正如从表2中可以看出的,BigGAN-deep在所有分辨率和指标上都明显优于BigGAN。这证实了我们的发现适用于其他架构,并且增加深度可以改善样本质量。BigGAN和BigGAN-deep架构的详细描述在附录B中。

我们对 D D D对训练集的过度拟合以及我们模型的样本质量的观察,引发了一个明显的问题,即 G G G是否仅仅记忆训练点。为了测试这一点,我们在像素空间和预训练分类器网络的特征空间中执行逐类最近邻分析(附录A)。此外,在图8和9中,我们展示了样本之间和类别之间(保持 z z z不变)的插值。我们的模型在不同的样本之间进行插值,并且其样本的最近邻在视觉上是明显不同的,这表明我们的模型不仅仅记忆训练数据。

我们注意到,我们部分训练的模型的一些失效模式与先前观察到的失效模式不同。大多数先前的失败涉及局部伪影(Odena等人,2016),由纹理斑点组成的图像而不是对象(Salimans等人,2016),或经典的模式坍塌。我们观察到类泄漏,其中一类图像包含另一类的属性,如图4(d)所示。我们还发现,在ImageNet上,许多类对于我们的模型来说更加困难;我们的模型在生成狗(占数据集的大部分,主要由纹理来区分)方面比生成人群(占数据集的一小部分,具有更多的大尺度结构)更成功。附录A中有进一步的讨论。

5.2 在JFT-300M上的额外评估

为了确认我们的设计选择对更大、更复杂和更多样化的数据集是否有效,我们还在JFT-300M(Sun等人,2017)的子集上展示了我们系统的结果。完整的JFT-300M数据集包含300M个带有18K个类别标签的真实世界图像。由于类别分布严重呈长尾分布,我们对数据集进行了子采样,只保留具有8.5K个最常见标签的图像。结果数据集包含292M个图像,比ImageNet大两个数量级。对于具有多个标签的图像,我们在采样图像时随机且独立地选择一个标签。为了计算在该数据集上训练的GAN的IS和FID,我们使用在该数据集上训练的Inception v2分类器(Szegedy等人,2016)。定量结果在表3中呈现。所有模型均以批量大小2048进行训练。我们比较了我们模型的一个消融版本——与SA-GAN(Zhang等人,2018)类似,但使用了更大的批量大小——与一个“完整”的BigGAN模型,该模型使用了在ImageNet上获得最佳结果的所有技术(共享嵌入、skip-z和正交正则化)。我们的结果表明,即使在相同的模型容量下(64个基础通道),这些技术在这个规模更大的数据集上也能够显著提高性能。我们进一步展示,对于这种规模的数据集,通过将我们模型的容量扩展到128个基础通道,我们可以看到显着的额外改进,而在ImageNet上,这种额外的容量并没有带来益处。

在图19(附录D)中,我们呈现了在该数据集上训练的模型的截断图。与ImageNet不同,对于ImageNet,截断极限 σ ≈ 0 \sigma \approx 0 σ0倾向于产生最高的保真度分数,而对于我们的JFT-300M模型来说,IS通常在截断值 σ \sigma σ从0.5到1范围内达到最大。我们怀疑,这至少部分是由于JFT-300M标签的内部类变异性,以及图像分布的相对复杂性,其中包括具有多个尺度上多个对象的图像。有趣的是,与在ImageNet上训练的模型不同(在第4节中,训练倾向于在没有大量正则化的情况下崩溃),在JFT-300M上训练的模型在许多数十万次迭代中保持稳定。这表明,从ImageNet扩展到更大的数据集可能会部分缓解GAN的稳定性问题。

我们在不对基础模型、训练和正则化技术(除了扩展容量之外)进行更改的情况下,在该数据集上实现的改进超过了基线GAN模型,这些结果展示了我们的发现从ImageNet扩展到数据集,其规模和复杂性迄今为止在图像生成模型中是前所未有的。

6 结论

我们已经证明,生成对抗网络在对多个类别的自然图像进行建模时,在提高生成样本的保真度和多样性方面受益匪浅。因此,我们的模型在ImageNet GAN模型中设定了新的性能水平,大幅改善了现有技术水平。我们还对大规模GAN的训练行为进行了分析,表征了其权重的奇异值方面的稳定性,并讨论了稳定性与性能之间的相互关系。

致谢

我们要感谢Kai Arulkumaran、Matthias Bauer、Peter Buchlovsky、Jeffrey Defauw、Sander Dieleman、Ian Goodfellow、Ariel Gordon、Karol Gregor、Dominik Grewe、Chris Jones、Jacob Menick、Augustus Odena、Suman Ravuri、Ali Razavi、Mihaela Rosca和Jeff Stanway。

参考文献

(……)

附录 A:来自ImageNet模型的额外样本、插值和最近邻

附录 B:架构细节

在BigGAN模型(图15)中,我们使用了(Zhang et al.,2018)中的ResNet(He et al.,2016) GAN架构,该架构与(Miyato et al.,2018)相同,但在D中的通道模式被修改,以便每个块的第一个卷积层中的滤波器数量等于输出滤波器的数量(而不是输入滤波器的数量,如Miyato et al.(2018)和Gulrajani et al.(2017)中所述)。我们在G中使用单个共享的类嵌入,并为潜在向量z(skip-z)添加了跳跃连接。特别地,我们使用分层潜在空间,以便将潜在向量z沿其通道维度分割成相等大小的块(在我们的情况下为20维),并且将每个块连接到共享的类嵌入上,并将其作为一个条件向量传递到相应的残差块。每个块的条件被线性投影,以产生块的BatchNorm层的每个样本增益和偏差。偏差投影是以零为中心的,而增益投影的中心在1处。由于残差块的数量取决于图像分辨率,所以z的完整维度为128×128的图像为120,256×256的图像为140,512×512的图像为160。

BigGAN-deep模型(图16)与BigGAN在几个方面不同。它使用了一个更简单的skip-z条件变体:不再首先将z分成块,而是将整个z与类嵌入进行连接,并通过跳跃连接将生成的向量传递到每个残差块中。BigGAN-deep基于带瓶颈的残差块(He et al.,2016),其中包括两个额外的1×1卷积:第一个在更昂贵的3×3卷积之前将通道数减少4倍;第二个产生所需数量的输出通道。虽然BigGAN依赖于1×1卷积,但在通道数量需要更改的情况下,我们使用了不同的策略,旨在在整个跳跃连接中保持身份。在G中,需要减少通道数,我们只是保留第一组通道,然后舍弃其余通道,以产生所需数量的通道。在D中,应增加通道数,我们将输入通道传递,然后与由1×1卷积产生的其余通道进行连接。就网络配置而言,鉴别器与发生器完全相同。每个分辨率有两个块(BigGAN只使用一个),因此BigGAN-deep比BigGAN深四倍。尽管BigGAN-deep模型更深,但由于其残差块的瓶颈结构,其参数明显更少。例如,128×128的BigGAN-deep G和D分别具有50.4M和34.6M个参数,而相应的原始BigGAN模型具有70.4M和88.0M个参数。所有BigGAN-deep模型在64×64分辨率下使用注意机制,通道宽度乘数 c h = 128 ch = 128 ch=128 z ∈ R 128 z ∈ R^{128} zR128

附录 C:实验细节

我们的基本设置遵循SA-GAN(Zhang et al.,2018),并且使用TensorFlow(Abadi et al.,2016)实现。我们采用附录 B 中详细介绍的架构,在每个网络中的单个阶段插入非局部块。G和D网络都使用正交初始化(Saxe et al.,2014)进行初始化。我们使用Adam优化器(Kingma & Ba,2014),其中 β 1 = 0 β_1 = 0 β1=0 β 2 = 0.999 β_2 = 0.999 β2=0.999,和一个恒定的学习率。对于所有分辨率的BigGAN模型,我们在D中使用 2 ⋅ 1 0 − 4 2 \cdot 10^{-4} 2104,而在G中使用 5 ⋅ 1 0 − 5 5 \cdot 10^{-5} 5105。对于BigGAN-deep,我们对128×128模型在D中使用 2 ⋅ 1 0 − 4 2 \cdot 10^{-4} 2104,在G中使用 5 ⋅ 1 0 − 5 5 \cdot 10^{-5} 5105,对256×256和512×512模型在D和G中分别使用 2.5 ⋅ 1 0 − 5 2.5 \cdot 10^{-5} 2.5105。我们尝试了每个G步骤的D步骤数量(将其从1变化到6),发现每个G步骤两个D步骤产生了最好的结果。

我们在采样时使用G的权重的指数移动平均,衰减率设置为0.9999。我们在G中使用跨副本BatchNorm(Ioffe & Szegedy,2015),其中批量统计数据在所有设备上聚合,而不是在标准实现中的单个设备上。在G和D中都使用了谱归一化(Miyato et al.,2018),遵循SA-GAN(Zhang et al.,2018)的方法。我们使用Google TPU v3 Pod进行训练,核心数量与分辨率成比例:128用于128×128,256用于256×256,512用于512×512。大多数模型的训练需要24至48小时。我们将BatchNorm和Spectral Norm中的ε从默认的 1 0 − 8 10^{-8} 108增加到 1 0 − 4 10^{-4} 104,以减轻低精度数值问题。我们通过沿着长边进行裁剪并进行区域采样来预处理数据。

C.1 BatchNorm统计和采样

默认情况下,使用批量归一化的分类器网络在测试时使用激活矩时的运行平均值。以前的研究(Radford et al.,2016)反而在采样图像时使用批量统计数据。虽然这在技术上不是一种无效的采样方式,但它意味着结果依赖于测试批量大小(以及它分成多少设备),并进一步增加了可重现性的复杂性。我们发现这个细节非常重要,测试批量大小的变化会产生巨大的性能变化。当使用G的权重的指数移动平均值进行采样时,情况会进一步恶化,因为BatchNorm的运行平均值是使用未平均的权重计算的,不是对平均权重的激活统计的良好估计。
为了对抗这两个问题,我们使用“固定统计量”(standing statistics),在采样时通过将G运行多次前向传递(通常是100次),每次使用不同的随机噪声批量,并存储在所有前向传递中聚合的均值和方差来计算激活统计量。类似于使用运行统计,这使得G的输出对于批量大小和设备数量变得不变,即使只产生一个样本。

C.2 CIFAR-10

我们在CIFAR-10(Krizhevsky & Hinton,2009)上运行我们的网络,使用表1,行8中的设置,在没有截断的情况下实现了IS为9.22和FID为14.73。

C.3 IMAGENET图像的Inception分数

我们计算了ImageNet的训练和验证集的IS。在128×128的分辨率下,训练数据的IS为233,验证数据的IS为166。在256×256的分辨率下,训练数据的IS为377,验证数据的IS为234。在512×512的分辨率下,训练数据的IS为348,验证数据的IS为241。训练和验证分数之间的差异是因为Inception分类器已经在训练数据上进行了训练,导致高置信度输出在Inception分数中得到了优先考虑。

附录 D:附加图表

附录 E:选择潜在空间

在本附录中,我们探讨了选择不同潜在分布的影响。尽管我们的主要实验结果使用了截断技巧(Truncation Trick),但是我们仍然考虑了其他潜在分布的可能性。我们在下面介绍了一些可能的潜在分布设计,并提供了每个潜在分布的直觉背后的设计原理,以及在SA-GAN基线中替代z ∼ N(0, I)时的性能表现。由于截断技巧表现更好,我们并未进行完整的消融研究,而是选择将z ∼ N(0, I)作为主要结果,以充分利用截断技巧。在没有截断技巧的情况下,我们发现最好的两种潜在分布是伯努利分布{0, 1}和截尾正态分布max (N(0, I), 0),它们可以提高训练速度并轻微提升最终性能,但不太适合进行截断技巧。

潜在分布

  • N(0, I):标准的潜在分布,在主要实验中使用。
  • U[-1, 1]:另一个常见的选择,表现与N(0, I)类似。
  • 伯努利{0, 1}:离散的潜在分布,可以反映自然图像的潜在变化因素不是连续的,而是离散的(某个特征存在,另一个特征不存在)。这个潜在分布在IS方面比N(0, I)表现更好,性能提升了8%,并且所需的迭代次数减少了60%。
  • 截尾正态max (N(0, I), 0):这个潜在分布的设计目的是在潜在空间引入稀疏性(反映了某些潜在特征有时存在,有时不存在),同时还允许这些潜在特征连续变化,表现出不同程度的激活强度。这个潜在分布在IS方面比N(0, I)表现更好,性能提升了15-20%,并且通常需要较少的迭代次数。
  • 伯努利{-1, 1}:这个潜在分布的设计是离散但不是稀疏的(因为网络可以学会对负输入进行激活)。这个潜在分布的性能与N(0, I)几乎相同。
  • 独立的分类分布{-1, 0, 1},各类别的概率相等:这个分布被选择为离散且具有稀疏性,但也允许潜在特征取正值和负值。这个潜在分布的性能与N(0, I)几乎相同。
  • N(0, I)与伯努利{0, 1}相乘:这个分布被选择为具有连续的潜在特征,同时也具有稀疏性(在零点处有一个峰值),类似于截尾正态分布,但不限于正值。这个潜在分布的性能与N(0, I)几乎相同。
  • 将N(0, I)和伯努利{0, 1}连接起来,各自占据一半的潜在维度:这个设计受到Chen等人(2016)的启发,旨在使某些变化因素离散,同时让其他因素连续。这个潜在分布的性能比N(0, I)提高了约5%。
  • 方差退火:从N(0, σI)中采样,其中σ允许在训练过程中变化。我们比较了各种分段的方案,发现从σ = 2开始,逐渐退火到σ = 1的方案在一定程度上改善了性能。可能有更多的方法来选择σ的退火策略,但我们没有深入研究。我们怀疑更有原则或更好调整的方案可能会更大程度地影响性能。
  • 每个样本的变量方差:N(0, σiI),其中σi独立地从U[σl, σh]中采样,对于批次中的每个样本i独立地进行采样,(σl, σh)是超参数。这个分布被选择为通过给网络输入具有非恒定方差的噪声样本来改善对截断技巧的适应性。然而,这似乎并没有影响性能,我们没有深入研究。还可以考虑调整(σl, σh),类似于方差退火的策略。

附录 F:监测的训练统计数据

附录 G:额外讨论:稳定性和崩溃

在本节中,我们展示并讨论了我们模型稳定性的更多调查,扩展了第4节中的讨论。

G.1 在崩溃前进行干预

崩溃的症状是突然而急剧的,样本质量从其峰值迅速降至最低值,过程仅在几百次迭代内完成。我们可以通过监测G的奇异值是否爆炸来检测到这种崩溃,但是尽管(非标准化的)奇异值在整个训练过程中不断增长,但没有一种一致的阈值可以确定崩溃发生的时间。这引发了一个问题,是否可能在崩溃之前数千次迭代中的模型检查点,然后在一些超参数进行修改的情况下继续训练(例如,学习率)。

我们进行了一系列的干预实验,其中我们在崩溃之前的一万或两万次迭代中获取了模型的检查点,改变了训练设置的某些方面,然后观察崩溃是否发生,相对于原始崩溃发生的时间以及在崩溃时达到的最终性能。

我们发现增加生成器(G)或判别器(D)中的学习率(相对于初始值)会导致立即崩溃。即使将学习率从D中的2·10-5加倍到D中的4·10-4,这种设置通常在初始学习率下不会不稳定,但依然导致了崩溃。我们还尝试了改变动量项(Adam的β1和β2),或将动量向量重置为零,但这往往要么没有产生任何效果,要么在增加动量时立即崩溃。

我们发现在G中减小学习率,但保持D中的学习率不变可以延迟崩溃(在某些情况下可以延迟超过十万次迭代),但也削弱了训练 - 一旦G的学习率被减小,性能要么保持不变,要么慢慢下降。相反,在保持G的学习率不变的情况下降低D的学习率会立即导致崩溃。

我们假设这是因为D必须始终针对G保持最佳状态,无论是为了稳定性还是为了提供有用的梯度信息(正如Miyato等人,2018年;Gulrajani等人,2017年;Zhang等人,2018年所指出的那样)。允许G获胜的后果是训练过程的完全崩溃,无论G的调节或优化设置如何。

其次,即使在D良好的条件下,仍然无法确保稳定性,即使通过以较大的学习率或更多的步骤来训练D优于G。这表明,实际上,一个最优的D是必要但不充分的训练稳定性,或者系统的某个方面导致D不能朝着最佳状态进行训练。考虑到后一种可能性,我们在下一节中更详细地观察了D频谱中的噪声。

G.2 判别器频谱中的峰值

如果D的某个元素的训练过程中存在不良动态,那么D的频谱行为可能会透露出是什么元素。与G的前三个奇异值不同,D的前三个奇异值具有很大的噪声成分,趋向于在整个训练过程中增长,但仅对崩溃显示出小的响应,并且前两个奇异值的比率趋向于围绕一个居中,这表明D的频谱具有缓慢的衰减。从近距离观察(图29)可知,噪声峰值类似于冲击响应:在每个峰值处,频谱跳跃上升,然后缓慢减小,带有一些振荡。

一个可能的解释是,这种行为是D记住训练数据的结果,正如第4.2节中的实验所建议的那样。当它接近完美的记忆时,它从真实数据中获得的信号越来越少,因为当D为给定的示例输出自信且正确的预测时,原始的GAN损失和铰链损失都会提供零梯度。如果来自真实数据的梯度信号减弱为零,这可能导致D最终变得偏向于由于仅接收鼓励其输出为负的梯度而产生的负偏见。如果这种偏见超过某个阈值,D最终将错误分类大量的真实示例,并接收鼓励输出为正的大梯度,导致观察到的冲击响应。

这个论点提出了一些修复方法。首先,可以考虑无界损失(例如Wasserstein损失(Arjovsky等人,2017)),这种损失不会受到这种梯度衰减的影响。我们发现,即使通过梯度惩罚和对优化器超参数的简短重新调整,我们的模型在使用这种损失时也不能稳定地训练超过几千次迭代。相反,我们探索了更改铰链损失的边距作为部分折中方案:对于给定的模型和数据小批量,增加边距将导致更多示例落入边距内,从而导致损失。尽管通过减小边距(减小一半)进行训练可以测量性能,但通过增加边距(最多增加3倍)进行训练既不能防止崩溃也不能减少D频谱中的噪声。将边距增加到3以上会导致类似于使用Wasserstein损失的不稳定训练。最后,记忆论点可能表明使用更小的D或在D中使用dropout会通过降低其记忆容量来改进训练,但实际上这会降低训练的质量。

附录 H:对于未能产生积极影响的尝试

我们探索了一系列新颖的和已有的技术,最终发现这些技术在我们的设置下会降低性能或者没有产生明显影响。在这里我们报告这些结果;虽然这一部分的评估没有我们主要架构选择的评估那么详尽,但我们的目的是为了节省未来的研究时间,并为读者提供一个更全面的情况,让他们能够更好地了解我们为了改善性能或稳定性而尝试过的方法。需要注意的是,这些结果必须理解为特定于我们使用的具体设置,而不是适用于其他情况下的通用结论。报告负面结果的一个潜在问题是,我们可能会得出某个特定技术无效的结论,但实际上,这个技术在特定问题特定方式应用下可能会产生不同效果。因此,我们应该谨慎地对待这些结果,避免过于概括地否定某种方法的潜在价值。

以下是我们在研究中尝试过但未能达到期望效果的技术:

  • 我们发现将模型的深度翻倍(在每个上采样或下采样块后插入一个额外的残差块)会降低性能。

  • 我们尝试过在G和D之间共享类别嵌入(而不仅限于在G内部共享)。这可以通过将D的类别嵌入替换为从G的嵌入进行投影来实现,类似于G的BatchNorm层中的做法。在初期的实验中,这似乎有助于加速训练,但我们发现这种方法的可扩展性较差,并且对优化超参数,特别是D步骤数的选择非常敏感。

  • 我们尝试过将G中的BatchNorm替换为WeightNorm,但结果导致训练崩溃。我们还尝试过移除BatchNorm,只使用Spectral Normalization,但也会导致训练崩溃。

  • 我们尝试过在D中添加BatchNorm(无论是类别条件的还是非类别条件的),并进行Spectral Normalization,但这也会导致训练崩溃。

  • 我们尝试过在G和D中尝试不同的位置使用注意力块(甚至在不同分辨率上插入多个注意力块),但发现在128×128的情况下没有明显的好处,而且计算和内存成本显著增加。当切换到256×256时,我们发现将注意力块上移一个阶段会有所帮助,这与我们的预期相符,因为分辨率增加了。

  • 我们尝试在G和D中使用滤波器尺寸为5或7,而不是3。我们发现在G中使用滤波器尺寸为5只会略微提高基线,但计算成本不可接受。其他所有设置都会降低性能。

  • 我们尝试在128×128的情况下改变卷积滤波器的膨胀系数,但发现即使是很小的膨胀系数也会降低性能。

  • 我们尝试在G中使用双线性上采样代替最近邻上采样,但这也会降低性能。

  • 在一些模型中,我们观察到类别条件的模式崩溃,其中模型只为一些子类别生成一个或两个样本,但仍然能够为所有其他类别生成样本。我们注意到崩溃的类别的嵌入与其他嵌入相比已经变得非常大,因此尝试通过对共享嵌入应用权重衰减来缓解这个问题。我们发现小量的权重衰减( 1 0 − 6 10^{-6} 106)会降低性能,而只有更小的值( 1 0 − 8 10^{-8} 108)不会降低性能,但这些值对于防止类别向量爆炸来说也太小了。更高分辨率的模型似乎更能抵御这种问题,我们的最终模型中似乎没有出现这种类型的崩溃。

  • 我们尝试使用MLP替代从G的类别嵌入到其BatchNorm增益和偏差的线性投影,但并没有发现任何好处。我们还尝试了对这些MLP进行Spectrally Normalizing,并在其输出处提供偏差,但没有看到任何好处。

  • 我们尝试过梯度范数裁剪(全局版本通常用于循环网络的裁剪和每个参数基础上的局部版本),但发现这不能缓解不稳定性。

附录 I:超参数

在这项工作中,我们进行了多种超参数的调优:

  • 我们对每个网络的学习率进行了扫描,范围包括 [ 1 0 − 5 , 5 × 1 0 − 5 , 1 0 − 4 , 2 × 1 0 − 4 , 4 × 1 0 − 4 , 8 × 1 0 − 4 , 1 0 − 3 ] [10^{-5}, 5 \times 10^{-5}, 10^{-4}, 2 \times 10^{-4}, 4 \times 10^{-4}, 8 \times 10^{-4}, 10^{-3}] [105,5×105,104,2×104,4×104,8×104,103] 的笛卡尔积。最初发现在较小的批次大小下,SA-GAN 设置(G 的学习率 1 0 − 4 10^{-4} 104, D 的学习率 4 × 1 0 − 4 4 \times 10^{-4} 4×104)在较低的批次大小下效果最佳。我们没有在较大的批次大小下重复此扫描,但是尝试了减半和翻倍学习率的设置,最终使用了减半的设置进行实验。
  • 我们对 R1 梯度惩罚的强度进行了扫描,范围包括 [ 1 0 − 3 , 1 0 − 2 , 1 0 − 1 , 0.5 , 1 , 2 , 3 , 5 , 10 ] [10^{-3}, 10^{-2}, 10^{-1}, 0.5, 1, 2, 3, 5, 10] [103,102,101,0.5,1,2,3,5,10]。我们发现惩罚的强度与性能呈负相关,但是设置在 0.5 以上可以提供训练的稳定性。
  • 我们对 D 的最后一层 DropOut 的保留概率进行了扫描,范围包括 [ 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 0.95 ] [0.5, 0.6, 0.7, 0.8, 0.9, 0.95] [0.5,0.6,0.7,0.8,0.9,0.95]。我们发现 DropOut 具有与 R1 类似的稳定效果,但也会降低性能。
  • 我们对 D 的 Adam 的 β1 参数进行了扫描,范围包括 [ 0.1 , 0.2 , 0.3 , 0.4 , 0.5 ] [0.1, 0.2, 0.3, 0.4, 0.5] [0.1,0.2,0.3,0.4,0.5],发现它具有轻微的正则化效果,类似于 DropOut,但并没有显著改善结果。在任何网络中,较高的 β1 值都会使训练崩溃。
    尝试了减半和翻倍学习率的设置,最终使用了减半的设置进行实验。
  • 我们对 R1 梯度惩罚的强度进行了扫描,范围包括 [ 1 0 − 3 , 1 0 − 2 , 1 0 − 1 , 0.5 , 1 , 2 , 3 , 5 , 10 ] [10^{-3}, 10^{-2}, 10^{-1}, 0.5, 1, 2, 3, 5, 10] [103,102,101,0.5,1,2,3,5,10]。我们发现惩罚的强度与性能呈负相关,但是设置在 0.5 以上可以提供训练的稳定性。
  • 我们对 D 的最后一层 DropOut 的保留概率进行了扫描,范围包括 [ 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 0.95 ] [0.5, 0.6, 0.7, 0.8, 0.9, 0.95] [0.5,0.6,0.7,0.8,0.9,0.95]。我们发现 DropOut 具有与 R1 类似的稳定效果,但也会降低性能。
  • 我们对 D 的 Adam 的 β1 参数进行了扫描,范围包括 [ 0.1 , 0.2 , 0.3 , 0.4 , 0.5 ] [0.1, 0.2, 0.3, 0.4, 0.5] [0.1,0.2,0.3,0.4,0.5],发现它具有轻微的正则化效果,类似于 DropOut,但并没有显著改善结果。在任何网络中,较高的 β1 值都会使训练崩溃。
  • 我们对 G 中修改的正交正则化惩罚的强度进行了扫描,范围包括 [ 1 0 − 5 , 5 × 1 0 − 5 , 1 0 − 4 , 5 × 1 0 − 4 , 1 0 − 3 , 1 0 − 2 ] [10^{-5}, 5 \times 10^{-5}, 10^{-4}, 5 \times 10^{-4}, 10^{-3}, 10^{-2}] [105,5×105,104,5×104,103,102],并选择了 1 0 − 4 10^{-4} 104

08-24 22:06