生成对抗网络(GAN)简介

2025 年 6 月 21 日 | 8 分钟阅读

在机器学习中,有多种方法可以预测在未见过的数据集上的输出。此外,深度学习和神经网络,作为机器学习的一部分,是如此强大的技术,它们能够从头开始生成新的人脸,这些人脸甚至不存在,但在训练数据的帮助下显得自然,而这得益于一项名为 GAN 或生成对抗网络的技术。生成对抗网络(GANs)是 **Ian J. Goodfellow** 于 2014 年开发的最受欢迎和最新的无监督机器学习创新之一。GAN 是一种算法机器学习框架,包含两个连接的神经网络,能够分析、捕获和复制数据集中的变化。此外,GAN 机器学习中的两个神经网络相互对抗,因此被称为对抗网络。它最常用于各种 ML 应用,如图像生成、视频生成和语音生成。在本主题中,我们将讨论生成式机器学习(GAN)、GAN 在机器学习中的应用、GAN 的工作原理、GAN 的组成部分、通过生成对抗网络(GANs)进行训练和预测的步骤、生成对抗网络面临的挑战、GAN 的类型等。那么,让我们从机器学习中生成对抗网络(GANs)的快速介绍开始。

什么是机器学习中的生成对抗网络(GANs)?

生成对抗网络或 GAN 被定义为一种生成建模技术,用于基于训练数据集生成新的数据集。新生成的数据集看起来与训练数据集相似。

GAN 主要包含两个神经网络,能够捕获、复制和分析数据集中的变化。这两个神经网络称为生成器和判别器,它们相互竞争。

“生成对抗网络”这个词由三个词组成,每个词都有其单独的含义,如下所示:

  • 生成式(Generative):用于学习一个生成模型,该模型直观地解释数据是如何生成的。
  • 对抗式(Adversarial):由于两个神经网络相互竞争或相互对抗,因此模型的训练是以对抗的方式进行的。
  • 网络(Networks):它使用深度神经网络来训练模型,因此称为网络。

为什么需要 GAN?

随着技术的发展,机器学习算法和神经网络可以通过在训练数据集中引入一些噪声来被欺骗,从而错误地分类数据。但是,随着机器学习的创新,正在开发各种技术来防止图像分类错误的发生。因此,GAN 被发明出来是为了生成新的数据集,这些数据集看起来像训练数据集,从而可以开始可视化新的模式,就像训练数据一样。

GAN 的应用

GAN 是机器学习中一种非常流行的方法,在现实世界中有各种应用。以下是一些最著名的生成对抗网络(GANs)的应用,如下所示:

  • 时尚、艺术和广告
  • 科学
  • 电子游戏
  • 音频合成
  • 迁移学习

除了这些应用之外,GAN 在机器学习中还有许多杂项应用,如下所示:

  • 它用于通过检测青光眼图像来诊断部分或完全视力丧失。
  • 它用于通过生成逼真的图像来可视化室内设计、工业设计、鞋子、包和服装。
  • 它用于从图像重建物体的 3D 模型,并对视频中的运动模式进行建模。
  • 它用于开发年龄人脸照片,根据年龄确定个人的面部。
  • 它用于去除焊接图像中的噪声,通过去除动态焊池表面上的随机光照反射。
  • 它被用于数据增强。
  • 它用于在听到声音后重建个人的面部。这被称为GAN Speech2Face 技术。
  • 它用于可视化气候变化对特定位置的影响。
  • 它用于通过创建动漫角色来开发智能游戏和动画。
  • GAN 生成文本、文章、歌曲、诗歌等。

随着机器学习中 GAN 的研究正处于巅峰状态,未来我们将看到 GAN 在生成高质量视频、音频和图像方面的应用。此外,微软已经与 OpenAI 合作开发 GPT,并探索 GAN 的下一级别能力。

生成对抗网络(GANs)的组成部分

生成对抗网络主要由两个部分组成,即生成器判别器。顾名思义,生成器根据训练数据集生成虚假的未知数据输出,并欺骗判别器,使其将这些虚假数据误认为是准确的。此外,判别器充当警察,用于区分训练数据和生成数据,识别生成器创建的样本中的异常,并将它们分类为假或真。然而,整个过程会持续进行,直到生成器获胜,并最终在虚假数据上愚弄判别器。GAN 的组成部分如下:

Introduction to Generative Adversarial Network (GAN)
  • 判别器(Discriminator):它被用作监督机器学习方法,其中指定一个简单的分类器来区分真实和虚假数据。尽管如此,它是在实际训练数据集上训练的,并向生成器提供反馈。
  • 生成器(Generator):与判别器不同,生成器是一种无监督机器学习方法,用于根据实际训练数据集生成虚假样本。它也是一个具有隐藏层、激活函数和损失函数的神经网络。
    此外,生成器主要专注于根据判别器提供的反馈生成虚假数据,并愚弄判别器,使其无法区分实际输出和生成器生成的输出。
Introduction to Generative Adversarial Network (GAN)

这个过程会一直持续到生成器能够愚弄判别器为止,一旦实现这一点,就创建了一个泛化的 GAN 模型。

生成对抗网络(GANs)的训练

我们已经讨论了生成对抗网络(GANs)的基本概念及其组成部分。现在是时候继续学习 GAN 在机器学习中的训练和预测了。

以下是单独训练 GAN 组件的几个重要步骤。它们如下:

步骤 1:识别实际问题:这在处理实时项目时至关重要。如果你能识别出实际问题,你才能有效地解决它。在 GAN 中,无论你的目标是什么,你都需要定义它,这意味着你想创建什么,例如音频、诗歌、文本或图像,这是一种类型的问题。

步骤 2:选择合适的 GAN 架构:虽然存在许多 GAN 架构,例如 DCGAN、Conditional GAN、Unconditional GAN、Least Square GAN、Auxilary Classifier GAN、Dual Video Discriminator、SRGAN、Cycle GAN 和 Info GAN,但我们需要定义在我们的项目中使用的 GAN 架构类型。

步骤 3:对判别器进行真实数据训练

判别器始终使用真实数据进行训练,它只包含前向传播机制,并且在 n 个 epoch 中不遵循反向传播。此外,它只提供没有噪声或虚假内容的实际数据。此外,对于虚假图像,判别器使用生成器创建的实例作为负输出。

在判别器训练过程中会发生一些操作。

  • 它在此过程中区分真实和虚假数据。
  • 它提高了模型的整体性能,并在模型未能区分两种数据时对其进行惩罚。
  • 判别器损失是判别器训练过程中一个重要部分,有助于更新判别器的权重。

步骤 4:对生成器进行训练:生成器的训练过程始于引入一些虚假输入。最初,我们向生成器提供一些虚假输入,但后来它通过添加一些随机噪声来生成一些虚假输出。此外,每当生成器得到训练时,判别器都保持非活动状态,而当判别器得到训练时,生成器保持非活动状态。在提供使用任何随机噪声作为输入的生成器训练时,其目标是将噪声转换为有意义的数据以提供有意义的输出,这个过程需要时间并在许多 epoch 中运行。

以下是通过虚假输入训练生成器的几个简单步骤:

  • 提供虚假输入或噪声,并获取随机噪声以根据噪声样本生成输出。
  • 使用判别器预测生成器输出是真实还是虚假。
  • 计算判别器损失并执行反向传播。
  • 计算梯度以更新生成器的权重。

步骤 5:对判别器进行虚假输入训练:在此步骤中,我们将样本输入判别器,以预测数据是真实还是虚假。此外,将判别器收到的反馈再次提供给生成器,以便对样本进行修改。

GAN 如何工作?

如上所述,GAN 包含两个神经网络,其中一个称为生成器 G(x),另一个称为判别器 D(x)。顾名思义,它们都以对抗的方式工作。生成器始终尝试生成与训练数据相似的虚假数据来欺骗判别器,即它生成新的数据实例。而判别器的目标是从实际数据中识别出虚假数据,即它评估数据的真实性。两个神经网络同时工作,以从图像、音频或视频文件等复杂数据中学习。

假设我们试图生成类似于 MNIST 数据集的数字手写体,这些数字出现在现实世界中;现在,判别器的目标是将 MNIST 数据集的实例识别为真实的。同时,生成器创建新的合成图像并将其传递给判别器。生成器希望这些图像被识别为真实的,即使它们是虚假的。它尽可能多地生成手写数字来愚弄判别器。判别器的目标是将来自生成器的图像识别为虚假。

GAN 的工作可以总结为以下步骤:

  • 首先,生成器接收任何随机数并生成图像。
  • 生成的图像被输入判别器,而真实的图像取自实际数据集。
  • 判别器包含真实和虚假图像,现在它旨在通过识别真实和虚假图像来预测标签。输出是介于 0 和 1 之间的概率,其中 0 表示预测为虚假,1 表示真实。GAN 的工作过程如下图所示。
Introduction to Generative Adversarial Network (GAN)

不同类型的生成对抗网络(GAN)

  1. DCGAN:DCGAN 或深度卷积 GAN 是 GAN 最著名的实现之一。它使用卷积神经网络(ConvNets)而不是多层感知器。内容使用卷积步长,并且在没有最大池化的情况下构建。此外,ConvNets 中的层不是完全连接的。
  2. 条件 GAN 和无条件 GAN:它被定义为一种具有额外参数的深度学习神经网络。在条件 GAN 和无条件 GAN 中,标签的存储方式可以轻松分类判别器的输入。
  3. 最小二乘 GAN:它是一种特殊的生成对抗网络,它使用最小二乘损失函数作为判别器。此外,当最小二乘 GAN 的目标函数最小化时,皮尔逊散度也会自动最小化。
  4. 辅助分类器 GAN:ACGAN 或辅助分类器 GAN 是 CGAN 的类似但改进的版本。它的判别器不仅可以分类图像为真实或虚假,还可以提供有关输入图像来源的信息。
  5. 双视频判别器 GAN:这是对视频生成最有帮助的 GAN 类型,建立在 BigGAN 架构之上。此外,它使用空间和时间判别器来生成视频。
  6. SRGAN:超分辨率或 SRGAN 也称为域变换,主要用于将低分辨率图像转换为高分辨率图像。
  7. Cycle GAN:它用于执行图像翻译。例如,我们可以在马图像数据集上对其进行训练,然后将其转换为斑马图像。
  8. Info GAN 是用于无监督机器学习的最新和最先进的生成对抗网络版本。