生成对抗网络 (GAN) - 架构和类型
生成对抗网络 (GAN) 通常利用卷积神经网络 (CNN) 等架构。GAN 框架由两个神经网络组成:生成器和鉴别器。这些网络起着重要作用,生成器专注于创建新数据,鉴别器对其进行评估。阅读本章以了解 GAN 的架构、其组件、类型和使其如此强大的机制。
生成器在 GAN 架构中的作用
GAN 架构的第一个主要部分是生成器。让我们看看它的功能和结构 −
生成器:功能和结构
生成器的主要目标是生成旨在与数据集中的真实数据相似的新数据样本。它以随机噪声向量开始,并通过全连接层(如密集层或卷积层)对其进行转换,以生成合成数据样本。
生成器:层和组件
下面列出了生成器神经网络的层和组件 −
- 输入层 − 生成器接收低维随机噪声向量或输入数据作为输入。
- 全连接层 − FLC 用于增加输入噪声向量维数。
- 转置卷积层 − 这些层也称为反卷积层。它用于上采样,即生成比输入特征图具有更大空间维度的输出特征图。
- 激活函数 −两个常用的激活函数是:Leaky ReLU 和 Tanh。Leaky ReLU 激活函数有助于减少 ReLU 死亡问题,而 Tanh 激活函数可确保输出在特定范围内。
- 输出层 − 它产生最终数据输出,如具有特定分辨率的图像。
生成器:目标函数
生成器神经网络的目标是创建鉴别器无法与真实数据区分的数据。这是通过最小化生成器的损失函数 − 来实现的。
$$\mathrm{L_{G} \: = \: \log(1 \: - \: D(G(Z)))}$$
这里,G(z) 是生成的数据,D(⋅) 表示鉴别器的输出。
鉴别器在 GAN 架构中的作用
GAN 架构的第二部分是鉴别器。让我们看看它的功能和结构 −
鉴别器:功能和结构
鉴别器的主要目标是将输入数据分类为真实的或由生成器生成的。它将数据样本作为输入,并给出一个概率作为输出,以表明样本是真实的还是假的。
鉴别器:层和组件
下面列出了鉴别器神经网络的层和组件 −
- 输入层 − 鉴别器从真实数据集或生成器接收数据样本作为输入。
- 卷积层 − 它用于对输入数据进行下采样以提取相关特征。
- 全连接层 − FLC 用于处理提取的特征并进行最终分类。
- 激活函数 − 它使用 Leaky ReLU 激活函数来解决梯度消失问题。它还引入了非线性。
- 输出层 − 顾名思义,它给出一个介于 0 和 1 之间的概率值作为输出,指示样本是真实的还是假的。
鉴别器:目标函数
鉴别器神经网络的目标是最大限度地提高其正确区分真实数据和生成数据的能力。这是通过最小化鉴别器的损失函数来实现的 −
$$\mathrm{L_{D} \: = \: -(\log D(X) \: + \: \log(1 \: - \: D(G(Z))))}$$
此处,"x"是真实数据样本。
生成对抗网络的类型
我们可以根据生成器和鉴别器网络相互作用的方式拥有不同类型的 GAN 模型。以下是一些值得注意的变化 −
Vanilla GAN
Vanilla GAN 代表生成对抗网络 (GAN) 的最简单形式。它提供了对 GAN 工作原理的基本理解。术语"Vanilla"意味着这是最简单的形式,没有任何高级修改或增强。
深度卷积 GAN (DCGAN)
DCGAN 是 GAN 最流行的实现之一。它由 ConvNets 代替 多层感知器 组成,以稳定 GAN 训练。这些指导原则显著稳定了 GAN 训练,特别是对于图像生成任务。
DCGAN 的一些主要功能包括使用:
- 步进卷积
- 批量标准化
- 删除完全连接的隐藏层
条件 GAN (cGAN)
条件 GAN (cGAN) 将其他条件信息(如类标签、属性甚至其他数据样本)纳入生成器和鉴别器。借助这些条件信息,条件 GAN 使我们能够控制生成的输出的特征。
CycleGAN
CycleGAN 专为非配对图像到图像转换任务而设计,其中输入和输出图像之间没有关系。循环一致性损失用于确保从一个域转换到另一个域并再次转换回产生一致的结果。
渐进式 GAN (ProGAN)
ProGAN 通过在训练期间逐步增加生成器和鉴别器的分辨率来生成高分辨率图像。通过这种方法,您可以创建更详细、更高质量的图像。
StyleGAN
NVIDIA 开发的 StyleGAN 专为生成照片般逼真的高质量图像而设计。他们引入了一些创新技术来改进图像合成,并对特定属性进行了更好的控制。
拉普拉斯金字塔 GAN (LAPGAN)
拉普拉斯金字塔 GAN (LAPGAN) 是一种生成对抗网络,它使用多分辨率方法生成高质量图像。它使用拉普拉斯金字塔框架,以多种尺度生成图像。
与标准 GAN 相比,LAPGAN 主要在创建详细逼真的图像方面有效。
结论
GAN 使我们能够跨各个领域创建逼真的数据。在本章中,我们解释了 GAN 的架构和机制。