生成对抗网络(GAN)原理详细讲解
一、GAN 能做什么?
GAN 是无监督学习的颠覆性框架,具备强大的生成能力:
- 图像生成:生成逼真的人脸(如StyleGAN)、艺术作品(如ArtBreeder)
- 数据增强:为医疗影像等稀缺数据生成合成样本
- 跨模态转换:图像风格迁移(照片→油画)、文本生成图像(如DALL·E)
- 缺失数据补全:图像修复(如老照片修复)
- 科学模拟:生成分子结构、天文现象模拟
核心价值:学习数据分布并生成训练集中不存在但符合分布的新样本
二、GAN 的定义
核心思想(Goodfellow, 2014):
让两个神经网络(生成器 Generator 和 判别器 Discriminator)通过对抗博弈共同进化,最终生成器可生成以假乱真的数据。

- 生成器(Generator)能够输入一个向量,输出需要生成固定大小的像素图像
- 判别器(Discriminator)用来判别图片是真的还是假的,输入图片(训练的数据或者生成的数据),输出为判别图片的标签
三、GAN 的理解
-
思想:从训练库里获取很多训练样本,从而学习这些训练案例生成的概率分布
GAN 理解示意图
过程分析:
-
1、定义GAN结构生成数据
- (a) 状态处于最初始的状态:
生成器生成的分布和真实分布区别较大,并且判别器判别出样本的概率不稳定。
- (a) 状态处于最初始的状态:
-
2、在真实数据上训练判别器
- 操作步骤:
- 在真实数据上训练 nnn epochs 判别器;
- 生成 fake(假数据) 并训练判别器将其识别为假。
- 训练目标:
通过多次训练判别器达到 (b) 样本状态 → 此时判别样本区分得非常显著。
- 操作步骤:
-
3、训练生成器达到欺骗判别器的效果
- 操作结果:
训练生成器之后达到 (c) 样本状态 → 此时生成器分布相比之前逼近了真实样本分布。 - 迭代说明:
经过多次反复训练迭代之后,最终希望达到 (d) 状态:- 生成样本分布拟合于真实样本分布;
- 判别器分辨不出样本是生成的还是真实的。
- 操作结果:
四、训练损失
minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))] \min _{G} \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text{data}}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] GminDmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
公式解析:
-
V(G,D)V(G,D)V(G,D) 的含义
表示 pdatap_{data}pdata(真实数据分布)和 pzp_{z}pz(生成数据分布)的差异程度 -
maxDV(D,G)\max_D V(D, G)maxDV(D,G) 步骤
固定生成器 GGG,训练判别器 DDD 使其最大化区分能力:- 对真实样本:提高 D(x)→1D(x) \to 1D(x)→1
- 对生成样本 G(z)G(z)G(z):使 D(G(z))→0D(G(z)) \to 0D(G(z))→0
-
minG\min_GminG 步骤
固定判别器 DDD,优化生成器 GGG 以最小化差异:- 使生成样本 G(z)G(z)G(z) 被判别为真实的概率 D(G(z))→1D(G(z)) \to 1D(G(z))→1
判别器的本质:相当于一个分类器,判断图片的真伪,二分类问题,使用交叉熵损失。
对于真实样本:
对数预测概率损失,提高预测的概率
Ex∼pdata (x)log(D(x))E_{x \sim p_{\text {data }}(x)} \log (D(x))Ex∼pdata (x)log(D(x))
对于生成样本:
对数预测概率损失,降低预测概率
Ez∼pz(z)log(1−D(G(z))) E_{z \sim p_{z}(z)} \log (1-D(G(z)))Ez∼pz(z)log(1−D(G(z)))
最终可以这样:
Maximize V~=1m∑i=1mlogD(xi)+1m∑i=1mlog(1−D(x~i)) Minimize L=−1m∑i=1mlogD(xi)−1m∑i=1mlog(1−D(x~i))\begin{array}{l}\color{blue}{\text{ Maximize }} \tilde{V}=\dfrac{1}{m} \sum\limits_{i=1}^{m} \log D\left(x^{i}\right)+\dfrac{1}{m} \sum\limits_{i=1}^{m} \log \left(1-D\left(\tilde{x}^{i}\right)\right) \\\color{blue}{\text{ Minimize }} L=-\dfrac{1}{m} \sum\limits_{i=1}^{m} \log D\left(x^{i}\right)-\dfrac{1}{m} \sum\limits_{i=1}^{m} \log \left(1-D\left(\tilde{x}^{i}\right)\right)\end{array} Maximize V~=m1i=1∑mlogD(xi)+m1i=1∑mlog(1−D(x~i)) Minimize L=−m1i=1∑mlogD(xi)−m1i=1∑mlog(1−D(x~i))
公式变量说明:
- xix^ixi:第 iii 个真实样本
- x~i=G(zi)\tilde{x}^i = G(z^i)x~i=G(zi):第 iii 个生成样本
- mmm:批训练样本数量
五、G、D结构
-
核心定义:
G(生成器)与 D(判别器)是两个独立网络,需支持反向传播可导计算。 -
不同版本GAN的结构演变
-
2014年初版模型(原始GAN)
- 结构: G 和 D 均为 多层感知机(MLP)
- 缺点: 训练难度大,生成效果差(难以收敛)
-
2015年改进版(DCGAN: Deep Convolutional GAN)
- 四项关键改进:
-
- 判别器D:
- 移除池化层 → 全部替换为卷积层
- 生成器G:使用反卷积(下图示例)
-
- 归一化优化:
- D 和 G 均加入批量归一化层(BN)
-
- 全连接层移除:
- 完全去除网络中的所有全连接层(FC层)
-
- 激活函数调整:
- 判别器D:所有层使用 Leaky ReLU(α=0.2)
- 生成器G:
- 除输出层外 → 使用 ReLU
- 输出层 → 使用 tanh(压缩值域至 [-1, 1])
-
- 四项关键改进:
反卷积过程示意图 -
六、GAN 架构解析
关键组件:
-
生成器(G)
- 输入:低维随机噪声向量z∼N(0,1)z \sim \mathcal{N}(0,1)z∼N(0,1)
- 结构:上采样网络(转置卷积、反卷积)
- 输出:与真实数据同维度的样本(如图像像素矩阵)
-
判别器(D)
- 输入:真实样本 xxx 或生成样本G(z)G(z)G(z)
- 结构:卷积神经网络(图像任务)
- 输出:样本为真的概率 D(⋅)∈[0,1]D(\cdot) \in [0,1]D(⋅)∈[0,1]
七、训练过程详解
训练循环(交替优化):
实际训练技巧:
- 梯度惩罚(WGAN-GP):解决梯度消失/爆炸
- 标签平滑:防止判别器过度自信
- 历史参数平均(EMA):稳定生成器输出
八、GAN 的挑战与突破
问题 | 解决方案 | 代表模型 |
---|---|---|
模式崩溃 | 多判别器/最小二乘损失 | LSGAN, MAD-GAN |
训练不稳定 | 梯度惩罚/Wasserstein距离 | WGAN-GP |
生成质量低 | 渐进式训练/风格控制 | ProGAN, StyleGAN |
评估困难 | 感知指标+多样性度量 | FID, IS |
总结
GAN 通过生成器-判别器的对抗博弈,实现了从数据分布中创造性生成样本的能力。其核心价值在于:
- 无监督表征学习:无需标注数据即可捕捉复杂分布
- 跨域迁移能力:打通图像/文本/音频的生成边界
- 推动AI创造性:成为AIGC(AI生成内容)的核心引擎
未来方向:结合扩散模型提升稳定性、探索3D生成、解决伦理安全问题。正如Yann LeCun所言:“GAN是深度学习过去20年最有趣的想法”。