PROGRESSIVE GROWING OF GANs for IMPROVED QUALITY, STABILITY AND VARIATION

NVIDIA深度视觉实验室提出的一种训练GAN的方法。

what is GAN

GAN包含两个网络:Generator和Discriminator(在WGAN中称作Critic)。G由一个laten code(或噪声)生成一个样本,比如图片。而生成的样本应该与真实的样本分布相同或相似。D用来判断这种“分布是否相似”。训练完成的理想状态是G生成的样本与真实样本一样,D不能判断生成的到底是真实的还是假的。而训练过程可以按梯度来指导G与D的优化方向。
一般情况,得到G是我们的目标;D只是辅助的网络,训练结束就没用了。

GAN训练的问题

–如果两个分布没有有效的交叉(测度),那么此时的梯度很可能会随机支出网络的优化方向,使得训练不收敛。GAN最早使用的JS距离,就有这样的问题。后来有了很多改进,Waserstein距离就是一种。

–生成高分辨率的图像也有一些问题:
1.高分辨率图像特征丰富,很容易判断图像的真假。这放大了梯度问题,使得梯度不能指示正确的优化方向(所以训练GAN的trick之一:训练开始时不要把D训练的太好)。
2.由于内存的限制,生成高分辨率的图像,往往会降低batch_size,使训练不稳定。(想想SGD与batch-SGD的区别)。

–GAN存在一个问题,就是生成样本的质量(quality)与多样性(variation)存在一点互斥关系,追求较高的质量可能会使图像的多样性下降。

该论文的贡献

  1. 生成高分辨图像的方法,模型训练方法。
  2. 改进网络初始化方法,使不同的layers能平衡的学习。
  3. 作者观察到,因D网络训练的过好,梯度过大,而出现mode collapse。提出一种机制,阻止G(按过大的梯度)也过度优化。
  4. 提出一种增加G生成样本多向性的方法。
  5. 提出一种评估模型质量和多样性的方法。

细节介绍

生成高分辨率图像

提出的方法并不是一次就生成较高的分辨率图像,而是由低分辨率开始,逐步提高。比如,开始时,G只有1层,生成4x4的图像;相应的D也只有1层,判断4x4的图像是real or fake(低分辨的real样本可由普通的较高分辨率图像降采样得到)。先把这两个简单网络训练“差不多”了,然后同时提高G与D的scale,比如G加一层,由4x4的图像生成8x8的图像;D做相应变化。再次训练差不多后,然后再增加网络的scale,如图:
PROGRESSIVE GROWING OF GANs for IMPROVED QUALITY, STABILITY AND VARIATION
作者的意思,这样渐进式的训练,可使网络稳步提升。训练前期,低分辨的图像捕捉数据的轮廓信息;而逐步添加的网络来增加图像的细节信息。
已经得到训练的层在之后的也同样会被再训练学习。那有没有这样一个疑问,应该以什么样的方式利用这些初步训练的层呢。为了稳定而不是突变,作者设计了一个巧妙的结构:
PROGRESSIVE GROWING OF GANs for IMPROVED QUALITY, STABILITY AND VARIATION
加入(a)已经初步训练了,在网络扩展一层的同时,保留原结构,就是(b)中会有两分支。为了循序渐进,给这两个分支添加系数alpha,是一个变化的值,从0增加到1。以G为例子,显然alpha如果是0,那就相当于新增加的分支不起作用,以此来完成过度。在G的末端,会把两个分支的图像加和,为了尺寸的兼容,把原小尺寸的图像直接用差值法增大一倍,这就是图中的2x 。D类似。

提高多样性

局限于训练策略,GAN趋向于只学习到训练数据的部分多样性信息。我们可以人工的在网络中加入一些信息(很容易想到用方差或标准差)增加多样性。为简化计算,文中直接计算minibatch 中feature 的标准差的均值,该scalar经扩展为feature map大小后直接作为新feature map的一个通道。我们把这层叫做Minibatch stddev层。该层可以加到D中的任意位置,但是作者只加到了D的末端。下图是网络的最终结构(D与G对称):
PROGRESSIVE GROWING OF GANs for IMPROVED QUALITY, STABILITY AND VARIATION

训练稳定性

问题来源:信号幅值过大,导致模型参数也过大,D与G不健康的竞争。
解决方法一般是BN。但BN最先是为了估计样本漂移。而GAN这里需要的只是抑制信号的幅值,所以作者提出用pixel-normalization:
PROGRESSIVE GROWING OF GANs for IMPROVED QUALITY, STABILITY AND VARIATION

操作对象是某层的feature maps,其通道数是N。x,y表示像素点在map上的坐标。a与b分别是原像素值与归一化后的像素值。ξ是防止除数为0的一个小变量。

总结

总的来说,这篇论文提出了一些改进GAN训练的方法,公式很少。作者实验,生成的图片质量非常高:
PROGRESSIVE GROWING OF GANs for IMPROVED QUALITY, STABILITY AND VARIATION