欢迎关注博主的公众号:happyGirl的异想世界。有更多干货还有技术讨论群哦~

源链接:

http://www.twistedwg.com/2018/02/02/WGAN-GP.html

WGAN是一篇好文章,但是在处理Lipschitz条件时直接把weight限制住也带来了一些问题,很快改进版的WGAN-GP便问世了,本文将带着大家一起看看 WGAN-GP的原理。

WGAN-GP是针对WGAN的存在的问题提出来的,WGAN在真实的实验过程中依旧存在着训练困难、收敛速度慢的 问题,相比较传统GAN在实验上提升不是很明显。WGAN-GP在文章中指出了WGAN存在问题的原因,那就是WGAN在处理Lipschitz限制条件时直接采用了 weight clipping,就是每当更新完一次判别器的参数之后,就检查判别器的所有参数的绝对值有没有超过一个阈值,比如0.01,有的话就把这些参数 clip回 [-0.01, 0.01] 范围内。通过在训练过程中保证判别器的所有参数有界,就保证了判别器不能对两个略微不同的样本在判别上不会差异过大,从而 间接实现了Lipschitz限制。实际训练上判别器loss希望尽可能拉大真假样本的分数差,然而weight clipping独立地限制每一个网络参数的取值范围,在 这种情况下最优的策略就是尽可能让所有参数走极端,要么取最大值(如0.01)要么取最小值(如-0.01),文章通过实验验证了猜测如下图所示判别器的参 数几乎都集中在最大值和最小值上。

还有就是weight clipping会导致很容易一不小心就梯度消失或者梯度爆炸。原因是判别器是一个多层网络,如果把clipping threshold设得稍微小了一 点,每经过一层网络,梯度就变小一点点,多层之后就会指数衰减;反之,如果设得稍微大了一点,每经过一层网络,梯度变大一点点,多层之后就会指数爆 炸。只有设得不大不小,才能让生成器获得恰到好处的回传梯度,然而在实际应用中这个平衡区域可能很狭窄,就会给调参工作带来麻烦。文章也通过实验展 示了这个问题,下图中横轴代表判别器从低到高第几层,纵轴代表梯度回传到这一层之后的尺度大小(注意纵轴是对数刻度)

在以上问题提出后,作者提出了解决方案,那就是gradient penalty我翻译为梯度惩罚。Lipschitz限制是要求判别器的梯度不超过K,gradient penalty 就是设置一个额外的loss项来实现梯度与K之间的联系,这就是gradient penalty的核心所在,下图为引入gradient penalty后WGAN-GP的算法框图,对 于算法的分析我在附录中加以说明。

gradient penalty的选取并不是在全网络下,仅仅是在真假分布之间抽样处理,下图为处理过程。

下面公式展示为WGAN-GP的最终目标函数:

WGAN-GP的创新点也就在目标函数的第二项上,由于模型是对每个样本独立地施加梯度惩罚,所以判别器的模型架构中不能使用Batch Normalization, 因为它会引入同个batch中不同样本的相互依赖关系。

小结:WGAN-GP指出了WGAN存在的两大问题,weight clipping导致的参数集中化和调参上的梯度爆炸和梯度消失问题,改进的gradient penalty解决 了问题将参数与限制联系起来达到真实的Lipschitz限制条件。但是理论归理论实际实验上WGAN-GP的效果并不尽如人意,实验结果还没有WGAN的效果好, 我感觉问题应该是出在了gradient penalty上,但是具体的证明我还没到功夫,以后有时间好好研读推导一下。以下是附录部分,大家可选择性参考。

附录

谢谢观看,希望对您有所帮助,欢迎指正错误,欢迎一起讨论!!!

WGAN-GP(改进的WGAN)介绍相关推荐

  1. GAN ZOO - 第1节: 分析GAN的缺陷与改进方向,介绍典型的改进模型:CGAN、InfoGAN

    0. "GAN ZOO"系列文章开更说明 GAN到底有多"热"? 据统计,GAN的相关论文正在以指数趋势增长,如上图所示. But, GAN论文这么多,而且都是 ...

  2. 生死看淡,不服就GAN(八)----WGAN的改进版本WGAN-GP

    WGAN-GP是针对WGAN的存在的问题提出来的,WGAN在真实的实验过程中依旧存在着训练困难.收敛速度慢的 问题,相比较传统GAN在实验上提升不是很明显.WGAN-GP在文章中指出了WGAN存在问题 ...

  3. 生成对抗式网络 GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍

    一.GAN原理介绍 学习GAN的第一篇论文当然由是 Ian Goodfellow 于2014年发表的 Generative Adversarial Networks(论文下载链接arxiv:[http ...

  4. 【笔记】WGAN GP :WGAN自己的李普西斯条件是gradient clipping(大部分weight是正负0.01),在此基础上增加新的motivation让WGAN GP实现李普西斯条件

    注: 下文作者写的不错,但是有地方搞得不是很清楚.比如误差反向传播过程是对权重和偏置求偏导,不是对输入数据.这点要搞清楚. 注: 李普西斯条件:当且仅当处处可微函数f的导函数处处有界,f满足利普希茨条 ...

  5. cmmi文档_实施CMMI过程改进的框架介绍

    已经了解了CMMI实施方法是IDEAL模型,而今天是在IDEAL模型的基础上实施CMMI过程改进的框架,该框架可以很好的帮助大家理解IDEAL模型和CMMI过程改进的核心内容.框架图如下: 框架内容介 ...

  6. axure8.0发布html,Axure 8.0 beta最后一批新增和改进功能的介绍

    之前一直想翻译Axure官方博客的这篇介绍,但一直没抽出时间,今天偶然发现Shunz@UX翻译了这篇文章.阅读后觉得翻译得很准确,特别转来分享给大家.特别是On-Premises Axure Shar ...

  7. 【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】

    目录 1 前言 2 两种建模方法步骤与应用 2.1标准DH法 2.2改进DH法 最后附上所有代码如下: 1 前言 DH参数是机器人学习过程中常用的一种建模方法,通常情况下每一次坐标变换需要6个独立参数 ...

  8. wgan 不理解 损失函数_AI初识:深度学习中常用的损失函数有哪些?

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  9. yolo-mask的损失函数l包含三部分_【AI初识境】深度学习中常用的损失函数有哪些?...

    这是专栏<AI初识境>的第11篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 今天来说说深度学习中常见的损失函数(loss),覆盖分类,回归任务以及生成对抗网络,有了目 ...

最新文章

  1. async 队列性能测试
  2. [转]oracle设计数据库应选择正确的数据类型
  3. mysql外键_mysql系列之存储引擎
  4. Anton Chuvakin:关于日志管理产品的十个注意事项
  5. 王垠:怎样尊重一个程序员?
  6. Bootstrap 3 : 图片上传预览 image upload preview
  7. BlockingQueue - LinkedBlockingQueue常用API
  8. 贪心法——LeetCode376 摆动序列
  9. JavaEE学习02--HTTP协议
  10. ADC和DAC中常见技术术语
  11. mysql用alter创建外键_MySQL入门(alter语法 与 外键)
  12. WIN7 安装VS2005
  13. Java扫码点餐小程序源码 智慧点餐系统源码 点餐APP SaaS模式
  14. Autodesk 3DSMax 2018 安装注册说明
  15. 服务器网卡驱动装好后本地连接显示,系统装好后网卡驱动也装好了,可是没有本地连接,怎么弄...
  16. 为什么很多公司不要培训出来的Java程序员?
  17. 全球最大照片网站 Unsplash 开放图片检索数据集
  18. Unity3D-----摄像机镜头移动并限制角度
  19. 小程序 云开发 数据库操作
  20. 毕业设计 基于单片机的室内温湿度自动控制系统(源码+硬件+论文)

热门文章

  1. 什么是CN域名,注册CN域名有哪些注意事项?
  2. Java Robot 编写脚本机器人(四)利用Java帮你打英雄联盟
  3. 证券从业考试内容是什么?
  4. SecureCRT8.0的使用及其激活
  5. 2021年最新的安防芯片方案
  6. 下载和使用uni-app
  7. php旅行社系统开题报告,旅行社管理系统毕业及设计开题报告范文.doc
  8. 酷q java_CQ-HTTP-FOR-JAVA
  9. Grunt 单独对css压缩并生成min.css文件
  10. lorenz混沌序列输出的matlab仿真