PG-GAN
GAN分为两类,一类是无条件下的生成;另一类自然是基于条件信息的生成。
比如以下GAN就是无条件下的样本生成:
[1]DCGAN(https://arxiv.org/abs/1511.06434)
[2]WGAN(https://arxiv.org/abs/1701.07875)
[3]LS-GAN(https://arxiv.org/abs/1611.04076)
[4]WGAN-GP(https://arxiv.org/abs/1704.00028)
而PG-GAN是属于第二类,也就是基于条件信息的生成。一般来说,把无条件的GAN加上条件会提高样本的质量。
PG-GAN的过程化训练
对PG-GAN的一句话总结就是: 过程化的生成方式使得生成高质量,高分辨率的样本成为了可能
过程化的训练方式也就是不采用一步到位,而是先试着生成低分辨率或者低质量的图像,然后不断地增加分辨率或者细节。我将过程化的训练方式分为两种: 一种是不改变网络的;一种是需要改变的。
不改变网络:意味着网络结构不变,所以肯定是建立从latent code 到1024的映射,但是训练数据是从低质量的样本开始,然后不断地增加细节,当然我们需要把训练数据先下采样都要resize到 1024。PG-GAN是属于第二种情况,也就是网络结构先从 4x4的生成,然后不断地给D和G添加层,然后最终输出1024x1024的。
PG-GAN的trick的作用
(1) Transition process.
当加倍分辨率训练的时候,作者提出了一个平滑的转换过程,增加了一个fade-in阶段。这个阶段对稳定训练具有最重要的意义。
Figure: 增加的阶段使得分辨率的提高平滑过渡
这个αα的值是从 0到1 的变化。当$α$为0的时候,相当于Figure ($a$),当$α$为1的时候,相当于Figure(c)。所以,在转换过程中,生成样本的像素,是从 16x16到 32x32转换的。同理,作者对真实样本也做了类似的平滑过渡,也就是,在这个阶段的某个训练batch。真实样本是:
(2) Minibatch discrimination 的改进
对于GAN的生成,样本的多样性也是一个很重要的指标。Improved GAN[6]提出的Inception-scores其中之一就是测量的生成样本的多样性。如果生成的样本基本相似,GAN被认为遭受到Model collapse 问题。GoodFellow 对 mode Collapse是这样定义的:
Mode collapse is a problem that occurs when the generator learns to map several different input z values to the same point. 按照Goodfellow的说法,mode collapse或多或少都会存在,即使生成整体上有差异,但是局部纹理或者颜色没啥变化的时候,GAN可以认为是遭受到轻微的Mode collapse问题。
Improved GAN 论文认为当GAN 塌陷到single mode的时候,D的梯度应该是都有相近的方向。本身D的判断模型本身并没有任何约束去告诉G生成不相似的样本。相反,当G遭受mode collapse问题时候,D可能认为样本是更加真实的。
解决方法:判别器D本身是测量生成样本是真实样本的可能性,如果可以把衡量多样性的度量加到判别器中某层去影响判别器的判别,那么应该就可以使得G能够得到更多样化的梯度方向。
(3) WGAN的使用以及保持G和D capacity 一致的重要性
WGAN 可以作为一个trick 用在PG-GAN来保证训练的稳定。WGAN-GP是WGAN的一个改进的版本,更适合使用。一般情况下,我们使用的WGAN-GP 作为model的GAN loss。原始的WGAN-GP训练比较慢的一个原因是 先训练 D多次 (一般为5次,也就是n=5) 保证拟合Wasserstein 距离,再去训练G。当然PG-GAN的设置 n=1,也就是交替训练D和G。这样设定也是有理由了。我们知道GAN的训练不稳定,一方面由于G和D capacity 有太大的差异。在学习率相同的情况下,G或者D一方太强都会造成model训练不出来。所以为了保证G和D的capacity一致,PG-GAN设置 n=1的同时,保证 G和D的训练参数数量一直基本相同。
(4)其他trick
- PG-GAN移除了deconv 网络,改用了conv + upsample。https://distill.pub/2016/deconv-checkerboard/ 提到了deconv会让生成模型遭受checkerboard效应。
- 非线性到线性: PG-GAN的G网络移除了tanh函数。
- 移除到各种BN层:
关于原因,Improved GAN的原话解释: it causes the output of a neural network for an input example x to be highly dependent on several other inputs in the same minibatch. 毕竟BN是基于整个minibatch计算的均值和方差,然后归一化的。所以,正因为此,在风格转化的应用,相关论文使用Instance normalization(IN)代替了BN。PG-GAN的解释是: BN本身是为了移除covariate shift 问题,但是他们在GAN中并没有发现这个问题。
PG-GAN没有BN,IN。但是PG-GAN提出了Pixel Norm去约束由于G和D不健康的竞争造成的信号范围越界的问题,而且提出了一个基于He’s init 的动态的初始化方式来平衡学习。