GAN 结构概览

生成对抗网络 (GAN) 包含两个部分:

  • 生成器学习生成合理的数据。生成的实例会成为判别器的负性训练示例。
  • 判别器会学习区分生成器的虚假数据与真实数据。判别器通过生成可观测的结果来惩罚生成器。

在开始训练时,生成器会生成明显的虚假数据,而判别器会快速学会辨别数据是虚假的:

其中三列分别标有“Generated Data”、“Discriminator”和“Real Data”。在“Generated Data”下方,蓝色矩形包含一个波浪形和一个圆形。该矩形是发电机的第一个尝试,那就是尝试绘制一元钱币。在“真实的数据”下方,您可以看到一张真实的十美元帐单的图片。“判别器”下方是“FAKE”和“REAL”字样。{0}{/1}一个箭头从“FAKE”一词指向“Generated Data”下的图片。另一个箭头从单词“RealAL”指向“Real Data”下的图片。

随着训练的进行,生成器越来越接近能够分辨判别器的输出:

此图片在上一张图片的“生成数据”、“判别器”和“实际数据”标题下添加了一个新行。在“Generated Data”(生成的数据)下方,有一个绿色矩形,左上角的数字 10 和一幅简单的面部绘图。在“真实的数据”下方,显示了一张 100 美元的真实账单。Discriminator 下方是 Fake 一词,一个箭头指向“Generated Data”下的图片,而一个箭头指向指向“Real Data”下的图片。

最后,如果生成器训练的进展顺利,判别器在区分真实和虚假方面会变得更加糟糕。它开始将虚假数据分类为真实数据,其准确性会降低。

此图片在前一张图片中的“生成数据”、“判别器”和“实际数据”标题下添加了一个新行。在“生成的数据”下方,有一张金额为二十美元的账单的图片。“真实数据”下方显示了一张 20 美元的账单。Discriminator 下方是“Real”一词,一个箭头指向“Generated Data”下的图片,一个箭头指向“Real Data”下的图片。

整个系统的图片如下:

生成对抗网络的示意图。该图的中心是一个标有“判别器”的方框。两个分支从左侧流入此框中。上分支从图表左上侧开始,有一个标有“真实图像”的圆柱体。一个箭头从该圆柱体指向另一个标有“取样”的盒子。一个标有“样本”的箭头指向了“判别器”方框。底部的分支会进入“判别器”方框,并以标有“随机输入”的方框开头。{0}{/1}一个箭头从 &Random 方框指向标有 'Generator' 的方框。一个箭头从 Generator 方框指向第二个 Sample 方框。一个箭头从“样本”框指向“判别器”框。在判别器框的右侧,有一个箭头指向一个由绿色圆圈和红色圆圈组成的框。字词“真”在框上方以绿色文字显示,而“错”字在框下方显示为红色。有两个箭头从此方框指向图示右侧的两个方框。一个箭头指向一个标有“判别器丢失”的方框。另一个箭头则指向标有“正在生成生成器丢失内容”的方框。

生成器和判别器都是神经网络。生成器输出直接连接到判别器输入。通过反向传播,判别器的分类提供了一个信号,供生成器用于更新其权重。

让我们更详细地介绍此系统的各个部分。