W-GAN2025年3月17日 | 阅读 7 分钟 ![]() 得益于生成对抗网络 (GAN),深度学习迎来了一场革命,它使得生成逼真的合成数据成为可能。尽管传统的 GAN 取得了巨大的成功,但它们可能会生成低质量的样本,并在训练过程中出现不稳定性。Wasserstein 生成对抗网络 (WGAN) 被提出来解决这些问题。与传统的 GAN 相比,WGAN 具有一系列优势,包括提高样本质量、改善训练动态和增强稳定性。 Wasserstein 生成对抗网络的基础是概率分布之间的 Wasserstein 距离,通常也称为 Earth-Mover's 距离。WGAN 最大化 Wasserstein 距离,而传统的 GAN 使用 Jensen-Shannon 或 Kullback-Leibler 散度来量化分布之间的差异。除了提供更稳定的训练动态外,Wasserstein 距离还提供了量化分布不相似性的更有效方式。 W-GAN 的组成部分
现在,我们来动手实现 W-GAN with Gradient Penalty,用于 MNIST 数据增强。 代码 导入库实用工具现在我们将提供所需的实用工具。 现在我们将创建一个函数,用于准备模型训练所需的数据。 构建模型通过使用 Wasserstein 距离,原始的 Wasserstein GAN 生成的值函数比初始 GAN 论文中使用的值函数具有更优越的理论特性。为了使 WGAN 工作,判别器(也称为 critic)必须位于 1-Lipschitz 函数空间内。作者建议使用权重裁剪来实现这一限制。尽管权重裁剪是有效的,但它可能导致不期望的行为,并且是强制执行 1-Lipschitz 约束的麻烦技术。例如,非常深的 WGAN 判别器(critic)经常无法收敛。 权重裁剪并不是 WGAN-GP 方法为保证平稳训练所提出的唯一解决方案。作者们建议使用“梯度惩罚”来代替裁剪权重,其中包括添加一个损失项来将判别器梯度的 L2 范数保持在 1 附近。 发电机我们首先将随机噪声输入生成器,然后将其塑造成 MNIST 图像格式。总体步骤如下:
值得注意的是,除最后一个反卷积层外,所有层都应用了批归一化。将 selu 用作中间反卷积的激活函数,将 tanh 用作输出的激活函数是最佳实践。 判别器判别器将使用跨步卷积来降低输入图像的维度。LeakyRELU 是这些的最佳实践激活。没有激活的情况下,输出特征将被展平并馈送到一个 1 个单元的密集层。 输出 ![]() ![]() ![]() W-GAN 实战现在让我们看看 W-GAN 在实际应用中的情况。 输出 ![]() ![]() ![]() ![]() 生成的图像让我们来看看 W-GAN 模型生成的图像。 输出 ![]() ![]() 求值现在,我们将使用 Frechet 距离来表示一些生成数据样本与真实数据相比的评估。Frechet 距离是衡量两条曲线或形状之间相似性的度量。 输出 ![]() 以下是我们对上述输出的解释:
第四个分数 11.02 远低于前几个分数。这表明第四组的生成样本分布与真实数据分布非常相似。 下一个主题贪婪层级预训练 |
我们请求您订阅我们的新闻通讯以获取最新更新。