生成对抗网络(GANs)

生成对抗网络(GANs)是一种用于生成合成图像的深度神经网络。该体系结构包括两个深层神经网络,一个生成器和一个鉴别器,它们相互对抗(因此,“对抗”)。生成器生成新的数据实例,而鉴别器评估数据的真实性,并决定每个数据实例从训练数据集中是“真实的”,还是从生成器中是“虚假的”。

生成器和鉴别器一起接受训练,以便彼此对抗,直到生成器能够创建鉴别器不再确定为假的真实合成数据。训练成功后,生成器产生的数据可以用来创建新的合成数据,作为其他深度神经网络的潜在输入。

GANs是多功能的,因为它们可以学习生成任何数据类型的新实例,例如面部合成图像、某种风格的新歌或特定类型的文本。

培训GAN

以创建货币合成图像为例,让我们回顾一下GAN架构的特定部分和功能。

  1. 噪音被送入发电机。由于生成器还没有经过训练,所以在开始时输出看起来像噪声。
gna-discovery-page-fig1
  1. 训练数据和生成器的输出被发送到鉴别器,鉴别器正在并行训练以识别真实/假图像。鉴别器在开始时的输出不是很准确,因为网络的这一部分也在接受训练,精度将随着时间的推移而提高。
gna-discovery-page-fig2
  1. 反馈:鉴别器的输出可以反馈给生成器和鉴别器,生成器和鉴别器可以使用这些信息更新参数并尝试提高精度。
gna-discovery-page-fig3

当显示来自真实数据集的实例时,鉴别器的目标是识别那些真实的图像。与此同时,生成器正在创建新的合成图像,并将这些图像传递给鉴别器。它这样做是希望它们也被认为是真实的,即使它们是假的。生成器的目标是生成可通过的图像:在不被捕捉的情况下撒谎。鉴别器的目标是将来自生成器的图像识别为假图像。

MATLAB®而且深度学习工具箱™让你使用自动区分构建GANs网络架构,自定义训练循环,以及共享权重。

生成对抗网络的应用

笔迹代:与图像示例一样,GANs用于创建合成数据。这可以用来补充需要更多数据示例的较小数据集,以训练精确的深度学习模型。一个例子是笔迹检测:为了训练一个深度神经网络的笔迹,需要成千上万的训练数据样本,手动收集这些数据可能需要大量的时间。

使用GANs生成合成笔迹。

使用GANs生成合成笔迹。

场景一代条件GAN是一种利用标签的特定类型的GAN,而原始GAN不假设标签会出现。条件GANs可用于场景生成等应用,其中信息必须有一定的组织。以自动驾驶场景生成为例。道路和人行道必须位于建筑物和天空以下。为本例创建的合成图像如果不符合道路位置,将立即被确定为假图像,无法在自动驾驶应用程序中使用。

使用条件gan的图像到图像转换(pix2pix)。

使用条件gan的图像到图像转换(pix2pix)。

音频和语音应用: GANs还用于文本到语音合成、语音转换和语音增强等应用。与传统的音频和语音实现相比,GANs具有显著的优势,因为它们可以生成新的样本,而不是简单地增强现有的信号。GANs用于声音合成的一个例子是创建合成版本的鼓声:训练生成对抗网络(GAN)的声音合成

注:GANs在生成用于许多应用的新合成数据方面功能强大,但由于可能发生许多故障模式,通常难以获得准确的结果。MATLAB让你监控GAN培训进度,识别常见故障模式