GAN 的生成器部分通过纳入来自判别器的反馈来学习创建虚假数据。它会学习让判别器将其输出归类为真实。
与鉴别器训练相比,生成器训练需要生成器与鉴别器之间更紧密的集成。GAN 中用于训练生成器的部分包括:
- 随机输入
- 生成器网络,用于将随机输入转换为数据实例
- 判别网络,用于对生成的数据进行分类
- 判别器输出
- 生成器损失,用于惩罚未能欺骗分类器的生成器
图 1:生成器训练中的反向传播。
随机输入
神经网络需要某种形式的输入。通常,我们会输入要执行某项操作的数据,例如要分类或预测的实例。但是,我们要使用什么作为输入来让网络输出全新的数据实例?
在最基本的形式中,GAN 会将随机噪声作为输入。然后,生成器会将此噪声转换为有意义的输出。通过引入噪声,我们可以让 GAN 从目标分布中的不同位置进行抽样,从而生成各种各样的数据。
实验表明,噪声的分布不太重要,因此我们可以选择易于抽样的内容,例如均匀分布。为方便起见,用于从中抽样噪声的空间的维度通常小于输出空间的维度。
使用判别器训练生成器
为了训练神经网络,我们会更改网络的权重,以减少其输出的误差或损失。不过,在我们的 GAN 中,生成器与我们尝试影响的损失函数并非直接相关。生成器会馈送到判别器网络,而判别器会生成我们尝试影响的输出。如果生成器生成的样本被判别器网络归类为假,生成器损失会对生成器进行惩罚。
反向传播中必须包含这部分额外的网络。反向传播通过计算权重对输出的影响(如果您更改权重,输出会如何变化),以正确的方向调整每个权重。但是,生成器权重的效果取决于它馈入的判别器权重的效果。因此,反向传播从输出开始,并通过判别器流回生成器。
同时,我们也不希望鉴别器在生成器训练期间发生变化。尝试命中移动目标会使生成器的难题变得更加棘手。
因此,我们将按照以下步骤训练生成器:
- 采样随机噪声。
- 从采样的随机噪声生成生成器输出。
- 获取生成器输出的判别器“真实”或“虚假”分类。
- 计算鉴别器分类的损失。
- 通过鉴别器和生成器进行反向传播以获取梯度。
- 使用梯度仅更改生成器权重。
这是生成器训练的一个迭代。在下一部分中,我们将了解如何同时训练生成器和鉴别器。