GAN:WGAN

论文:https://arxiv.org/pdf/1701.07875.pdf

发表:2017

WGAN 算法流程

从GAN 到 WGAN 的转变

相比于原始 GAN,WGAN 只需要修改以下几点,就能使得训练更稳定,生成质量更高: 

1. 此时的判别器相当于做回归任务,它输出的是一般意义上的分数,而不是之前的概率。所以判别器最后一层去掉 sigmoid;

2. 生成器和判别器的 loss 不取 log;

3. 每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数 c;

4. 论文作者推荐使用 RMSProp 等非基于动量的优化算法。 

5. 判别器训练得越好,对生成器的提升更有利,因此可以放心地多训练Critic。所以有n_critic=5,即训练更新5次判别器,训练更新1次生成器。

WGAN 优点:

  • 训练过程中有一个有意义的 loss 值来指示生成器收敛,并且这个数值越小代表 GAN 训练得越好,代表生成器产生的图像质量越高;

  • 改善了优化过程的稳定性,解决梯度消失等问题,并且未发现存在生成样本缺乏多样性的问题。

作者指出我 Wasserstein 距离越小,错误率越低,生成质量越高,因此存在指示训练过程的意义。

对比与 JS 散度,当模型训练得越好,JS 散度或高或低,与生成样本质量之间无关联,没有意义。

实验表明 WGAN 和 DCGAN 都能生成的高质量的样本,左图 WGAN,右图 DCGAN。

而如果都不使用批标准化,左图的 WGAN 生成质量很好,而右图的 DCGAN 生成的质量很差。

如果 WGAN 和 GAN 都是用 MLP,WGAN 生成质量较好,而 GAN 出现样本缺乏多样性的问题。

WGAN 缺点:

1、训练不稳定、训练困难

2、权重裁剪后收敛缓慢(裁剪窗口太大)这源于 weight clipping 的方法太简单粗暴了,导致判别器的参数几乎都集中在最大值和最小值上,相当于一个二值神经网络了,没有发挥深度神经网络的强大拟合能力。

3、梯度消失(裁剪窗口太小)

WGAN 实践:

DCGAN:训练50poch

WGAN:训练50poch. 视觉上看差不多,可能还略输dcgan。训练一次D,训练一次G

WGAN:训练50poch. 感觉还不如上面那个实验。训练五次D,训练一次G

参考文章:

1:WGAN的来龙去脉 - 知乎

2:深度学习GAN系列课程笔记4—Origin GAN训练过程中的一些Tips ( WGAN / EBGAN ) - 知乎

3:Wasserstein GAN (WGAN) 解决本质问题 | 莫烦Python 

4:令人拍案叫绝的Wasserstein GAN - 知乎

参考代码:

1:https://github.com/znxlwm/pytorch-generative-model-collections/blob/master/WGAN.py

2:https://github.com/YixinChen-AI/CVAE-GAN-zoos-PyTorch-Beginner/blob/master/WGAN/WGAN.py

3:https://github.com/Zeleni9/pytorch-wgan 

4:https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/wgan/wgan.py

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 19:08:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 19:08:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 19:08:04       82 阅读
  4. Python语言-面向对象

    2023-12-07 19:08:04       91 阅读

热门阅读

  1. 【数据结构和算法】确定两个字符串是否接近

    2023-12-07 19:08:04       58 阅读
  2. 前端设计模式概论

    2023-12-07 19:08:04       53 阅读
  3. 【前端设计模式】之工厂模式

    2023-12-07 19:08:04       62 阅读
  4. JVM中 Minor GC 和 Full GC 的区别

    2023-12-07 19:08:04       55 阅读
  5. 编译器和 IR:LLVM IR、SPIR-V 和 MLIR

    2023-12-07 19:08:04       96 阅读
  6. MLIR笔记(5)

    2023-12-07 19:08:04       54 阅读
  7. CSS新手入门笔记整理:CSS列表样式

    2023-12-07 19:08:04       55 阅读
  8. 1.什么是html

    2023-12-07 19:08:04       57 阅读
  9. Linux之rsync免密登录

    2023-12-07 19:08:04       50 阅读
  10. 【力扣100】1.两数之和__231206

    2023-12-07 19:08:04       64 阅读