对于高保真度自然图片合成的大规模GAN训练
摘要
尽管近期在生成图片建模方面取得了进展,但是从诸如ImageNet这种复杂的数据库中成功地生成高分辨率以及多样性的样本,依旧是个难以捉摸的目标。为此,我们在尚未尝试的最大规模下训练生成对抗网络,并研究在这种规模下模型的不稳定性。我们发现将正交正则化应用于生成器,时期服从简单的“截断技巧”,从而可以通过截断隐藏空间,对样本的保真度与多样性之间的权衡进行精细的控制。我们的修改得到了在类条件图像合成中设置新的艺术状态的模型。在ImageNet的128*128分辨率下训练,我们的模型(BigGANs)得到了166.3的Inception Score(IS)和9.6的Frechet Inception Distance(FID),改善了之前最好的52.52的IS和18.65的FID。
这篇论文没有提出新的模型,只是将原有的GAN的模型,用8倍原有的batch size大小,并且将隐藏层的变量数量扩充到原有模型的4倍以后,进行训练获得了很好的图片生成的效果。与此同时,在扩充了变量数量和batch size大小后,模型出现了不稳定的现象,文章中对出现的不稳定现象,采用现有的比较有效的稳定训练GAN的方法,但是文中发现这样确实会稳定GAN的训练,但是同时会牺牲生成图片的质量。
关于实现细节的问题
GAN架构:
SA-GAN
损失函数:
hinge loss
类信息处理:
Batch Norm for G
projection for D
训练
Spectral Norm in G
学习率减半
每训练G一次,训练D两次
G的权重使用moving average,decay为0.9999
初始化
Orthogonal Initialization
文章首先发现,只是增加batch size的大小到原来大小的8倍,模型提升了生成图片的质量(用Inception Score度量),但是也加快了模型发生不稳定和模式崩塌速度。
接着,增加每层的神经元的个数,将其个数翻倍,这样同样提升了生成图片的质量(用Inception Score度量)。但是实验发现,增加GAN网络的深度,并没有改善图片生成的质量。
文中对于类信息c使用batch norm处理,并采用了共享的策略,将c的信息传递给每一层中,这样可以提高性能,减少计算量。除了将类信息c传递到每层,文中同样将z,也就是生成图片所用的噪声数据传递到了每层,这样可以提升性能和加快训练速度。
![](https://img.haomeiwen.com/i6080435/764c51f663e030c2.png)
文章中同时也对于GAN训练的稳定性做了研究,首先他们发现了生成器G的第一层的最大奇异值,会在发生模式崩塌的情况下,剧烈变化并且爆炸增长。但是限制这一层权重的增长,以限定其最大奇异值的变化,并没有保证获得模型的稳定,因而他们认为第一层最大奇异值的变化,是模式崩塌发生的征兆,而不是原因。
文章近一步研究了分辨器的模式崩塌的情况,发现在模式崩塌发生的时候,其权重的奇异值会发现跳跃,同时文章尝试了很多正则化的方法来防止模式崩塌的现象,发现采用了这些正则化的方法,可能会防止模式崩塌,但是这是以生成样本的质量为代价的。因而文章给出的建议是,在现有的技术情况下,可以考虑松弛防止模式崩塌的约束,或者就让模式崩塌发生,从而换取更好的模型生成的图片的质量。
文章的附录部分的讨论也值得一读,比如使用的GAN使用了resNet的架构;训练的trick,还有就是对于隐藏变量——生成器的输入z的取值研究,文中的实验表明,使用伯努利分布,Censored Normal,正态分布和伯努利分布的混合都可以提高输出图片的质量。
网友评论