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