训练GAN的一些Tips
用以解决GAN出现的模型坍塌和初始化方面的问题
1.特征匹配
GAN不稳定的特点可以通过给生成器一个新的训练目标来解决,这种方式可以避免生成器过度拟合当前的判别器。通过使用判别器中间层的特征来匹配图像的真伪,并将其作为监督信号来训练生成器。在这种方式下,训练产生的生成器的生成数据会尽可能匹配真实数据的统计特性以及判别器的中间层的预期特征值。这样,在判别器的训练过程中,我们让判别器去寻找那些最能很好滴判别真实数据的特征而不是由当前模型生成数据的特征。
2.小批量
通过给判别器加入一些额外的特征来解决模型坍塌问题,判别器考虑的是一小批样本而不是单独样本,如果这些特征可以表示样本之间的距离,很容易检测是否模型已经坍塌,而不是鼓励在发生坍塌的情况下每个生成器的样本继续向单个最大似然点靠近。小批量样本训练整体上更接近实际,而且可以保证不同样本在空间上有合适的距离。
3.历史平均正则化
加入一个惩罚项惩罚那些和历史平均权重相差过大的权重值。
4.单侧标签样本平滑
假如0是真实的正样本,1是伪造的负样本,我们可以用一些更鲁棒的标签(平滑),比如0和1。
5.输入规范化
图像或文本的值规范化到-1和1之间,使用tanh激活函数作为生成器最后一层。
6.Batch-Normalization
防止过拟合。
7.避免梯度消失
使用LeakyRelu函数和Max Pooling模块。
8.优化器和噪声
生成器使用Adam优化器,判别器使用SGD优化器,并且通过在生成器的不同层中去除输入作为噪声的来源。