GAN(生成对抗网络)的损失函数设计直接影响模型的训练效果和生成质量。以下是常用的损失函数及其特点:
1. 原始GAN损失(Vanilla GAN)
生成对抗网络(Generative Adversarial Networks, GAN)由Ian Goodfellow等人于2014年提出,通过生成器与判别器的对抗博弈实现数据分布建模,开创了无监督学习生成高质量样本的新范式。
组成
- 判别器损失:
LD=Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))]
- 生成器损失(生成器希望最大化判别器对生成样本的误判概率):
LG=−Ez∼pz[logD(G(z))]
其中:
-
x:
真实数据样本,从真实数据分布 pdata 中采样得到(例如真实图片、文本等)。
-
z:
输入噪声向量,通常从简单的先验分布(如高斯分布 pz 或均匀分布)中采样得到,用于生成器生成数据。
-
D(x):
判别器(Discriminator)的输出,表示判别器认为输入 x 是真实数据的概率。
- 目标:对于真实样本 x,D(x) 应接近 1。
-
G(z):
生成器(Generator)的输出,表示以噪声 z 为输入生成的假数据(例如生成图像)。
-
D(G(z)):
判别器对生成器输出 G(z) 的判断结果,表示判别器认为该假数据是真实的概率。
- 目标:对于假数据 G(z),D(G(z)) 应接近 0。
-
pdata:
真实数据的分布(未知,通过训练数据近似)。
-
pz:
输入噪声的先验分布(通常是已知的简单分布,如高斯分布)。
-
特点:
- 基于二元交叉熵(Binary Cross-Entropy),判别器输出概率值(0~1)。
- 容易出现梯度消失(生成器初期难以学习)和模式崩溃(Mode Collapse)。
为什么要用 log 函数?
单调性:在 x>0 时,对数函数是单调递增的,但增速逐渐减缓。
导数:
dxdln(x)=x1
这个性质使得对数在优化问题中易于求导。
判别器损失函数的含义:
- 当 D(x)→1 时,logD(x)→0(损失较小)。
- 当 D(x)→0 时,logD(x)→−∞(损失极大)。
- logD(x) 判别器需要通过最大化 logD(x) 来“奖励”自己正确识别真实数据的能力。
- log(1−D(G(z))) 判别器需要通过最大化这项来“惩罚”自己误判生成数据为真实数据的行为。
生成器损失为什么加负号?
在优化中,我们通常最小化损失函数,因此需要将最大化问题转化为最小化问题。对目标函数取负号即可:
Gmin(−Ez∼pz[logD(G(z))]).
这就是生成器损失函数 LG=−Ez∼pz[logD(G(z))] 的来源。
判别器损失和交叉熵损失有什么关系
(1). 交叉熵损失的标准形式
对于二分类问题,真实标签 y∈{0,1},预测概率 y^∈(0,1),交叉熵损失为:
LCE=−Ey,y^[ylogy^+(1−y)log(1−y^)].
- 当 y=1 时,损失为 −logy^(鼓励 y^→1);
- 当 y=0 时,损失为 −log(1−y^)(鼓励 y^→0)。
(2). 判别器损失的对应关系
GAN 中判别器的目标是区分真实样本 x(标签 y=1)和生成样本 G(z)(标签 y=0)。其损失函数为:
LD=Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))].
- 第一项 logD(x):对应 y=1 的损失项,鼓励判别器将真实样本分类为 1;
- 第二项 log(1−D(G(z))):对应 y=0 的损失项,鼓励判别器将生成样本分类为 0。
对比交叉熵损失:
LD=−LCE.
即 LD 是交叉熵损失的负值。判别器通过最大化 LD 来等价于最小化标准交叉熵损失 LCE。
2. 最小二乘GAN(Least Squares GAN, LSGAN)
最小二乘GAN(Least Squares GAN, LSGAN) 是由 Xudong Mao 等人 在 2017 年的论文《Least Squares Generative Adversarial Networks 》中首次提出的。
- 判别器损失:
LD=21Ex∼pdata[(D(x)−1)2]+21Ez∼pz[(D(G(z)))2]
- 生成器损失:
LG=21Ez∼pz[(D(G(z))−1)2]
- 特点:
- 使用均方误差(MSE)替代交叉熵,缓解梯度消失问题。
- 生成器目标是让判别器输出接近1(真实标签),而非最大化 logD(G(z))。
为什么要发明最小二乘GAN?
(1)最小二乘GAN可以解决梯度消失问题
传统GAN有问题:交叉熵损失的饱和性:
传统GAN生成器的损失为:
LG=Ez∼pz[log(1−D(G(z)))]
当生成器生成的样本质量较差时,判别器会强烈拒绝(即 D(G(z))≈0),此时 log(1−D(G(z))) 的梯度趋近于0(因为导数 ∂D∂log(1−D)=−1−D1,当 D→0 时梯度接近 -1,但链式法则中生成器参数的梯度可能被削弱),导致生成器无法更新。
MSE损失的非饱和性
LSGAN的生成器损失为:
LG=21Ez∼pz[(D(G(z))−1)2]
即使生成器生成的样本被判别器标记为0(完全错误),损失值为 (0−1)2=1,且梯度为 D(G(z))−1,始终存在明确的方向引导生成器更新(梯度不会消失)。
(2)最小二乘GAN有更平滑的优化目标
- 连续的距离惩罚:
LSGAN的判别器损失:
LD=21Ex∼pdata[(D(x)−1)2]+21Ez∼pz[D(G(z))2]
要求判别器对真实样本输出严格等于1,对生成样本输出严格等于0。这使得判别器不仅需要分类正确,还需要对样本到决策边界的距离进行建模,形成更平滑的损失曲面,避免局部极值陷阱。
(3)最小二乘GAN的生成器目标的直观性
- 传统GAN的生成器目标:
通过最大化 logD(G(z)) 间接推动生成样本被判别器接受,但对梯度方向的利用不够直接。
- LSGAN的生成器目标:
显式要求生成样本的判别器输出 D(G(z)) 接近期望标签1,优化目标更直观。这种形式与回归任务类似,梯度信号更稳定。
3. Wasserstein GAN(WGAN)
Wasserstein GAN(WGAN) 是由 Martin Arjovsky、Soumith Chintala 和 Léon Bottou 三位研究者在 2017年 提出的。
- 判别器损失:
LD=Ex∼pdata[D(x)]−Ez∼pz[D(G(z))]
- 生成器损失:
LG=−Ez∼pz[D(G(z))]
- 关键改进:
- 判别器输出不再是概率,而是实数,衡量样本“真实性”的分数。
- 需要满足Lipschitz连续性约束,通常通过 权重裁剪(Weight Clipping) 或 梯度惩罚(WGAN-GP) 实现。
Wasserstein GAN有什么特点?
Wasserstein GAN(WGAN)的提出主要是为了解决传统生成对抗网络(GAN)在训练过程中存在的梯度消失、模式崩溃和训练不稳定等问题。传统GAN基于Jensen-Shannon散度(JS散度)构建目标函数,当生成分布与真实分布完全不重叠时,JS散度会失去梯度信号,导致生成器无法更新;同时,判别器的饱和特性容易引发模式崩溃(生成器过度聚焦于单一模式)和训练震荡。为克服这些问题,WGAN引入了Wasserstein距离(也称Earth Mover距离),通过衡量两个分布之间的“搬运成本”来提供更稳定且有意义的梯度信号。这一距离度量在数学上具有连续性和光滑性,即使分布间无重叠也能保持梯度流动,从而有效缓解梯度消失问题,并使损失函数值与生成质量呈现直接关联性,便于训练监控。
WGAN的核心改进在于对判别器的重构及其优化约束的设计。首先,判别器不再输出概率值,而是输出实数分数,用于衡量样本的“真实性”程度。其次,为满足Wasserstein距离的理论要求,判别器需满足1-Lipschitz连续性条件(即函数变化率不超过1)。早期WGAN通过权重裁剪(Weight Clipping)强制限制参数范围,但这种方法可能导致优化困难;后续改进版本WGAN-GP则引入梯度惩罚(Gradient Penalty),通过对中间样本的梯度模长施加约束,更灵活且高效地实现Lipschitz条件。最终,WGAN的判别器目标是最小化真实样本与生成样本分数的差距,而生成器则通过最小化生成样本的判别分数来逼近真实分布。
这一改进带来了显著的实际效果:一方面,训练过程更加稳定,判别器损失值能持续反映生成质量的提升,避免传统GAN中常见的震荡或发散现象;另一方面,生成结果的多样性和真实性得到增强,模式崩溃问题大幅缓解。从数学本质看,WGAN通过Kantorovich-Rubinstein对偶定理将Wasserstein距离转化为判别器的优化问题,使其能够直接逼近分布间的最优搬运成本,为生成模型的理论分析和工程实践提供了更坚实的基础。WGAN及其改进版本(如WGAN-GP)成为GAN研究的重要里程碑,推动了生成对抗网络在图像生成、风格迁移等领域的广泛应用。
4. WGAN-GP(Wasserstein GAN with Gradient Penalty)
WGAN-GP(Wasserstein GAN with Gradient Penalty) 是由 Ishaan Gulrajani 等人 在 2017年 提出的。
-
梯度惩罚项:
LGP=λEx^∼px^[(∥∇x^D(x^)∥2−1)2]
其中:
- x^ 是从真实数据 x 和生成数据 G(z) 之间随机插值得到的样本。
- λ 是一个超参数(通常设为 10)。
- 目标是让判别器 D 的梯度范数接近 1。
-
总判别器损失:
LD=Ex∼pdata[D(x)]−Ez∼pz[D(G(z))]+LGP
-
特点:
- 解决WGAN的权重裁剪不稳定问题,梯度惩罚使训练更平滑。
- 当前最广泛使用的稳定训练方法之一。
5. Hinge Loss GAN
-
判别器损失:
LD=Ex∼pdata[max(0,1−D(x))]+Ez∼pz[max(0,1+D(G(z)))]
- 第一项鼓励真实样本得分大于等于 1
- 第二项鼓励生成样本得分小于等于 -1
-
生成器损失:
LG=−Ez∼pz[D(G(z))]
-
特点:
- 简化版损失,判别器输出范围更宽松,适合大尺度图像生成(如StyleGAN系列)。
- 与Hinge Loss在分类任务中的思想类似,最大化间隔(Margin)。
存在的意义
Wasserstein GAN (WGAN) 引入了 Wasserstein 距离,理论上更稳定,但实现上需要权重裁剪(weight clipping)或者梯度惩罚(GP),限制了模型灵活性。
Hinge Loss GAN 的特点与优势
特点 | 解释 |
---|
训练更稳定 | 损失函数不依赖于指数函数(如交叉熵),避免梯度爆炸/消失问题 |
输出范围宽松 | 判别器不需要输出 [0,1] 的概率,可以是任意实数,适合大规模图像生成 |
最大间隔思想 | 类似 SVM,提升鲁棒性,防止过拟合 |
适合大图像生成 | 在 StyleGAN、BigGAN 等大型模型中广泛应用 |
6. Relativistic GAN
基于 Hinge Loss 改进而来,它将“相对性”引入到损失函数中
- 核心思想:判别器同时比较真实样本和生成样本的相对真实性。
- Relativistic Hinge Loss:
- 判别器损失:
LD=Ex∼pdata[max(0,1−D(x)+Ez∼pz[D(G(z))])]+Ez∼pz[max(0,1+D(G(z))−Ex∼pdata[D(x)])]
- 生成器损失:
LG=−Ez∼pz[D(G(z))]+Ex∼pdata[D(x)]
- 特点:
7. Fisher GAN
- 核心思想:通过约束判别器输出的一阶矩(均值)和二阶矩(方差)来稳定训练。
- 损失形式:
- 判别器损失包含均值约束和方差约束项。
- 生成器损失为 −E[D(G(z))]。
- 特点:
- 不需要额外的网络或损失项,通过动态调整判别器输出分布实现稳定。
其他变种
- f-GAN:基于f散度理论的通用框架,涵盖KL散度、JS散度等不同目标。
- DRAGAN:引入梯度惩罚的另一种形式,增强判别器的泛化能力。
- Spectral Normalization GAN (SN-GAN):通过谱归一化约束判别器权重,替代WGAN-GP。
如何选择损失函数?
- 稳定训练优先:WGAN-GP、Hinge Loss、Spectral Normalization。
- 高质量图像生成:Hinge Loss(StyleGAN)、Relativistic GAN。
- 理论严谨性:WGAN(基于Wasserstein距离)。
- 简单易实现:LSGAN、Hinge Loss。
总结
不同损失函数的核心差异在于对 判别器目标 和 生成器目标 的定义,以及如何缓解模式崩溃和梯度消失。实际应用中,WGAN-GP和Hinge Loss是当前最主流的选择,而Relativistic GAN在高端生成任务(如StyleGAN)中表现优异。选择时需结合具体任务需求(如训练稳定性、生成质量)和计算资源进行权衡。