目录
1、代码简介
WGAN 通过引入 Wasserstein 距离(推土机距离),解决了原始 GAN 因使用 JS 散度而导致的“梯度消失”和“模式坍塌”问题。但在具体工程实现上,WGAN 留下了很大的隐患,这就是 WGAN-GP 要解决的核心问题。
原理说明:

从 WGAN 到 WGAN-GP,主要解决了以下 3 个致命问题,并带来了对应的优势:
1. 解决了 WGAN 权重剪裁导致的“梯度消失/爆炸”
WGAN 的做法:为了让判别器(Critic)满足 Lipschitz 连续条件,WGAN 强制将判别器的所有权重剪裁到 [-c, c](如 0.01)。
带来的问题:这种粗暴的截断会使权重分布极端化(大量权重变成 -c 或 c),网络容量大打折扣;如果 c 设大了容易梯度爆炸,设小了容易梯度消失。
WGAN-GP 的改进:用“梯度惩罚(Gradient Penalty)”替代了“权重剪裁”。不截断权重,而是直接在损失函数中加上惩罚项,强制判别器对“真假样本插值点”的梯度范数趋近于 1。
2. 解决了 WGAN 对超参数极度敏感的问题
WGAN 的做法:需要手动寻找一个合适的剪裁阈值 c,这个值极难调参,稍微偏离一点就会导致训练崩溃。
WGAN-GP 的改进:引入了惩罚系数 lambda。神奇的是,原论文证明 lambda = 10 在绝大多数数据集和网络结构下都是最优的,几乎不需要调参。
3. 解决了 WGAN 无法使用 Adam 优化器的问题
WGAN 的做法:在 WGAN 中,因为权重剪裁的突变性,使用 Adam 优化器极易导致训练崩塌,通常只能被迫使用 RMSProp。
WGAN-GP 的改进:梯度惩罚项是连续且平滑的,这使得 Adam 优化器可以完美兼容,只需将动量参数设为 beta1 = 0.5,就能获得比 RMSProp 更快、更稳定的收敛效果。
2、代码运行结果展示




3、代码获取
点击下方了解更多!
本文介绍了带梯度惩罚的Wasserstein生成对抗网络(WGAN-GP)原理与Matlab实现,重点解决原始WGAN中权重剪裁导致的梯度消失/爆炸、超参数敏感及优化器兼容性问题;通过梯度惩罚项强制判别器满足Lipschitz约束,支持Adam优化器并提升训练稳定性与收敛速度。

256

被折叠的 条评论
为什么被折叠?



