判别器

GAN 中的判别器只是一个分类器。它会尝试区分真实数据和生成器创建的数据。它可以使用适合其分类的数据类型的网络架构。

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

图 1:判别器训练中的反向传播。

判别器训练数据

判别器的训练数据来自两个来源:

  • 真实数据实例,例如真实人物照片。判别器会在训练期间将这些实例用作正例。
  • 此生成器生成的虚假数据实例。判别器会在训练期间将这些实例用作负例。

在图 1 中,两个“样本”框表示流向判别器的两个数据源。在判别器训练期间,生成器不会进行训练。它的权重保持不变,同时会生成判别器进行训练的样本。

训练判别器

判别器连接到两个损失函数。在判别器训练期间,判别器会忽略生成器损失,而仅使用判别器损失。我们在生成器训练期间使用生成器损失,如下一部分所述。

在判别器训练期间:

  1. 判别器对真实数据和来自生成器的虚假数据进行分类。
  2. 判别器损失会使判别器因真实实例被误分类为虚假或虚假实例而受到惩罚。
  3. 判别器通过判别器网络通过判别器损失函数进行反向传播来更新其权重。

在下一部分中,我们将了解生成器损失因与判别器连接的原因。