生成器可以用一个新型分布或目标(真实数据)分布的样本来「愚弄」生成器。直到鉴别器学会那个新分布以前,新分布的生成结果都会对鉴别器进行「欺骗」。生成器愚弄鉴别器的更有效的方式则是通过目标分布(target distribution)来生成结果。
要想使这两种方式进化,通常最简单的方法就是生成一个全新的输出,也就是当我们用相互对抗的方式来训练当前生成器和鉴别器的时候所观察到的结果。这种无效序列的简单情况如图 4 左手边所示。生成器和鉴别器分布分别以黄色和蓝色区域来表示。
通过引入历史信息,即从先前生成结果中存储的生成器样本(图 4 右手边),鉴别器就不太可能会忘记它已经学习过的部分信息了。更强大的鉴别器帮助生成器更快地靠近目标分布。然而实际上,一个简单且随机的替换缓冲器(replacement buffer)可以从先前生成器的分布中采集足够的多样性。我们的观念是,在整个训练过程当中的任意时间,通过改善器网络生成的任何改善的图像实际上对鉴别器来说都是一个「假」的图像。我们发现,使用从历史信息缓冲器采集到的样本作为一半,以及把当前生成器的输出作为另一半,来给 D 建造一个 mini-batch,我们就可以实现对训练的改进。
图 4. 使用图像历史信息提升鉴别器的直觉例证。
图 5. 带有 D 的历史信息的 mini-batch 例证。每个 mini-batch 包括来自生成器当前迭代的图像以及先前假图像的缓冲器。
训练过程如何展开?
我们首先训练改善器网络的自正则化损失函数,在改善器网络开始输出输入合成图像的模糊版本后引入对抗性损失函数。图 6 是改善器网络在每个训练步骤的输出结果。随着训练过程的进行,改善器网络输出的模糊图像越来越真实。图 7 是鉴别器损失函数生成器损失函数在不同训练迭代阶段的变化趋势。需要注意的是,一开始鉴别器损失较低,这说明该网络可以轻松区分真实图像和改善图像。随着训练过程的进行,鉴别器损失逐渐上升,生成器损失逐渐下降,改善器网络生成的图像也更加真实。
图 6. 改善器网络在训练过程中的输出结果。最初输出的图像比较模糊,随后改善器网络学习对真实图像中的细节进行建模。
图 7. 训练过程中的鉴别器损失和生成器损失
自正则化 L1 损失有限制性吗?
如果合成图像和真实图像在分布中存在显著差别,那么即使是像素级 L1 的不同也会带来限制。在这种情况下,我们可以在特征空间上使用自正则项,用替代性特征变换(alternative feature transform)来替代标识映射。这些是手动调整的特征,或者习得的特征,如 VGGnet 的中层。如图 8 所示,RGB 通道可以生成真实的图像颜色。
图 8. 在特征空间中使用自正则化损失的实例。
生成器会改变标签吗?