GANs 工作原理?
生成对抗网络(GANs)如何工作?
Section titled “生成对抗网络(GANs)如何工作?”生成对抗网络(Generative Adversarial Networks,GANs)代表了一种强大且创新的深度学习领域生成建模方法。它们被设计为一个由两个相互竞争的神经网络组成的系统,它们协同学习生成与原始训练数据集非常相似的新的复杂数据样本。
GANs 通常使用深度神经网络架构,对于图像相关任务经常包含卷积神经网络(Convolutional Neural Networks,CNNs)。与一些可能直接建模概率分布的其他生成模型不同,GANs 通过一个对抗过程学习生成数据。区分 GANs 与其他类型的生成模型非常重要;例如,像 ChatGPT 这样的大型语言模型(Large Language Models,LLMs)通常基于 Transformer 架构和不同的训练范式,而不是 GANs。本章将重点介绍 GANs 及其运作机制。
什么是生成对抗网络?
Section titled “什么是生成对抗网络?”生成对抗网络(GAN)是一种主要用于无监督(unsupervised)或半监督学习(semi-supervised learning)的人工智能框架。它由两个不同的神经网络组成:一个生成器(Generator)和一个判别器(Discriminator)。这些网络以竞争性(对抗性)方式同时进行训练,使系统能够生成通常与真实数据难以区分的合成数据。
GAN 这个名称可以分解为三个关键组成部分:
- Generative(生成):这个组件的目标是学习训练数据的潜在分布,并利用学到的知识生成新的、以前未见过的数据样本。
- Adversarial(对抗):这指的是竞争性的训练设置。两个网络有对立的目标。生成器试图创建逼真的数据,而判别器试图区分真实数据(来自训练集)和虚假数据(由生成器产生)。
- Networks(网络):GANs 利用深度神经网络作为生成器和判别器的核心构建模块,使它们能够学习数据中的复杂模式和关系。
在深入了解 GANs 的工作机制之前,让我们先讨论它的两个主要神经网络模型:生成器和判别器。
生成器模型的主要目标是创建新的合成数据样本,这些样本力求尽可能逼真,模仿训练数据集真实数据分布的特征。
- 它通常将一个随机噪声向量(也称为潜在向量,latent vector)作为输入。这个噪声向量从一个简单的分布(例如,高斯分布或均匀分布)中采样。
- 然后,生成器通过一系列神经网络层(例如,全连接层,用于图像的转置卷积层)将这个随机输入转换成与真实数据具有相同结构的数据样本(例如,特定大小的图像)。
- 它的最终目标是产生判别器模型误认为是真实数据的数据。
判别器模型的主要目标是充当一个二分类器(binary classifier)。它评估输入数据,并尝试准确区分真实数据样本(来自实际数据集)和虚假数据样本(由生成器模型生成)。
- 它接收一个数据样本(真实或虚假)作为输入。
- 它通过其神经网络层(例如,用于图像的卷积层,全连接层)处理此输入,并输出一个单一标量值,通常表示输入样本为真实的概率。
- 判别器的目标是将真实样本正确分类为真实,并将虚假样本正确分类为虚假。
在 GAN 的训练过程中,生成器和判别器是迭代且相互对立地进行训练的,形成一个零和博弈(zero-sum game)。
GAN 如何工作?
Section titled “GAN 如何工作?”为了理解 GAN 的工作原理,考虑一个类比:生成器就像一个试图制造假币的伪造者,而判别器就像一个试图检测假币的警察。起初,伪造者技艺不精,警察很容易发现假币。随着两者都变得更好,伪造者制造出更逼真的假币,而警察变得更善于检测微小的瑕疵。这种竞争促使两者不断进步。
典型的 GAN 架构包括生成器接收随机噪声并输出合成样本。然后,判别器接收来自训练数据集的真实样本和来自生成器的这些合成样本的混合。它对每个样本输出一个概率,表示它认为该样本是真实的 likelihood。基于这些概率,计算生成器和判别器的损失函数(loss functions),并通过反向传播(backpropagation)更新它们各自的权重(weights)。
以下是 GAN 工作涉及的步骤:
GAN 系统从两个神经网络开始:生成器(G)和判别器(D)。它们的权重通常随机初始化。
- 生成器(G):它的目标是学习真实数据的分布并生成与真实数据难以区分的新数据样本(例如,图像、文本)。它将潜在空间向量 ‘z’(随机噪声)映射到数据空间:G(z)。
- 判别器(D):它的目标是区分数据集中的真实数据样本(x)和由 G 生成的虚假数据样本(G(z))。它输出 x 为真实的概率 D(x)。
训练过程是迭代的,包括交替训练判别器和生成器。
在每个训练迭代中,判别器被训练一步或多步:
- 从训练数据集中选择一个真实数据样本的 mini-batch。
- 使用当前的生成器(通过向其输入随机噪声向量)生成一个虚假数据样本的 mini-batch。
- 在此真实样本和虚假样本的组合批次上训练判别器。判别器的权重被更新,以最大化其正确分类真实样本为真实(例如,输出接近 1)和虚假样本为虚假(例如,输出接近 0)的能力。这通常通过最小化像二元交叉熵(binary cross-entropy)这样的损失函数来完成。
训练判别器后,生成器被训练一步或多步:
- 使用生成器生成一个新的虚假数据样本 mini-batch。
- 将这些虚假样本通过判别器(在此步骤中其权重是固定的)。
- 更新生成器的权重,以最大化判别器将其生成样本分类为真实的概率。本质上,生成器试图“欺骗”判别器。这通过最小化一个惩罚生成器(如果判别器将其样本识别为虚假)的损失函数来实现。
这种交替训练过程持续进行。随着训练的进展,两个网络都在改进:
生成器变得更擅长创建更接近真实数据的虚假数据,使得判别器更难区分它们。
判别器变得更擅长区分真实数据,即使是改进的生成器产生的更复杂的虚假数据。
这种对抗动态驱动两个网络提升其能力,直到理想情况下,生成器产生的数据如此逼真,判别器无法再可靠地区分它与真实数据(即,其区分真实 vs. 虚假的准确率约为 50%)。此时,GAN 被认为训练良好。
训练完成后,可以将训练好的生成器独立使用,通过向其输入新的随机噪声向量来生成新的数据样本。生成样本的质量可以通过定性方法(目视检查)或定量方法(使用各种指标,例如 Inception Score,用于图像的 Frechet Inception Distance)进行评估,具体取决于应用。
根据具体的应用和结果,训练好的 GAN 模型可能需要进一步微调(fine-tuning)。这可能包括调整超参数(hyperparameters)、修改网络架构或使用更高级的训练技术来提高性能、稳定性或生成样本的多样性。
生成对抗网络(GANs)是深度学习中最具影响力且被广泛研究的生成模型之一。本章解释了 GAN 的基本概念,包括其生成器和判别器组件,并详细说明了它们如何在对抗训练过程中交互以生成模仿真实数据的合成数据。
GAN 运行的核心步骤包括初始化、交替训练判别器和生成器的迭代训练循环、对抗学习动态以及最后对训练好的生成器进行评估。理解这些机制对于理解 GAN 在各种 AI 应用中的力量和潜力至关重要。