当前位置: 首页 > article >正文

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修改为WGAN,同样训练50poch. 视觉上看差不多,可能还略输dcgan。也许是我没有做第5条改动。

DCGAN 

WGAN 

参考文章:

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


http://www.kler.cn/a/152369.html

相关文章:

  • OCR文字识别工具 Cisdem OCRWizard激活最新 for Mac
  • 「阿里巴巴」裁撤量子实验室!
  • 如何使用Python的Open3D开源库进行三维数据处理
  • HarmonyOS开发(七):构建丰富页面
  • 【Appium】解决搜索输入框无搜索按钮
  • TQ2440开发板-LED全亮全灭控制程序设计
  • EUREKA: HUMAN-LEVEL REWARD DESIGN VIACODING LARGE LANGUAGE MODELS
  • 使用Golang构建高性能网络爬虫
  • Docker自定义镜像
  • 十大排序之冒泡排序与快速排序(详解)
  • Web 安全之证书透明(Certificate Transparency)详解
  • https 是否真的安全,https攻击该如何防护,https可以被抓包吗?如何防止呢?
  • ESP32-Web-Server编程- 通过 Highcharts 创建图表(Chart)实时显示设备信息
  • 一个菜单两个二级路由的搭建
  • VMware Linux(Centos)虚拟机扩容根目录磁盘空间
  • mockito加junit gd 单元测试 笔记
  • 防火墙补充NAT
  • Flask学习二:项目拆分、请求与响应、cookie
  • 设计模式之装饰模式(2)--有意思的想法
  • Python与设计模式--解释器模式