论文连接地址:https://arxiv.org/pdf/1809.11096.pdf
Github地址:https://github.com/AaronLeong/BigGAN-pytorch
目录
一、效果展示
二、简介
三、主要贡献
四、BigGAN模型
4.1 模型的网络架构
4.2 模型的实现——Scaling up GANs
五、实验
六、总结
这篇论文是ICLR 2019上的一篇Oral论文。团队公布了三位研究人员分别为赫瑞瓦特大学的Andrew Brock、谷歌DeepMind研究员Jeff Donahue和Karen Simonyan。
看到这些足以以假乱真的生成图片,很多人都是忍不住感叹图片的质量,而这样的效果也就是本论文中提出的BigGAN生成的。BigGAN作为GAN发展史上的重要里程碑,将精度作出了跨越式提升。在ImageNet (128*128分辨率)训练下,将Inception Score (IS,越大越好) 由之前最好的52.52提升到166.3,Frechet Inception Distance (FID,越小越好) 由之前最好的18.65提升到9.6。
得益于生成对抗网络的出现,生成式图像建模算法在最近几年取得了大的进步,可以生成真实的、多样性的图像。这些算法直接从样本数据进行学习,然后在预测阶段输出生成的图像。GAN的训练是动态的,并且对算法设置的几乎每个方面都很敏感,从神经网络的结构到优化算法的参数。对于这一问题,人们进行了大量的持续的研究,从经验到理论层面,以确保训练算法在各种设置下的稳定性。尽管如此,之前最好的算法在条件式ImageNet数据建模上的Inception得分为52.5,而真实数据的得分为233,还有很大的差距。
近期的研究工作集中在修改初始的GAN算法,使得它更稳定。这些方法中,既有经验性的分析,也有理论性的分析。其中一种思路是修改训练时的目标函数以确保收敛。另外一种思路是通过梯度惩罚或归一化技术对D进行限定,这两种方法都是在抵抗对无界的目标函数的使用,确保对任意的G,D都能提供梯度。
尽管近期由于生成图像建模的研究进展,从复杂数据集例如ImageNet中生成高分辨率、多样性的样本仍然是很大的挑战。近年来生成图像建模领域进展迅速,GAN的提出为我们带来了能直接从数据中学习生成高保真度和多样图像的模型。GAN的训练是动态的,并且对几乎所有层面的设置都很敏感(从最优化参数到模型架构),但有大量的研究在经验和理论上获得了在多种设置中实现稳定训练的洞察。尽管得到了这样的进展,当前在条件ImageNet建模上的当前最佳结果仍然仅达到了52.5的IS,而真实数据有233的IS。
为此,在这篇论文中,研究者尝试在最大规模的数据集中训练生成对抗网络,并研究在这种规模的训练下的不稳定性。研究者发现应用垂直正则化(orthogonal regularization)到生成器可以使其服从简单的截断技巧(truncation trick),从而允许通过截断隐空间来精调样本保真度和多样性的权衡。这种修改方法可以让模型在类条件的图像合成中达到当前最佳性能。
增大GAN的规模由文中实验可得结论1:稳定性不单单来源于G或者D,而是两者在对抗训练过程中相互作用的结果。它们病态条件的症状可以用来跟踪和鉴别不稳定性,确保合理的条件被证明对于训练是必须的但对防止训练崩溃时不充分的,即必要不充分。对D进行严格的限制能确保稳定性,但会严重损失最终生成的数据的质量。以现有的技术,可以放宽这个条件并允许崩溃在训练出一个好的结果之后发生和达到更好的数据生成效果。
文章希望既保证GAN生成图像的保真度又保证生成图像的多样性。对此,作者认为他们有三点贡献:
网络基于ResNet进行了修改,每一个block的输入和输出都相等。网络输入为N (0; I)的正态分布。左侧实心线c表示共享嵌入(shared embeddings ),右侧实心线表示分层的潜在空间(hierarchical latent space )。(a)表示整体网络结构,(b)表示每个block结构。
基于SA-GAN结构,使用hinge-loss作为GAN的目标函数。使用class-conditional BN向生成器G中加入类别信息,用projection向鉴别器D中加入类别信息。优化设置与原SA-GAN论文相同,但学习率减半,D每更新两次,G更新一次。对G的权重采用滑动平均,本文使用正交初始化。BN层的统计值是基于所有设备上的统计,不同于标准实现采用基于每个设备的。
作者在此处将IS类比为precision,FID类比为recall,通过改变截断的阈值,做出FID-IS曲线。并且由曲线可得,阈值减小,多样性下降,质量提高,IS对多样性并不敏感,而FID对多样性和质量都敏感。所以可以看到,最初FID会有提高,但当阈值越来越小时,模型多样性下降,FID急剧下降。
直接使用截断技巧对很多模型来说是有问题的,会导致saturation artifacts。为解决这个问题,作者希望通过限制G变得更平滑来使得z的全部空间能投射到好的输出样本上。作者尝试使用正交正则化,即直接应用正交条件。
上述各种改进的效果对比如下表所示:从左到右依次是Batch size,通道数,参数量,共享嵌入层,多层级潜在空间,正交正则,迭代次数,FID,IS分数。
另外实验探究了特征的平稳性:
以往许多工作从各种分析角度对GAN的稳定性进行了研究,但是我们注意到产生不稳定性的设置是小规模的,有必要直接对大规模的设置进行直接分析。和Odena等人一样,我们在训练过程中监视了权重、梯度和损失统计数据,期望能搜寻一种能够预示训练开始崩溃的指标。我们发现每个特征矩阵Top 3的奇异值,,包含的信息量最大。它们可以通过Alrnoldi iteration方法有效地计算,这种算法是power iteration的扩展,用于估计额外的奇异值和奇异向量。如图和论文中的附录F中所示,出现了一种明显的模式:大多数的G层具有良好的谱线模式,但是有些层(通常是G的第一层,over-complete and not convolutional)表现不佳,谱线在整个训练过程中不断增长,在崩溃时爆发。为了弄清楚这种现象是训练崩溃的原因还是说仅仅是一种症状,我们研究了附加条件对G的影响,借此抵消谱线爆炸。
横轴为迭代次数,纵轴为频谱参数,其中不同的颜色的曲线表示不同的层,从红色到紫色深度不断增加。
(a)表示生成器,大部分的层训练中参数表现的很平稳,当然有一些层的参数会爆炸。
(b)表示判别器,大部分的层都有很大的噪声。
生成器特征的平稳性:
在对权重矩阵进行奇异值分解,前3个值(,,)对每个矩阵具有最大的影响。因此,首先考虑对进行正则化操作。
最终结果,不管有无频谱归一化(Spectral Normalization ),这样的改进都可以提升训练的平稳性,但是不能解决爆炸的问题。因此论文对判别器进行改进。
判别器特征的平稳性:
论文假设频谱噪声是导致训练不平稳的因素,因此很自然的想法是进行梯度惩罚,通过对R1进行0均值的正则化惩罚来进行改善。
论文实验表明,惩罚越大,训练越平稳,但是精度也越来越低。
得到小结:
我们发现在对抗训练过程中的稳定性来自G和D之间的相互作用,而不是只取决于其中某一个。虽然不良条件的症状可以用来跟踪和识别不稳定性,而且保证合理的条件对训练来说是必须的,但是这并不足以防止最终训练崩溃。通过严格限制D来增强稳定性是可行的,但是这样做会带来性能上的巨大损失。使用当前的技术,可以通过放松这种条件限制并允许在训练后期发生崩溃可以达到更好的性能,此时模型已经经过充分训练能够获得良好的结果。
为了确认论文中设计的选择是否对更大更复杂更多样的数据集也有效,同样报告了系统在JFT-300M的子集上的结果。完整的JFT-300M数据集包括300M张真实世界的图像,报刊18K个类别。因为类别分布是长尾的,论文对数据集进行了采样,只保留了8.5K最常见的分类。最后数据集包含292M张图像——比ImageNet大了两个数量级。对于多标签的图像,每次取样到该图片时随机选择一个标签。为了计算在该数据集下训练好的GAN的IS和FID分数,作者使用在该数据集上训练的Inception V2分类器。所有模型训练的额batch size为2048。作者将模型的简化版本(SA-GAN,但是用了更大的batch size)和完整版本进行了比较,后者使用了应用到ImageNet上所有使结果更好的技术(共享嵌入,层次潜在空间,正交正则化)。论文的结果表明这些技术在模型容量一致(64个基础通道)但数据集大得多的情况下也明显提升了性能。进一步表明,如果将模型的基础通道数量提升到128,可以获得明显的性能提升,但对于ImageNet GANs额外的模型容量并没有带来益处。
在论文附录D中,作者给出了在这个数据集上训练的模型的截断图。不像ImageNet,在σ出产生最高的保真性,对于我们的JFT-300M模型,当σ在0.5到1的范围时,IS通常是最大的。我们怀疑这是因为JFT-300M标签的类间多样性,以及图像分布的相对复杂性(在多个尺度包含多个对象)。有趣的是,ImageNet训练的模型在没有强正则化时会发生崩溃,但JFT-300M训练的模型在成千上万次迭代之后还是保持稳定。这意味着移动到超过ImageNet更大的数据集上能部分缓解GAN稳定性的问题。
在不改变基础模型或训练和正则化技术(超出扩展容量)的情况下,我们在该数据集上获得的提升意味着我们从ImageNet扩展到这样大尺度和复杂的数据集上的发现对于图像的生成模型是前所未有的。
本篇论文进行了大量的理论分析和实验探究,由于实验结果图特别多,在此就不一一列举。
BigGAN是GAN发展史上新的里程碑,论文贡献包括,大batchsize,大channel数,截断技巧,训练平稳性控制等。本文证明了将GAN用于多类自然图像生成任务时,加大模型的规模可以显著的提高生成的图像的质量,对生成的样本的真实性和多样性都是如此。通过使用一些技巧,本文提出的方法的性能较之前的方法有了大幅度的提高。另外,还分析了大规模GAN在训练时的机制,用它们的权重矩阵的奇异值来刻画它们的稳定性。讨论了稳定性和性能即生成的图像的质量之间的相互作用和影响。
总的来说,这篇论文效果惊人,但是要想复现它就比较有难度了。在这场实验中,Brock等人生成512像素图像,需要的是512块谷歌TPU,并且训练时间会持续24到48个小时。
光有TPU加持可能还不够,你还得找一个电量充足的地方。有人大致估算了一下,如果每个TPU每个小时需要200瓦的电量,那么在Brock的512像素实验中,每个TPU将耗费2450到4915度电,相当于一个普通美国家庭大约半年内的用电量。
可能,普通人和机器学习高手的差距,可能不仅仅是几个算法之间的差距那么简单了……