生成工具

GAN 的生成器部分通过吸收来自判别器的反馈来学习创建虚假数据。它会学习使判别器将其输出归类为真实值。

生成器训练需要将生成器与判别器之间的集成比判别器训练所需的更紧密。GAN 用于训练生成器的部分包括:

  • 随机输入
  • 生成器网络,可以将随机输入转换为数据实例
  • 判别器网络,用于对生成的数据进行分类
  • 判别器输出
  • 生成器损失,这会对未能识别辨识器的生成器造成惩罚

生成对抗网络的示意图。该图的中心是一个标有“判别器”的方框。两个分支从左侧流入此框中。上分支从图表左上角开始,有一个标有“真实图像”的方框。一个箭头从该圆柱体指向另一个标有“取样”的盒子。一个标有“样本”的箭头指向了“判别器”方框。底部的分支会进入“判别器”方框,并以标有“随机输入”的方框开头。{0}{/1}一个箭头从 &Random 方框指向标有 'Generator' 的方框。一个箭头从 Generator 方框指向第二个 Sample 方框。一个箭头从“样本”框指向“判别器”框。在“判别器”框的右侧,两个箭头指向图的右侧两个方框。一个箭头指向一个标有“判别器丢失”的方框。另一个箭头则指向标有“正在生成生成器丢失内容”的方框。一个标有向左箭头和“反向传播”字样的黄色框在“随机输入”方框、“生成器”方框、底部方框、底部方框中分别标有“正方形”标识和方框;同时“正方形”方框与正方形指示框“正方形”

图 1:生成器训练中的反向传播。

随机输入

神经网络需要某种形式的输入。通常,我们输入想要对其执行操作的数据,例如我们想要分类或预测的实例。但是,对于输出全新数据实例的网络,我们会将其用作输入吗?

GAN 最基本的形式是将随机噪声作为输入。然后,该生成器会将这些噪声转换为有意义的输出。通过引入噪声,我们可以让 GAN 生成各种各样的数据,并从目标分布中的不同位置进行采样。

实验表明噪声的分布无关紧要,因此我们可以选择容易采样的内容,例如均匀分布。为方便起见,噪声采样空间的尺寸通常小于输出空间的维度。

使用判别器训练生成器

为了训练神经网络,我们更改了网络的权重,以减少其输出的错误或损失。但是,在我们的 GAN 中,生成器没有与我们尝试影响的损失直接关联。生成器向判别器网络馈送数据,而判别器会生成我们试图影响的输出。由于生成判别器网络归类为虚假样本的生成器会降低生成器,

这个额外的网络块必须包含在反向传播中。反向传播算法通过计算权重对输出的影响(如果更改了权重,输出将如何变化)来向正确的方向调整每个权重。但生成器权重的影响取决于馈送的判别器权重的影响。因此,反向传播从输出开始,通过判别器流回生成器。

同时,我们不希望判别器在生成器训练期间发生变化。尝试达到移动目标会让生成器更加困难。

因此,我们会按照以下程序训练生成器:

  1. 随机噪声。
  2. 根据采样随机噪声生成生成器输出。
  3. 获取生成器输出的判别器“实”或“假”分类。
  4. 计算判别器分类的损失。
  5. 通过判别器和生成器进行反向传播,获得梯度。
  6. 使用渐变可以仅更改生成器权重。

这是生成器训练的一个迭代。在下一部分中,我们将了解如何同时处理生成器和判别器的训练。