【计算机视觉|生成对抗】用于高保真自然图像合成的大规模GAN训练用于高保真自然图像合成的大规模GAN训练(BigGAN)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处

标题: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:展示了我们模型生成的类别条件样本。

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上的良好转移性。我们预训练生成器的代码和权重已公开提供1

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节中讨论了这种情况的原因和影响。对于这些实验,我们报告了在崩溃之前保存的检查点的分数。

表1:我们提出的修改方法的FID(Fréchet Inception Distance,值越低越好)和IS(Inception Score,值越高越好)的消融结果。Batch表示批次大小,Param表示总参数数量,Ch.表示通道乘数,代表每层单元数,Shared表示使用共享嵌入,Skip-z表示使用从潜变量到多个层的跳跃连接,Ortho.表示正交正则化,Itr表示该设置是否在1000000次迭代时稳定,或在给定迭代次数时崩溃。除1-4行外,结果基于8个随机初始化计算得出。

然后,我们将每个层中的宽度(通道数)增加了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 在保真度和多样性之间平衡:截断技巧

图2:(a)增加截断的效果。从左到右,阈值设置为2、1、0.5、0.04。(b)将截断应用于条件较差的模型时产生的饱和伪影。

不像需要通过其潜变量进行反向传播的模型,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)=βWTWIF2(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 衡量不稳定性:生成器

图3:G(a)和D(b)层中第一个奇异值σ0的典型图表,在应用谱归一化之前。G的大多数层具有良好的谱,但在没有约束的情况下,一小部分子集会在训练过程中增长并在崩溃时爆炸。D的谱噪声较大,但在其他方面表现良好。从红色到紫色的颜色表示深度逐渐增加。

过去的许多研究从各种分析角度和玩具问题上调查了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上的评估

表2:不同分辨率下模型的评估。我们报告没有截断的分数(第3列),最佳FID的分数(第4列),验证数据IS的分数(第5列)以及最大IS的分数(第6列)。标准差是基于至少三个随机初始化计算的。

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

图4:我们的BigGAN模型生成的截断阈值为0.5的样本(a-c),以及部分训练模型中出现的类别泄漏示例(d)。

除了在论文第一版中引入并在大多数实验中使用的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上,这种额外的容量并没有带来益处。

表3:在256×256分辨率下对JFT-300M的BigGAN结果。FID和IS列报告了由JFT-300M训练的Inception v2分类器给出的这些得分,其中噪声分布为 z ∼ N ( 0 , I ) z ∼ N (0, I) zN(0,I)(非截断)。(min FID) / IS和FID / (max IS)列报告了在从 σ = 0 σ = 0 σ=0 σ = 2 σ = 2 σ=2的范围内对截断噪声分布进行扫描后得到的最佳FID和IS得分。来自JFT-300M验证集的图像具有50.88的IS和1.94的FID。

在图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模型的额外样本、插值和最近邻

图5:我们的256×256分辨率下BigGAN模型生成的样本。

图6:我们的512×512分辨率下BigGAN模型生成的样本。

图7:在512×512分辨率下比较容易类别(a)与困难类别(b)。像狗这样在数据集中普遍存在且主要基于纹理的类别,比涉及未对齐的人脸或人群的类别要容易建模得多。这些类别更具有动态性和结构性,通常具有人类观察者更为敏感的细节。即使使用非局部块,在生成高分辨率图像时,建模全局结构的难度会进一步增加。

图8:z、c对之间的插值。

图9:在保持z恒定的情况下,c之间的插值。姿势语义经常在端点之间保持不变(尤其是在最后一行)。第二行演示了灰度是在联合z、c空间中编码的,而不是在z中编码的。

图10:VGG-16-fc7(Simonyan&Zisserman,2015)特征空间中的最近邻。生成的图像位于左上角。

图11:ResNet-50-avgpool(He et al.,2016)特征空间中的最近邻。生成的图像位于左上角。

图12:像素空间中的最近邻。生成的图像位于左上角。

图13:在VGG-16-fc7(Simonyan&Zisserman,2015)特征空间中的最近邻。生成的图像位于左上角。

图14:在ResNet-50-avgpool(He等,2016)特征空间中的最近邻。生成的图像位于左上角。

附录 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

图15:(a)BigGAN的G的典型架构布局;详细信息在接下来的表格中。 (b)BigGAN的G中的残差块(ResBlock up)。 (c)BigGAN的D中的残差块(ResBlock down)。

图16:(a)BigGAN-deep的G的典型架构布局;详细信息在接下来的表格中。 (b)BigGAN-deep的G中的残差块(ResBlock up)。 (c)BigGAN-deep的D中的残差块(ResBlock down)。在BigGAN-deep中,没有包含上采样(up)或下采样(down)的ResBlock也没有包括上采样(up)或下采样(down)的ResBlock,其具有身份跳连。

表4:用于128×128像素图像的BigGAN架构。ch代表来自表1中的每个网络的通道宽度乘数。

表5:用于256×256像素图像的BigGAN架构。相对于128×128的架构,在16×16分辨率处每个网络中增加了一个额外的ResBlock,并将G中的非局部块移动到128×128的分辨率。由于内存限制,我们无法将D中的非局部块移动。

表6:用于512×512像素图像的BigGAN架构。相对于256×256的架构,在512×512分辨率处增加了一个额外的ResBlock。由于内存限制,我们不得不将两个网络中的非局部块都移回到64×64的分辨率,就像在128×128像素设置中一样。

表7:128×128像素图像的BigGAN-deep架构。

表8:256×256像素图像的BigGAN-deep架构。

表9:512×512像素图像的BigGAN-deep架构。

附录 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:附加图表

图17:在128×128分辨率下的IS与FID对比。得分是基于三个随机种子的平均值。

图18:256像素和512像素下的IS与FID对比。256像素的得分是基于三个随机种子的平均值。

图19:256×256的JFT-300M IS与FID对比。我们展示了从 σ = 0 σ = 0 σ=0 σ = 2 σ = 2 σ=2的截断值(顶部)和从 σ = 0.5 σ = 0.5 σ=0.5 σ = 1.5 σ = 1.5 σ=1.5的截断值(底部)。每条曲线对应表格3中的一行。标记为baseline的曲线对应第一行(没有正交正则化和其他技术),其余的曲线对应第2-4行,即不同容量(Ch)下的相同架构。

附录 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:监测的训练统计数据

图20:典型模型的训练统计数据,没有特殊修改。在200000次迭代后发生了崩溃。

图21:G的训练统计数据,其中σ0在G中被规范化为1。在125000次迭代后发生了崩溃。

图22:D的训练统计数据,其中G中的σ0被规范化为1。在125000次迭代后发生了崩溃。

图23:G的训练统计数据,其中对D施加了强度为10的R1梯度惩罚。该模型没有崩溃,但最大IS仅为55。

图24:D的训练统计数据,其中对D施加了强度为10的R1梯度惩罚。该模型没有崩溃,但最大IS仅为55。

图25:G的训练统计数据,其中在D的最后一层特征层应用了Dropout(保留概率为0.8)。该模型没有崩溃,但最大IS仅为70。

图26:D的训练统计数据,其中在D的最后一层特征层应用了Dropout(保留概率为0.8)。该模型没有崩溃,但最大IS仅为70。

图27:典型模型的额外训练统计数据,没有特殊修改。在200000次迭代后发生崩溃。

图28:使用R1梯度惩罚(D的惩罚强度为10)的额外训练统计数据。该模型不会崩溃,但最大IS仅为55。

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

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

G.1 在崩溃前进行干预

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

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

我们发现增加生成器(G)或判别器(D)中的学习率(相对于初始值)会导致立即崩溃。即使将学习率从D中的2·10-4和G中的5·10-5加倍到D中的4·10-4和G中的1·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 判别器频谱中的峰值

图29:D的频谱在噪声尖峰处的近景。

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

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

这个论点提出了一些修复方法。首先,可以考虑无界损失(例如Wasserstein损失(Arjovsky等人,2017)),这种损失不会受到这种梯度衰减的影响。我们发现,即使通过梯度惩罚和对优化器超参数的简短重新调整,我们的模型在使用这种损失时也不能稳定地训练超过几千次迭代。相反,我们探索了更改铰链损失的边距作为部分折中方案:对于给定的模型和数据小批量,增加边距将导致更多示例落入边距内,从而导致损失3。尽管通过减小边距(减小一半)进行训练可以测量性能,但通过增加边距(最多增加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

  1. https://tfhub.dev/s?q=biggan ↩︎

  2. https://drive.google.com/drive/folders/1lWC6XEPD0LT5KUnPXeve_kWeY-FxH002 ↩︎

  3. 未受限制的模型可以轻松地学习不同的输出尺度来适应这个边距,但使用谱归一化对我们的模型进行了限制,使得特定边距的选择具有意义。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/60621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rabbitmq消息积压问题如何解决以及如何进行限流

一、增加处理能力 优化系统架构、增加服务器资源、采用负载均衡等手段,以提高系统的处理能力和并发处理能力。通过增加服务器数量或者优化代码,确保系统能够及时处理所有的消息。 二、异步处理 将消息的处理过程设计为异步执行,即接收到消息…

基于机器学习的fNIRS信号质量控制方法

摘要 尽管功能性近红外光谱(fNIRS)在神经系统研究中的应用越来越广泛,但fNIRS信号处理仍未标准化,并且受到经验和手动操作的高度影响。在任何信号处理过程的开始阶段,信号质量控制(SQC)对于防止错误和不可靠结果至关重要。在fNIRS分析中&…

FreeSWITCH 1.10.10 简单图形化界面5 - 使用百度TTS

FreeSWITCH 1.10.10 简单图形化界面5 - 使用百度TTS 0、 界面预览1、注册百度AI开放平台,开通语音识别服务2、获取AppID/API Key/Secret Key3、 安装百度语音合成sdk4、合成代码5、在PBX中使用百度TTS6、音乐文件-TTS7、拨号规则-tts_command 0、 界面预览 http://…

网络有源号角(50W-100W)社区小区广播 工地语音播报,隧道广播,钢铁广播广播系统

网络有源号角(50W-100W)社区小区广播 工地语音播报,隧道广播,钢铁广播广播系统 SV-7042T 50W网络有源号角 SV-7042T是深圳锐科达电子有限公司的一款壁挂式网络有源号角,具有10/100M以太网接口,可将网络音…

ceph源码阅读 erasure-code

1、ceph纠删码 纠删码(Erasure Code)是比较流行的数据冗余的存储方法,将原始数据分成k个数据块(data chunk),通过k个数据块计算出m个校验块(coding chunk)。把nkm个数据块保存在不同的节点,通过n中的任意k个块还原出原始数据。EC包含编码和解…

解密Spring MVC异常处理:从局部到全局,打造稳固系统的关键步骤

😀前言 在现代软件开发中,异常处理是不可或缺的一部分,它能够有效地提高系统的稳定性和健壮性。在Spring MVC框架中,异常处理机制起着至关重要的作用,它允许开发者在程序运行过程中捕获、处理和报告异常,从…

Qt/C++编写视频监控系统80-远程回放视频流

一、前言 远程回放NVR或者服务器上的视频文件,一般有三种方式,第一种是调用厂家的SDK,这个功能最全,但是缺点明显就是每个厂家的设备都有自己的SDK,只兼容自家的设备,如果你的软件需要接入多个厂家的&…

【深入解读Redis系列】Redis系列(五):切片集群详解

首发博客地址 https://blog.zysicyj.top/ 系列文章地址[1] 如果 Redis 内存很大怎么办? 假设一台 32G 内存的服务器部署了一个 Redis,内存占用了 25G,会发生什么? 此时最明显的表现是 Redis 的响应变慢,甚至非常慢。 这…

分类预测 | MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测

分类预测 | MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测 目录 分类预测 | MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测…

数学建模:数据的预处理

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 数据预处理数据变换数据清洗缺失值处理异常值处理 数据预处理 数据变换 常见的数据变换的方式:通过某些简单的函数进行数据变换。 x ′ x 2 x ′ x x ′ log ⁡ ( x ) ∇ f ( x k )…

Redis 持久化和发布订阅

一、持久化 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能! 1.1、RDB(Redis DataBase) 1.1.1 …

第一方支付、第二方支付、第三方支付、第三方支付是什么?

我相信关于支付行业大家多多少少都有一些自己的理解,但是具体的一些名词如标题中的这些,第一方、第二方、第三方支付,到底指的是什么? 第一方支付 也就是现金支付,其本质的意义就是指货币支付,从最早出现货…

猜拳游戏小程序源码 大转盘积分游戏小程序源码 积分游戏小程序源码

简介: 猜拳游戏大转盘积分游戏小程序前端模板源码,一共五个静态页面,首页、任务列表、大转盘和猜拳等五个页面 图片:

Spring与Mybatis集成且Aop整合

目录 一、集成 1.1 集成的概述 1.2 集成的优点 1.3 代码示例 二、整合 2.1 整合概述 2.2 整合进行分页 一、集成 1.1 集成的概述 集成是指将不同的组件、部分或系统组合在一起,以形成一个整体功能完整的解决方案。它是通过连接、交互和协调组件之间的关系来实…

MybatisPlus-插件篇

文章目录 一、前言二、插件1、分页插件2.1.1、引入依赖2.1.1、配置分页插件2.1.3、使用分页方法 2、乐观锁插件2.1、引入依赖2.2、添加版本字段2.3、配置乐观锁插件2.4、执行更新操作 三、总结 一、前言 本文将详细介绍mybatisplus中常用插件的使用。 二、插件 1、分页插件 …

Texlive2023与Texstudio2023卸载与安装(详细全程)

早在两年前安装了texlive2020,最近重新使用总是报错,好像是因为版本过低。我就找了个时间更新一下texlive版本,全程如下。 1、卸载texlive老版本 1)找到texlive目录,比如我的是D:\texlive\2022\tlpkg\installer&…

链路聚合原理

文章目录 一、定义二、功能三、负载分担四、分类五、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、定义 在网络中,端口聚合是一种将连接到同一台交换机的多个物理端口捆绑在一起,形成一个逻辑端口的技术。通过端口聚合&…

Llama模型结构解析(源码阅读)

目录 1. LlamaModel整体结构流程图2. LlamaRMSNorm3. LlamaMLP4. LlamaRotaryEmbedding 参考资料: https://zhuanlan.zhihu.com/p/636784644 https://spaces.ac.cn/archives/8265 ——《Transformer升级之路:2、博采众长的旋转式位置编码》 前言&#x…

Uniapp笔记(五)uniapp语法4

本章目标 授权登录【难点、重点】 条件编译【理解】 小程序分包【理解】 一、授权登录 我的模块其实是两个组件&#xff0c;一个是登录组件&#xff0c;一个是用户信息组件&#xff0c;根据用户的登录状态判断是否要显示那个组件 1、登录的基本布局 <template><…

【java】【已解决】IDEA启动报错:Lombok Requires Annotation Processing

解决办法&#xff1a; 1、根据异常提示操作&#xff1a; 直接点击错误提示后面的蓝色标识【Enable】&#xff08;小编点完了所以变灰色&#xff09;&#xff0c;此操作等价于下面的步骤&#xff1a; 【File】-->【Settings】-->【Build】-->【Compiler】-->【Ann…