论文引入

我们来看一下由 BigGAN 生成的图像:

随着 GAN、VAE 等一众生成模型的发展,图像生成在这几年是突飞猛进,14 年还在生成手写数字集,到 18 年已经将 ImageNet 生成的如此逼真了。

这中间最大的贡献者应该就是 GAN 了,GAN 的对抗思想让生成器和判别器在博弈中互相进步,从而生成的图像清晰逼真。SAGAN 已经将 ImageNet 在生成上的 IS 达到了 52 分,在定性上我感觉 SAGAN 已经把 ImageNet 生成的可以看了,我认为已经很优秀了。BigGAN 的生成让我只能用折服来感叹,BigGAN 为啥能实现这么大的突破?

其中一个很大的原因就是 BigGAN 如它题目 Large Scale GAN Training for High Fidelity Natural Image Synthesis描述的 Large Scale,在训练中 Batch 采用了很大的 Batch,已经达到了 2048(我们平常训练 Batch 正常都是 64 居多),在卷积的通道上也是变大了,还有就是网络的参数变多了,在 2048 的 Batch 下整个网络的参数达到了接近 16 亿。

这个就是 BigGAN 之所以称为 BigGAN 的原因,我想 BigGAN 的题目不仅仅在说明网络的庞大,还想暗示这篇文章会给人带来很大的印象,确实我是被“吓”到了。 这么大的提升当然不可能是一味的增大 Batch 和网络参数能实现的,其中包括了 Batch 的加大、先验分布 z 的适时截断和处理、模型稳定性的控制等,我们在后续展开说明。

按照原文,总结一下 BigGAN 的贡献:

  1. 通过大规模 GAN 的应用,BigGAN 实现了生成上的巨大突破;
  2. 采用先验分布 z 的“截断技巧”,允许对样本多样性和保真度进行精细控制;
  3. 在大规模 GAN 的实现上不断克服模型训练问题,采用技巧减小训练的不稳定。

BigGAN提升生成之路

BigGAN 在 SAGAN 的基础上架构模型,BigGAN 同样采用 Hinge Loss、BatchNorm 和 Spectral Norm 和一些其它技巧。在 SAGAN 的基础上,BigGAN 在设计上做到了 Batch size 的增大、“截断技巧”和模型稳定性的控制。

1.Batch size的增大

IS(Inception Score)    FID(Fréchet Inception Distance)

SAGAN 中的 Batch size 为 256,作者发现简单地将 Batch size 增大就可以实现性能上较好的提升,文章做了实验验证:

  1. 可以看到,在 Batch size 增大到原来 8 倍的时候,生成性能上的 IS 提高了 46%。文章推测这可能是每批次覆盖更多模式的结果,为生成和判别两个网络提供更好的梯度。增大 Batch size 还会带来在更少的时间训练出更好性能的模型但增大 Batch size 也会使得模型在训练上稳定性下降,后续再分析如何提高稳定性。
  2. 在实验上,单单提高 Batch size 还受到限制,文章在每层的通道数也做了相应的增加,当通道增加 50%,大约两倍于两个模型中的参数数量。这会导致 IS 进一步提高 21%。文章认为这是由于模型的容量相对于数据集的复杂性而增加。有趣的是,文章在实验上发现一味地增加网络深度并不会带来更好的结果,反而在生成性能上会有一定的下降。
  3. 由于 BigGAN 是训练 ImageNet 的各个类,所以通过加入条件标签 c 实现条件生成,如果在 BatchNorm 下嵌入条件标签 c 将会带来很多的参数增加,文章采用了共享嵌入,而不是为每个嵌入分别设置一个层,这个嵌入线性投影到每个层的 bias 和 weight,该思想借鉴自 SNGAN 和 SAGAN,降低了计算和内存成本,并将训练速度(达到给定性能所需的迭代次数)提高了 37%。
  4. BigGAN 在先验分布 z 的嵌入上做了改进,普遍的 GAN 都是将 z 作为输入直接嵌入生成网络,而 BigGAN 将噪声向量 z 送到 G 的多个层而不仅仅是初始层文章认为潜在空间 z 可以直接影响不同分辨率和层次结构级别的特征,对于 BigGAN 的条件生成上通过将 z 分成每个分辨率的一个块,并将每个块连接到条件向量 c 来实现,这样提供约 4% 的适度性能提升,并将训练速度提高 18%。

按照上述思想看一下 BigGAN 的生成网络详细结构:

如左图所示将噪声向量 z 通过 split 等分成多块,然后和条件标签 c 连接后一起送入到生成网络的各个层中,对于生成网络的每一个残差块又可以进一步展开为右图的结构。可以看到噪声向量 z 的块和条件标签 c 在残差块下是通过 concat 操作后送入 BatchNorm 层,其中这种嵌入是共享嵌入,线性投影到每个层的 bias 和 weight。

2.“截断技巧”

对于先验分布z,一般情况下都是选用标准正态分布 N(0,I) 或者均匀分布 U[−1,1],文章对此存在疑惑,难道别的分布不行吗?通过实验,为了适合后续的“截断”要求,文章最终选择了 z∼N(0,I)。

所谓的“截断技巧”就是通过对从先验分布 z 采样,通过设置阈值的方式来截断 z 的采样,其中超出范围的值被重新采样以落入该范围内。这个阈值可以根据生成质量指标 IS 和 FID 决定。

通过实验可以知道通过对阈值的设定,随着阈值的下降生成的质量会越来越好,但是由于阈值的下降、采样的范围变窄,就会造成生成上取向单一化,造成生成的多样性不足的问题。往往 IS 可以反应图像的生成质量,FID 则会更假注重生成的多样性。我们通过下图理解一下这个截断的含义:

随着截断的阈值下降,生成的质量在提高,但是生成也趋近于单一化。所以根据实验的生成要求,权衡生成质量和生成多样性是一个抉择,往往阈值的下降会带来 IS 的一路上涨,但是 FID 会先变好后一路变差。

还有在一些较大的模型不适合截断,在嵌入截断噪声时会产生饱和伪影,如上图 (b) 所示,为了抵消这种情况,文章通过将 G 调节为平滑来强制执行截断的适应性,以便 z 的整个空间将映射到良好的输出样本。为此,文章采用正交正则化,它直接强制执行正交性条件:

其中 W 是权重矩阵,β 是超参数。这种正则化通常过于局限,文章为了放松约束,同时实现模型所需的平滑度,发现最好的版本是从正则化中删除对角项,并且旨在最小化滤波器之间的成对余弦相似性,但不限制它们的范数:

其中 1 表示一个矩阵,所有元素都设置为 1。通过上面的 Table1 中的 Hier. 代表直接截断,Ortho. 表示采用正则正交,可以看出来正则正交在性能上确实有所提升。

我认为 BigGAN 中的“截断技巧”很像 Glow中的退火技巧,BigGAN 通过控制采样的范围达到生成质量上的提高,Glow 是通过控制退火系数(也是控制采样范围)达到生成图像平滑性的保证。

3.模型稳定性的控制

1.对于 G 的控制:

在探索模型的稳定性上,文章在训练期间监测一系列权重、梯度和损失统计数据,以寻找可能预示训练崩溃开始的指标。实验发现每个权重矩阵的前三个奇异值 σ0,σ1,σ2 是最有用的,它们可以使用 Alrnoldi 迭代方法进行有效计算。

实验如下图 (a) 所示,对于奇异值 σ0,大多数 G 层具有良好的光谱规范,但有些层(通常是 G 中的第一层而非卷积)则表现不佳,光谱规范在整个训练过程中增长,在崩溃时爆炸。

为了解决 G 上的训练崩溃,通过适当调整奇异值 σ0 以抵消光谱爆炸的影响。首先,文章调整每个权重的顶部奇异值 σ0,朝向固定值或者朝向第二个奇异值的比例 r,即朝向 r⋅sg(σ1),其中 sg 是控制梯度的操作,适时停止。另外的方法是使用部分奇异值的分解来代替 σ0,在给定权重 W,它的第一个奇异值向量 μ0 和 ν0 以及固定的,将权重限制在:

其中固定的设置为或者 r⋅sg(σ1),上述整个操作就是为了将权重的第一个奇异值 σ0 控制住,放置突然性的爆炸。

实验观察到在进行权重限制的操作下,在有无光谱归一化的操作下,都在一定程度上防止了 σ0 或者的爆炸,但是即使在某些情况下它们可以一定程度上地改善网络性能,但没有任何组合可以防止训练崩溃(得到的结论就是崩溃无法避免)。

一顿操作后,文章得出了调节 G 可以改善模型的稳定性,但是无法确保一直稳定,从而文章转向对 D 的控制。

2.对于 D 的控制:

和 G 的切入点相同,文章依旧是考虑 D 网络的光谱,试图寻找额外的约束来寻求稳定的训练。如上图 3 中 (b) 所示,与 G 不同,可以看到光谱是有噪声的,但是整个过程是平稳增长在崩溃时不是一下爆炸而是跳跃一下。

文章假设这些噪声是由于对抗训练优化导致的,如果这种频谱噪声与不稳定性有因果关系,那么相对采用的反制是使用梯度惩罚,通过采用 R1 零中心梯度惩罚:

其中在 γ 为 10 的情况下,训练变得稳定并且改善了 G 和 D 中光谱的平滑度和有界性,但是性能严重降低,导致 IS 减少 45%。减少惩罚可以部分缓解这种恶化,但会导致频谱越来越不良。即使惩罚强度降低到 1(没有发生突然崩溃的最低强度),IS 减少了 20%。

使用正交正则化,DropOut 和 L2 的各种正则思想重复该实验,揭示了这些正则化策略的都有类似行为:对 D 的惩罚足够高,可以实现训练稳定性但是性能成本很高。

如果对 D 的控制惩罚力度大,确实可以实现训练的稳定,但是在图像生成性能上也是下降的,而且降的有点多,这种权衡就是很纠结的。

实验还发现 D 在训练期间的损失接近于零,但在崩溃时经历了急剧的向上跳跃,这种行为的一种可能解释是 D 过度拟合训练集,记忆训练样本而不是学习真实图像和生成图像之间的一些有意义的边界。

为了评估这一猜测,文章在 ImageNet 训练和验证集上评估判别器,并测量样本分类为真实或生成的百分比。虽然在训练集下精度始终高于 98%,但验证准确度在 50-55% 的范围内,这并不比随机猜测更好(无论正则化策略如何)。这证实了 D 确实记住了训练集,也符合 D 的角色:不断提炼训练数据并为 G 提供有用的学习信号。

模型稳定性不仅仅来自 G 或 D,而是来自他们通过对抗性训练过程的相互作用。虽然他们的不良调节症状可用于追踪和识别不稳定性,但确保合理的调节证明是训练所必需的,但不足以防止最终的训练崩溃。

可以通过约束 D 来强制执行稳定性,但这样做会导致性能上的巨大成本。使用现有技术,通过放松这种调节并允许在训练的后期阶段发生崩溃(人为把握训练实际),可以实现更好的最终性能,此时模型被充分训练以获得良好的结果。

3.BigGAN实验

BigGAN 实验主要是在 ImageNet 数据集下做评估,实验在 ImageNet ILSVRC 2012(大家都在用的 ImageNet 的数据集)上 128×128,256×256 和 512×512 分辨率评估模型。实验在定性上的效果简直让人折服,在定量上通过和最新的 SNGAN 和 SAGAN 在 IS 和 FID 做对比,也是碾压对方。

为了进一步说明 G 网络并非是记住训练集,在固定 z 下通过调节条件标签 c 做插值生成,通过下图的实验结果可以发现,整个插值过程是流畅的,也能说明 G 并非是记住训练集,而是真正做到了图像生成。

当然模型也有生成上不合理的图像,但是不像以前 GAN 一旦生成不合理的图像,往往是扭曲和透明化的图,BigGAN 训练不合理的图像也保留了一定的纹理和辨识度,确实可以算是很好的模型了。实验更是在自己的训练样本下训练,在 8500 类下 29 亿张图片训练,和 ImageNet 相似也是取的了很好的效果。

再来说一下实验环境,实验整体是在 SAGAN 基础上架构,训练采用 Google 的 TPU。一块 TPU 的性能可以赶得上十几甚至更多 GPU 的性能,庞大的训练参数也是让人害怕,至少我估计我的电脑是跑不动的了。

文章的另一大亮点是把实验的 NG 结果做了分析,把自己趟的坑和大家分享了,这个真是很良心有没有,我们截取其中一些坑分享一下:

  • 一味加深网络可能会妨碍生成的性能;
  • 共享类的思想在控制超参数上是很麻烦的,虽然可能会提高训练速度;
  • WeightNorm 替换 G 中的 BatchNorm 并没有达到好的效果;
  • 除了频谱规范化之外,尝试将 BatchNorm 添加到 D(包括类条件和无条件),但并未取的好的效果;
  • 在 G 或 D 或两者中使用 5 或 7 而不是 3 的滤波器大小,5 的滤波器可能会有些许提升,但是计算成本也上去了;
  • 尝试在 128×128 的 G 和 D 中改变卷积滤波器的扩张,但发现在任一网络中即使少量的扩张也会降低性能;
  • 尝试用 G 中的双线性上采样代替最近领近的上采样,但这降低了性能。

这篇论文的实验包括附录是相当充分的,可以看得出来是花了很长时间在模型训练和改进上的,DeepMind 作为 Google 旗下的 AI 团队展示了“壕气”,为这片论文表示深深的敬意。

最后分享一下 BigGAN 惊艳的生成效果:

总结

BigGAN 实现了 GAN 在 ImageNet 上的巨大飞跃,GAN 的潜力被开发到一个新的阶段,IS 或 FID 还能否进一步提升,再提升的话将是几乎接近真实的存在了。通过大 Batch,大参数,“截断技巧”和大规模 GAN 训练稳定性控制,实现了 BigGAN 的壮举。同时庞大的计算量也是让人害怕,但是随着硬件的发展,可能很快 AI 大计算会普及开,还是抱有很大的期待。

BigGAN(2019)相关推荐

  1. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...

  2. 全球人工智能战略与政策观察(2019)

    2019-11-19 22:44:50 人工智能是引领未来的前沿性.战略性技术,正在全面重塑传统行业发展模式.重构全创新版图和经济结构.近年来,各国政府及相关组织纷纷出台战略或政策,积极推动人工智能发 ...

  3. 《数字孪生体技术白皮书(2019)》(简版)全文

    来源:<数字孪生体实验室原创> 12月27日,数字孪生体实验室与安世亚太联合正式发布了<数字孪生体技术白皮书(2019)>. 白皮书的第一部分关注对数字孪生体的抽象和总结.无论 ...

  4. 中国电子信息工程科技发展十大趋势(2019)发布

    来源:新浪科技 17日,中国工程院信息与电子学部.中国信息与电子工程科技发展战略研究中心在中国工程院召开发布会,发布"中国电子信息工程科技发展十大趋势(2019)". 中国工程院副 ...

  5. 中国机器人产业发展报告(2019)正式发布!

    来源:世界机器人大会 2019年8月25日,<中国机器人产业发展报告(2019)>于2019世界机器人大会闭幕式上正式发布,该报告为工业和信息化部2019-2021年财政专项<我国机 ...

  6. 第四届大数据科学与工程国际会议(2019)

    欢迎参加第四届大数据科学与工程国际会议(2019) 会议介绍 大数据科学与工程国际会议已连续成功举办3届,每年都汇聚多位国内外院士.世界知名专家.业界领袖.技术精英等,分享全球范围内行业最热.争议最多 ...

  7. Java实训项目:GUI学生信息管理系统(2019)【下】

    Java实训项目:GUI学生信息管理系统(2019)[下] 本篇目录 六.实现步骤 13.应用程序类 14.窗口界面类(JFrame)

  8. Java实训项目:GUI学生信息管理系统(2019)【中】

    Java实训项目:GUI学生信息管理系统(2019)[中] 本篇目录 四.涉及知识点 1.Java基本语法 2.Java流程控制

  9. Java实训项目:GUI学生信息管理系统(2019)【上】

    Java实训项目:GUI学生信息管理系统(2019)[上] 本篇目录 零.实训概述 1.实训目的 2.项目简介

  10. “江山如此多娇” 瞰世界——第五届(2019)中国无人机影像大赛正式启动

    7月23日,由搜狐主办的"江山如此多娇"瞰世界-第五届(2019)中国无人机影像大赛正式启动.大赛面向全球无人机影像专业人士.爱好者和相关机构组织征集优秀作品,并邀请国内外航拍及视 ...

最新文章

  1. Python-爬取中国天气网天气并通过邮箱定时发送
  2. 全球 Top 10 高材生赴神策数据的交流访问之旅
  3. (12) Hibernate+EhCache配置二级缓存
  4. idea lombok插件安装_mac安装的软件和idea的插件推荐
  5. StringBuilder和Char[]在平台调用中的差异
  6. css中IE判断语句 if !IE
  7. matlab寻找闭合,MatLab求取多个闭合区域的轮廓、面积和bbox
  8. MTK 驱动开发(27)---TP 驱动分析
  9. win10虚拟内存怎么设置最好_想提高win10操作系统性能,设置合适的虚拟内存大小非常关键...
  10. [转]从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法
  11. JDK8各个历史版本下载方法
  12. 科技爱好者周刊:第 103 期
  13. 【java】几种跳出 for循环的方法
  14. Windows服务器双网卡绑定的方法(HP/Broadcom网卡)
  15. 瓜子二手车 翻页 csv
  16. matlab循环语句详解
  17. sqlite数据库自动生成db-journal后缀文件的解决方法
  18. html css备课,html+css+div测试题备课讲稿(17页)-原创力文档
  19. 金山携手PICC探索杀毒软件服务全新模式
  20. 物联网的四大支撑技术(简述总结)

热门文章

  1. 微信发朋友圈/评论/点赞/搜索 测试用例点
  2. 【Unity3D插件】AnyPortrait插件分享《(二)制作角色动画》
  3. NOPI导出excel
  4. 图像原始格式 YUV444 YUV422 YUV420 详细解析
  5. 【EduCoder实训答案】JSP入门
  6. USB转485/232
  7. maven 打包命令
  8. AT指令集超详细解析(内含EC20模块datasheet)
  9. UG模具设计从入门到精通
  10. Inno Setup 系列之自定义卸载文件名称的脚本