深度生成模型(五)——生成对抗网络 GAN

server/2025/3/9 18:22:15/

与传统自编码器(AE)相比,变分自编码器(VAE)在图像生成任务中能够实现更高的图像质量和更丰富的多样性。这主要归功于其利用隐空间中的均值和方差参数生成样本,并通过KL散度在训练过程中对隐空间进行正则化,从而确保隐空间具备良好的连续性与平滑性

然而,由于VAE在优化过程中主要关注重构误差的最小化,这一目标可能无法完全捕捉原始数据的所有细节,导致生成样本在细节丰富性和真实性上存在不足。此外,在处理复杂数据集时,隐空间的内在限制可能进一步影响生成样本的质量

那么,如何克服VAE模型的这些局限性呢?一种有效的策略是采用生成对抗网络(GAN)模型,其在图像生成领域通常能够提供更高质量的输出。GAN通过生成器与判别器之间的对抗训练,使生成器不断提升生成样本与真实数据之间的相似性,同时实现样本多样性的有效保持

生成对抗网络(Generative Adversarial Network, GAN)通过两个神经网络——生成器(Generator)和判别器(Discriminator)之间的对抗训练,实现高质量样本的生成

目录

1 训练流程直观理解

2 基本原理

2.1 博弈论的基本思想

2.2 判别器与生成器的目标

2.2.1 生成器的目标函数

2.2.2 判别器的目标函数

2.2.3 整体对抗目标

3 训练过程

4 关键技术要点

5 衍生架构

5.1 DCGAN

5.1.1 网络结构变革

5.1.2 转置卷积与上采样

5.1.3 小结

5.2 StyleGAN

5.2.1 核心技术与关键特点

5.2.2 网络架构

5.2.2.1 映射网络

5.2.2.2 合成网络(Synthesis Network)

5.2.3 与传统生成器的比较

5.2.4 小结

5.2.5 相关项目


1 训练流程直观理解

生成对抗网络(GAN)框架中,生成器首先通过采样随机噪声向量来构造一幅伪造图像,该图像随后被送入判别器进行评估。判别器对每幅输入图像输出一个概率值,用以量化该图像属于真实数据分布的可能性。同时,真实样本也被输入判别器,并获得相应的概率评估

在这一对抗过程中,生成器的目标是不断优化自身参数,使生成的图像能够欺骗判别器,即让判别器难以区分真实图像与伪造图像;而判别器则致力于提升辨别精度,准确分辨输入图像的真假。双方通过交替迭代训练,直至生成器能够生成足够逼真的图像,从而使得判别器难以做出准确判断

2 基本原理

与变分自编码器(VAE)利用变分推断技术逼近样本数据分布的思路不同,生成对抗网络(GAN)采用了博弈论的思想,通过生成器与判别器之间的对抗训练来实现对真实数据分布的学习

2.1 博弈论的基本思想

GAN的设计理念基于博弈论(Game Theory),其中两个模型——生成器 G 与判别器 D——在一个零和游戏中互相对抗:

  • 生成器(Generator):生成器 的目标是生成与真实数据分布尽可能接近的样本。其输入是一个来自简单分布(通常为均匀或高斯分布)的随机噪声向量 \mathbf{z} \sim p_z(\mathbf{z}),经过一系列线性变换和非线性激活函数,最终生成一个伪造样本 G(z)
  • 判别器(Discriminator):判别器 D 则作为一个二分类器,试图将输入的样本区分为真实样本和生成样本。它输出的概率 D(x) 表示样本 x 为真实数据的可能性

这种对抗性训练过程使得生成器不断改进以“欺骗”判别器,而判别器则不断提升自身的鉴别能力,直至达到某种平衡状态

2.2 判别器与生成器的目标

为了实现上述目标,GAN的训练过程依赖于一种称为对抗损失(Adversarial Loss)的目标函数。通常,设定真实图像的标签为1,生成图像的标签为0,则对应的损失函数设计如下:

2.2.1 生成器的目标函数

生成器希望其生成的样本 G(z) 能够“骗过”判别器,使得判别器将其判断为真实图像。理想情况下,当 G(z) 与真实样本足够接近时,判别器的输出 D(G(z)) 会接近1。因此,生成器的目标是最小化下列损失函数:

\mathcal{L}_{G} = \mathbb{E}_{\mathbf{z}\sim p_z(\mathbf{z})}\left[\log\left(1-D\left(G(\mathbf{z})\right)\right)\right]

D(G(z)) 越接近1时,对应的 log(1−D(G(z)) 值越小,说明生成器生成的样本与真实数据的相似度越高

2.2.2 判别器的目标函数

判别器需要在两个方面优化:

1. 对真实样本 x \sim p_{\text{data}}(x),希望其输出 D(x) 越接近1,即最大化 log⁡D(x)

2. 对生成器生成的样本 G(z),希望其输出 D(G(z)) 越接近0,即最大化 log⁡(1−D(G(z)))

综合上述目标,判别器的损失函数可定义为:

\mathcal{L}_{D} = \mathbb{E}_{x\sim p_{\text{data}}(x)}\left[\log D(x)\right] + \mathbb{E}_{\mathbf{z}\sim p_z(\mathbf{z})}\left[\log\left(1-D\left(G(\mathbf{z})\right)\right)\right]

2.2.3 整体对抗目标

将生成器与判别器的目标结合,可以构造一个最小-最大(minimax)游戏的目标函数:

其中:

  • \mathbb{E}_{x\sim p_{\text{data}}(x)} \left[\log D(x)\right] 表示判别器在真实样本上的输出期望。判别器希望此项尽可能大,即真实样本被判定为真实的概率接近1
  • \mathbb{E}_{\mathbf{z}\sim p_z(\mathbf{z})} \left[\log (1-D(G(\mathbf{z})))\right] 表示判别器在生成样本上的输出期望。判别器希望此项也尽可能大,即伪造样本被判定为伪造的概率接近1
  • 生成器则希望最小化这一目标函数,使得 D(G(\mathbf{z})) 趋向于1,从而“欺骗”判别器

这一目标函数确保了在生成器生成的样本越来越逼真的同时,判别器也在不断提升其鉴别能力

与VAE等模型不同,GAN的设计出发点不依赖于变分推断(Variational Inference)或需要计算和近似配分函数(Partition Function):

  • 变分推断:在VAE中用于逼近后验分布,但这往往需要引入额外的正则项,并对隐变量分布做一定的假设
  • 配分函数:主要作用是将未归一化的概率分布转化为归一化的概率分布,但其梯度的计算往往十分复杂,增加了模型训练的难度

GAN通过构造对抗损失函数,直接优化生成器与判别器之间的竞争过程,从而避免了这些复杂的计算,简化了模型训练流程

3 训练过程

GAN的训练过程可以通过以下步骤直观描述:

1. 初始化参数

随机初始化生成器 G 和判别器 D 的参数

2. 采样数据

从真实数据分布 p_{\text{data}}(x) 中随机采样 n 个样本 \{x_1, x_2, \dots, x_n\}

同时从噪声分布 p_z(z) 中随机采样 n 个噪声向量 \{z_1, z_2, \dots, z_n\}

3. 生成假样本

利用生成器 G 将噪声向量转换为假样本,即得到 \{G(z_1), G(z_2), \dots, G(z_n)\}

4. 判别器训练

将真实样本 x 和生成器输出的伪造样本 G(z) 同时送入判别器 D(⋅),判别器输出两个概率值:

  • D(x) 表示真实样本的真实性概率(理想情况应接近1)
  • D(G(z)) 表示生成样本被判定为真实的概率(理想情况应接近0)

判别器的目标是最大化正确判别真实数据和生成数据的概率,使得生成器生成的数据越来越接近真实数据。为了达到这个目标,判别器的目标函数通常采用交叉熵损失函数(Cross-Entropy Loss),即最小化真实数据和生成数据被误分类的概率

将真实样本与生成样本合并,构成 2n 个样本,输入判别器 D 后计算其交叉熵损失函数 \mathcal{L}_D

\mathcal{L}_D = -\frac{1}{n} \sum_{i=1}^{n} \left[ \log D(x_i) + \log\left(1 - D\left(G(z_i)\right)\right) \right]

判别器通过最大化目标函数来提升其区分真实与伪造样本的能力

通过反向传播和梯度下降,更新判别器参数,使其能够更准确地区分真实数据和生成数据

5. 生成器训练

固定判别器参数后,通过反向传播更新生成器参数

生成器的目标是使判别器对生成样本的判定概率 D(G(z)) 趋近于1,也就是说生成器希望生成的样本看起来更像真实样本

计算生成器的损失函数 \mathcal{L}_G​ 并更新生成器参数,以最小化生成器的损失:

\mathcal{L}_G = -\frac{1}{n} \sum_{i=1}^{n} \log\left( D\left(G(z_i)\right) \right)

生成器通过反向传播更新参数,使其生成的数据更加逼真,从而“欺骗”判别器

6. 对抗博弈

重复步骤2至5,直至达到预设的迭代次数或生成器生成的样本已经足够逼真,即判别器无法有效区分真实数据和生成数据

在整个训练过程中,生成器和判别器不断交替更新参数,最终达到一个平衡状态,此时生成器生成的样本足够逼真,以至于判别器难以辨别真实与伪造

4 关键技术要点

1. 交叉熵损失函数

判别器利用交叉熵损失函数衡量真实样本与生成样本被误分类的概率,通过对真实样本输出 logD(x) 和对生成样本输出 log⁡(1−D(G(z))) 的组合,确保其区分能力不断提升

2. 交替更新策略

在训练过程中,需要交替更新判别器和生成器的参数。若判别器更新过快,生成器可能难以捕捉数据分布;反之,则可能导致判别器失去有效性。因此,平衡两者的训练速度和更新幅度非常关键

3. 动态博弈机制

GAN的训练本质上是一种零和博弈,生成器和判别器互为对手,通过不断博弈使得生成器生成的数据逐渐逼近真实数据分布,最终达到一种动态平衡状态

5 衍生架构

虽然最初的 GAN 主要用于简单的手写数字生成和人脸合成,但它掀起了一股多媒体生成的热潮,并催生了大量变体,如 DCGAN、StyleGAN、BigGAN、StackGAN、Pix2pix、Age-cGAN、CycleGAN 等

5.1 DCGAN

DCGAN(深度卷积生成对抗网络)是2016年由 Alec Radford 等人在论文 “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks”中提出的。作为GAN发展史上的里程碑,DCGAN提出了新的网络架构,显著改善了GAN训练过程中的不稳定性问题

5.1.1 网络结构变革

DCGAN的主要创新在于将卷积神经网络(CNN)引入到GAN中,从而替代传统GAN中仅使用多层感知器(MLP)的结构。其主要改进包括:

1. 卷积与转置卷积的应用

在判别器中,利用卷积层取代了传统的池化层以更好地提取局部特征

x_{\text{conv}} = \text{Conv}(x)

在生成器中,采用转置卷积(或称上采样卷积)替代池化层,实现特征图的逐步放大

x_{\text{up}} = \text{TransConv}(x)

DCGAN 中生成网络模型架构

DCGAN 中判别网络模型架构

2. 批量标准化(Batch Normalization)

在判别器和生成器中均引入BN层,以稳定训练过程并加速模型收敛

x_{\text{BN}} = \text{BN}(x)

3. 去除全连接层

为减少参数量并提高模型的泛化能力,DCGAN完全摒弃了全连接层,采用全卷积网络架构

4. 激活函数的选择

生成器中除输出层使用 tanh⁡ 激活函数外,其余各层均采用 ReLU 激活函数;判别器中所有层均采用LeakyReLU激活函数,以缓解梯度消失问题

5.1.2 转置卷积与上采样

生成器中上采样过程主要通过转置卷积实现,其基本过程为:

  1. 插入间隔
    在输入特征图的像素间插入零值,扩展特征图的尺寸

  2. 卷积操作
    对扩展后的特征图应用标准卷积操作,获得更高分辨率的输出特征图

这一过程可以视作标准卷积的“反向”操作,数学表达为:

y = x *_{T} k

其中,∗T​ 表示转置卷积操作,k 为卷积核,x 为输入特征图,y 为上采样后的输出特征图。需要注意的是,尽管转置卷积有时也称为“反卷积”,但其本质并非严格意义上的逆运算

5.1.3 小结

DCGAN 的提出不仅使得 GAN 在图像生成任务上取得了突破,也为后续众多 GAN 变体的发展奠定了基础。通过引入卷积结构、批量标准化和改进的激活函数选择,DCGAN 大幅提升了训练稳定性和生成样本的质量。如今,基于 DCGAN 的技术已广泛应用于图像生成、风格迁移、图像翻译等多媒体领域,并推动了整个生成模型技术的发展

5.2 StyleGAN

StyleGAN (项目地址)是一种用于生成逼真图像的生成对抗网络(GAN)架构,由 OpenAI 的研究人员于2019年提出。该模型通过一系列创新设计,在图像生成任务中取得了显著成果,其主要目标是生成高质量、多样化且逼真的图像。StyleGAN不仅在生成图像的分辨率和细节上有突破,同时提供了对生成过程的更精细控制,从而大幅提升了生成图像的可信度和多样性

5.2.1 核心技术与关键特点

StyleGAN的成功主要得益于以下几个关键技术和设计思想:

  1. 分层生成器
    StyleGAN 的生成器采用了分层设计,每一层负责生成图像中不同尺度和细节的内容。从初始的粗略结构逐步过渡到高分辨率细节,使得最终生成的图像既整体结构合理又细节丰富

  2. 风格向量
    引入风格向量的概念,能够对生成图像的风格、颜色、纹理等进行调控。通过改变风格向量的数值,可以实现图像风格的转换,如调整光照、肤色、纹理细节等。这种设计使得生成图像不仅在内容上真实,同时在风格上也具有更高的可控性

  3. 高分辨率生成
    StyleGAN 利用高维潜在空间和多层次的生成结构,实现了高分辨率图像的生成。整个生成过程不仅关注全局结构,还在细节处注重精细表达,使得输出图像清晰、细腻

  4. 特征统计损失
    为了进一步提高生成图像的质量,StyleGAN 引入了特征统计损失。该损失函数从判别器中提取特征图的统计信息,用以衡量生成图像与真实图像在纹理、细节等方面的差异,从而指导生成器产生更逼真的细节

  5. 风格融合与插值
    StyleGAN 允许对风格向量进行插值和融合,从而实现图像风格的平滑过渡和混合。这不仅提升了图像生成的多样性,也使得风格迁移和编辑变得更加自然

  6. 添加噪声以促进多样性
    在生成器的各层中添加随机噪声,可以增强生成图像的随机性和多样性。通过在 AdaIN(Adaptive Instance Normalization)机制中对每个通道添加缩放过的噪声,StyleGAN 使得图像中的微小特征(如雀斑、皱纹、细微纹理)呈现出更加自然的变化,避免生成图像过于规律或重复

5.2.2 网络架构

StyleGAN 的网络结构主要由两大部分组成:映射网络和合成网络

传统生成器与 StyleGAN 生成器的比较

5.2.2.1 映射网络

映射网络的主要作用是对传统的潜在变量 z 进行非线性变换,得到一个中间潜在变量 w。这一过程有助于解耦潜在空间中的语义信息,从而降低特征纠缠问题。映射网络通常由8个全连接层组成,其输出与输入具有相同的维度。映射过程可以表示为:

w = f(z), \quad f: \mathbb{R}^{d_z} \to \mathbb{R}^{d_w}

接下来,经过一系列仿射变换,将 w 转换为风格向量 y

y = (\mathbf{y}_s,\, \mathbf{y}_b)

其中,ysyb​ 分别对应于后续 AdaIN 模块中对特征归一化后进行尺度和偏移调整的参数

5.2.2.2 合成网络(Synthesis Network)

合成网络负责生成最终图像,其输入不再是传统的潜在向量 z,而是一个固定的、可学习的常数。该网络利用逐层注入的风格信息和噪声,以多层次的方式逐步生成高分辨率图像

1. 风格注入

在合成网络的每一层,风格向量 y 会经过仿射变换后注入到卷积操作中。具体来说,经过仿射变换得到的参数用于调控特征图的归一化过程,这一过程与 AdaIN 类似,数学表达为:

\text{AdaIN}(x, y) = \mathbf{y}_s \left( \frac{x - \mu(x)}{\sigma(x)} \right) + \mathbf{y}_b

其中,x 为当前卷积层的特征图,μ(x)σ(x) 分别为特征图的均值和标准差。通过这种方式,每一层均能根据输入的风格向量对图像的外观进行细粒度调控

2. 噪声注入

为了增加生成图像的细节和多样性,StyleGAN在合成网络中的各个卷积层都注入了随机噪声。通常,噪声 n 是一个与特征图尺寸相同的随机矩阵,并且在注入之前会乘以一个学习得到的缩放因子 α

x' = x + \alpha \cdot n

这种设计确保噪声仅影响图像中细微的局部特征,如皮肤质感、皱纹、雀斑等,而不会破坏整体的结构和风格,从而使生成的图像既具有全局一致性,又充满随机细节

AdaIN 架构

StyleGAN架构

5.2.3 与传统生成器的比较

在经典 GAN 中,潜在变量 z 通常直接作为输入通过前馈网络传递给生成器,这种方式容易导致特征纠缠,且对生成图像的风格控制能力有限。StyleGAN 则完全省略了这种输入层,而是通过映射网络先将 z 转换为 w,再将 w 通过多个层次注入到合成网络中。这种设计使得:

  • 风格控制更精细
    每一层都可以根据风格向量 y 独立调整,生成图像在全局结构和局部细节上都能实现精确调控

  • 特征解耦
    映射网络有效降低了特征之间的相关性,使得生成器能够生成更具多样性且更自然的图像

  • 噪声与风格的分离
    噪声注入模块使得图像的随机细节与整体风格分离,从而进一步提升了生成图像的逼真性

在传统生成器中,由于输入向量 z 直接受训练数据的概率密度影响,某些视觉特征(如发色、肤色等)可能会过度纠缠,导致难以单独调控。StyleGAN 通过映射网络将 z 转换为中间潜在变量 w,打破了这种固有联系,从而实现更好的特征解耦。这一改进不仅提升了图像生成的灵活性,还为后续的风格融合和插值提供了基础

5.2.4 小结

StyleGAN 通过分层生成器、风格向量、噪声注入以及特征统计损失等多项创新设计,极大地提升了图像生成的质量和多样性。其网络结构分为映射网络和合成网络,前者用于解耦潜在空间、生成风格向量,后者则利用这些风格信息逐层生成高分辨率、细节丰富的图像。相比传统 GAN,StyleGAN 不仅在视觉效果上更为逼真,还为用户提供了更精细的生成图像控制能力,如风格转换、混合和插值等。正因如此,StyleGAN 在生成高质量假图像及相关应用(如人脸生成、风格迁移等)方面展现出极大的潜力,并推动了生成对抗网络技术的进一步发展

5.2.5 相关项目

1. StyleGAN 官方 TensorFlow 实现

GitHub地址: NVlabs/stylegan

NVIDIA 官方发布的 StyleGAN 代码库,支持生成高分辨率人脸、猫、汽车等图像。包含预训练模型(如FFHQ、CelebA-HQ)和训练脚本,支持图像生成、风格混合、噪声控制等功能

2. Flickr-Faces-HQ(FFHQ)数据集

地址: FFHQ Dataset

包含7万张高质量人脸图像,分辨率1024×1024,是StyleGAN训练的核心数据集

3. StyleGAN-Encoder

GitHub地址: pbaylies/stylegan-encoder

实现从真实图像反推潜在空间编码(latent code),支持将真实人脸映射到 StyleGAN 的潜在空间并进行编辑。核心方法包括随机剪裁(stochastic clipping)和基于VGG16的损失优化

4. StyleStudio(CVPR 2025)

GitHub地址: Westlake-AGI-Lab/StyleStudio

西湖大学等提出的改进方案,通过跨模态 AdaIN 技术融合文本与风格特征,解决风格过拟合和图像不稳定问题。支持无需额外训练的高质量风格迁移


http://www.ppmy.cn/server/173729.html

相关文章

蓝桥杯历年真题题解

1.轨道炮&#xff08;数学模拟&#xff09; #include <iostream> #include <map> using namespace std; const int N1010; int x[N],y[N],v[N]; char d[N]; int main() {int n;int ans-100;cin>>n;for(int i1;i<n;i)cin>>x[i]>>y[i]>>v…

面试时,如何回答好“你是怎么测试接口的?”

一、回答框架设计&#xff08;金字塔原理&#xff09; 总述&#xff1a; "我通常采用分层测试策略&#xff0c;遵循需求分析→场景拆解→用例设计→自动化实施→持续监控的闭环流程。以最近测试的支付中台项目为例&#xff0c;核心围绕功能正确性、异常鲁棒性、安全防护、…

源码:用Python进行电影数据分析实战指南

源码&#xff1a;用Python进行电影数据分析实战指南 原创 IT小本本 IT小本本 2025年03月03日 22:28 北京 接上一篇文章&#xff1a;用Python进行电影数据分析实战指南 1、首先复制csv内容到csv文件中 2、接着创建.py文件复制源码内容 3、运行代码&#xff0c;就可以看到数据…

如何搭建个人静态住宅IP:从零开始

你好&#xff01;今天我们将一起探索如何从头开始搭建个人静态住宅IP。无论您是为了远程办公、在线教育还是游戏加速&#xff0c;静态住宅IP都能带给您更稳定的网络体验。 一、准备阶段 1. 明确需求 首先&#xff0c;您需要清楚自己为什么需要静态住宅IP。可能是为了实现远程…

ZT39 小红的取模构造

描述 小红拿到了两个整数 a 和 b 。她希望你构造两个正整数 x 和 y 满足&#xff1a; 1、x mod ya 2、y mod xb 其中 p mod q 代表 p 除以 q 得到的余数。 共有t组询问。 输入描述&#xff1a; 第一行输入一个正整数t&#xff0c;代表询问的次数。 接下来的t行&#xff0c;每行…

IPD(集成产品开发)简介

参考&#xff1a;IPD咨询_研发管理咨询_IPD集成产品开发-百思特管理咨询集团 一、什么是IPD IPD到底是什么&#xff1f;一套体系&#xff1f;一些流程&#xff1f;还是一种模式&#xff1f; 华为在整个企业内部改革中最重要的两个项目一个是ISC(集成供应链)&#xff0c;另外…

计算机毕业设计SpringBoot+Vue.js车辆管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

爬虫代理技术深度解析:从原理到实战应用

一、代理IP的核心价值 ‌突破访问限制‌ 通过代理IP轮换机制&#xff0c;可有效绕过目标网站的IP频率限制与地域访问控制‌。实测数据显示&#xff0c;使用代理IP的爬虫成功率比直接访问提升3-5倍‌。 ‌提升数据采集效率‌ 采用分布式代理池技术&#xff0c;可实现每秒处理20…