在前面的基础上:GAN——DCGAN——LSGAN——WGAN——WGAN-GP(本文)

在原始GAN基础上,

DCGAN作者首先提出了一个将CNN引入GAN的全新架构,在一定程度上提高了训练的结果,但是这仅仅是一个治标不治本的架构;

LSGAN在DCGAN的网络架构基础上进一步对Objective Function做了变动,但是还是会出现mode collapse的问题;

在将KL散度–JS散度—Earth-Mover距离的变化时,将原来的GAN架构的loss函数引入EM距离,从而避免了当判别器到达最优时,会出现梯度消失,从而导致生成器梯度消失。即是WGAN,但是相对而言还是会出现梯度的极端情况(梯度消失、梯度爆炸),所以引入梯度裁剪(也是为了实现loss函数的李普希兹连续);

随后,蒙特利尔大学的研究者们在WGAN的训练上又有了新的进展,他们将论文《Improved Training of Wasserstein GANs》发布在了arXiv上。研究者们发现失败的案例通常是由在WGAN中使用权重剪枝来对critic实施Lipschitz约束导致的。在本片论文中,研究者们提出了一种替代权重剪枝实施Lipschitz约束的方法:惩罚critic对输入的梯度。该方法收敛速度更快,并能够生成比权重剪枝的WGAN更高质量的样本。

论文摘要

生成对抗网络(GAN)将生成问题当作两个对抗网络的博弈:生成网络从给定噪声中产生合成数据,判别网络分辨生成器的的输出和真实数据。GAN可以生成视觉上吸引人的图片,但是网络通常很难训练。前段时间,Arjovsky等研究者对GAN值函数的收敛性进行了深入的分析,并提出了Wasserstein GAN(WGAN),利用Wasserstein距离产生一个比Jensen-Shannon发散值函数有更好的理论上的性质的值函数。但是仍然没能完全解决GAN训练稳定性的问题。

该论文中,蒙特利尔大学的研究者对WGAN进行改进,提出了一种替代WGAN判别器中权重剪枝的方法,下面是他们所做的工作:

通过小数据集上的实验,概述了判别器中的权重剪枝是如何导致影响稳定性和性能的病态行为的。

提出具有梯度惩罚的WGAN(WGAN with gradient penalty),从而避免同样的问题。

展示该方法相比标准WGAN拥有更快的收敛速度,并能生成更高质量的样本。

展示该方法如何提供稳定的GAN训练:几乎不需要超参数调参,成功训练多种针对图片生成和语言模型的GAN架构

WGAN的critic函数对输入的梯度相比于GAN的更好,因此对生成器的优化更简单。另外,WGAN的值函数是与生成样本的质量相关的,这个性质是GAN所没有的。WGAN的一个问题是如何高效地在critic上应用Lipschitz约束,Arjovsky提出了权重剪枝的方法。但权重剪枝会导致最优化困难。在权重剪枝约束下,大多数神经网络架构只有在学习极其简单地函数时才能达到k地最大梯度范数。因此,通过权重剪枝来实现k-Lipschitz约束将会导致critic偏向更简单的函数。如下图所示,在小型数据集上,权重剪枝不能捕捉到数据分布的高阶矩。

由于在WGAN中使用权重剪枝可能会导致不良结果,研究者考虑在训练目标上使用Lipschitz约束的一种替代方法:一个可微的函数是1-Lipschitz,当且仅当它的梯度具有小于或等于1的范数时。因此,可以直接约束critic函数对其输入的梯度范数。新的critic函数为:

研究者们在CIFAR-10数据集上将梯度惩罚的WGAN与权重剪枝的WGAN的训练进行了对比。其中橙色曲线的梯度惩罚WGAN使用了与权重剪枝WGAN相同的优化器(RMSProp)和相同的学习率。绿色曲线是使用了Adam优化器和更高学习率的梯度惩罚WGAN。可以看到,即使使用了同样的优化器,该论文中的方法也能更快的收敛并得到更高的最终分数。使用Adam优化器能进一步提高性能。

为了展示该方法训练过程中的稳定性,研究者在LSUN卧室训练集上训练了多种不同的GAN架构,除了DCGAN外,研究者还选择了另外六种较难训练的架构,如下图所示:

对于每种架构,研究者都使用了四种不同的GAN过程:梯度惩罚的WGAN,权重剪枝的WGAN,DCGAN,以及最小二乘GAN。对于每种方法,都使用了推荐的优化器超参数默认设置:

WGAN with gradient penalty: Adam (α = .0001, β1 = .5, β2 = .9)

WGAN with weight clipping: RMSProp (α = .00005)

DCGAN: Adam (α = .0002, β1 = .5)

LSGAN: RMSProp (α = .0001) [chosen by search over α = .001, .0002, .0001]

上图显示的样本都是经过200k次迭代的结果。目前为止,梯度惩罚的WGAN是唯一一种使用同一种默认超参数,并在每个架构下都成功训练的方法。而所有其他方法,都在一些架构下不稳定。

使用GAN构建语言模型是一项富有挑战的任务,很大程度上是因为生成器中离散的输入输出序列很难进行反向传播。先前的GAN语言模型通常凭借预训练或者与监督最大似然方法联合训练。相比之下,使用该论文的方法,不需采用复杂的通过离散变量反向传播的方法,也不需要最大似然训练或fine-tune结构。该方法在Google Billion Word数据集上训练了一个字符级的GAN语言模型。生成器是一个简单的CNN架构,通过1D卷积将latent vector转换为32个one-hot字符向量的序列。

下图展示了模型的一个例子。目前为止,这是第一个完全使用对抗方法进行训练,而没有使用监督的最大似然损失的生成语言模型。其中有一些拼写上的错误,这可能是由于模型是每个字符独立输出的。


该文提供了一种训练GAN的稳定的算法,能够更好的探索哪种架构能够得到最好的生成模型性能。该方法也打开了使用大规模图像或语言数据集训练以得到更强的模型性能的大门。

GAN-GP(Gradient Penalty)相关推荐

  1. Wasserstein GAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法

    作者:郑华滨 链接:https://www.zhihu.com/question/52602529/answer/158727900 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  2. 计算机视觉(CV)-生成模型:WGAN【Lipschitz:Weight Clipping】--> WGAN-GP【Lipschitz:Gradient Penalty】

    深度学习-生成模型:WGAN[Lipschitz:Weight Clipping]--> WGAN-GP[Lipschitz:Gradient Penalty] 一.WGAN相比较GAN的改进点 ...

  3. Improved GAN

    https://www.bilibili.com/video/av9770302/?p=16 从之前讲的basic gan延伸到unified framework,到WGAN 再到通过WGAN进行Ge ...

  4. 从双层优化视角理解对抗网络GAN

    目录 详细目录 1. 入门对抗网络 1.1 公式解读(将数学语言翻译成简体中文) 1.2 图像生成 2. 为何原版GAN训练不稳定 2.1 梯度消失 vanishing gradient 2.2 模式 ...

  5. WGAN-GP解读分析

    目录 0. 摘要 1. 基础知识 1.1 信息量 1.2 熵 1.3 相对熵 1.4 交叉熵 1.5 JS散度 1.6 其它相关概念 2. WGAN理论分析 2.1 WGAN的改变 2.2 原始GAN ...

  6. 「可解释ML/3D深度学习等」Github六月最受欢迎的机器学习库来啦

    https://www.toutiao.com/a6706469836307825163/ SHUBHAM SINGH总结了Github上6月份最火的7个项目.这七个项目涵盖可解释性机器学习.3D深度 ...

  7. 【ICLR2019】Poster 论文汇总

    ICLR2019 Poster 文章汇总, 共478 papers Convolutional Neural Networks on Non-uniform Geometrical Signals U ...

  8. 生成式对抗网络GAN有哪些最新的发展,可以实际应用到哪些场景中

    刚做完实验,来答一答自然语言处理方面GAN的应用. 直接把GAN应用到NLP领域(主要是生成序列),有两方面的问题: 1. GAN最开始是设计用于生成连续数据,但是自然语言处理中我们要用来生成离散to ...

  9. 详解GAN的谱归一化(Spectral Normalization)

    作者丨尹相楠 学校丨里昂中央理工博士在读 研究方向丨人脸识别.对抗生成网络 本文主要介绍谱归一化这项技术,详细论文参考 Spectral Normalization for Generative Ad ...

最新文章

  1. Android应用程序键盘(Keyboard)消息处理机制分析(17)
  2. 自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);
  3. (转)利用CAS算法实现通用线程安全状态机
  4. python fonttool_Python wx.Font方法代码示例
  5. 12月13日 什么是help_method,session的简单理解, find_by等finder method
  6. 在UITouch事件中画圆圈-iOS8 Swift基础教程
  7. python 2x可以打么_Python打基础一定要吃透这68个内置函数
  8. 鸿蒙不是安卓也不是Linux
  9. 一对一直播社交聊天程序: JAVA中的Socket源码概述
  10. Tomcat可以实现Session共享方案
  11. 打印浏览器文章为pdf
  12. 19 岁就在南大读博的“00 后”女生:这是我的学习经历...
  13. python 基础知识复习巩固
  14. 腾讯云云服务器Centos系统安装MySQL数据库详细教程
  15. 树莓派编译安装完整版本ROS
  16. EOS 安装本地环境,发币教程,本地节点
  17. 加勒比海盗1英文剧本
  18. [转] 研究云计算与海量数据处理方向建议看的论文列表
  19. 计算机专业高级知识,高级选择_电脑基础知识_IT计算机_专业资料
  20. 阿里云视频直播PHP-SDK

热门文章

  1. 撸羊毛当当图书618优惠码,花120买300(含书单推荐)
  2. 以前不懂事现在只想搞钱,从0-1搭建一个树莓派小车
  3. 将汉字转换为拼音或者翻转
  4. python 求解高阶线性方程并画出图像
  5. cFosSpeed(网络加速器软件)官方中文版V11.10.2483 | 网络优化大师 | 绝佳的电脑网络延迟解决方法
  6. rust 使用tokio的Notify 和timeout实现类似可超时条件变量的效果
  7. win10 如何开启guest
  8. 前端学习随笔 css篇
  9. 计算机视觉(东北大学)慕课参考答案
  10. 你是资讯控吗?——Web2.0智识管理简册