蒙特利尔大学研究者改进Wasserstein GAN,极大提高GAN训练稳定性

简介:

生成对抗网络(GAN)是一种强大的生成模型,但是自从2014年Ian Goodfellow提出以来,GAN就存在训练不稳定的问题。最近提出的 Wasserstein GAN(WGAN)在训练稳定性上有极大的进步,但是在某些设定下仍存在生成低质量的样本,或者不能收敛等问题。

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

以下为雷锋网AI科技评论据论文内容进行的部分编译。

论文摘要

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

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

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

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

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

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

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

蒙特利尔大学研究者改进Wasserstein GAN,极大提高GAN训练稳定性

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

蒙特利尔大学研究者改进Wasserstein GAN,极大提高GAN训练稳定性

实验结果 图&表

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


蒙特利尔大学研究者改进Wasserstein GAN,极大提高GAN训练稳定性

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

蒙特利尔大学研究者改进Wasserstein GAN,极大提高GAN训练稳定性

对于每种架构,研究者都使用了四种不同的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字符向量的序列。

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

蒙特利尔大学研究者改进Wasserstein GAN,极大提高GAN训练稳定性

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

本论文在github上开源了代码:github

本论文同时也提供了详细的数学证明,以及更多的示例,进一步了解请阅读原论文:Improved Training of Wasserstein GANs,雷锋网编译

本文作者:高云河

本文转自雷锋网禁止二次转载,原文链接

相关文章
|
消息中间件
SpringCloud Stream集成RabbitMQ
SpringCloud Stream集成RabbitMQ
773 0
|
存储 Java
几种锁:偏向锁、轻量级锁、重量级锁、自旋锁
**锁机制简介:** Java中,锁分为偏向锁、轻量级锁和重量级锁。偏向锁适用于单一线程多次获取同一锁的情况,减少无竞争下的性能消耗;轻量级锁在多线程竞争时通过自旋避免阻塞,提升效率;重量级锁则是在自旋超时或多个线程竞争时,将其他线程阻塞以防止CPU空转,但性能较低。锁的升级路径为:偏向锁 → 轻量级锁 → 重量级锁,且不可降级。偏向锁默认开启,可通过JVM参数调整或关闭。
521 13
几种锁:偏向锁、轻量级锁、重量级锁、自旋锁
|
人工智能 API 语音技术
EmotiVoice:网易开源AI语音合成黑科技,2000+音色情感可控
EmotiVoice是网易有道开源的多语言语音合成系统,支持中英文2000多种音色,通过提示词控制情感输出,提供Web界面和API接口,具备语音克隆等先进功能。
1656 43
EmotiVoice:网易开源AI语音合成黑科技,2000+音色情感可控
|
小程序 JavaScript 数据库
微信小程序云开发数据库操作删除记录
微信小程序云开发数据库操作删除记录
364 0
|
传感器 监控 自动驾驶
智能交通系统:构建未来城市交通的神经中枢####
本文旨在探讨智能交通系统(ITS)的核心技术、应用现状及未来发展趋势。通过分析ITS如何利用先进的信息技术、数据通信传输技术、电子感知技术等,实现交通管理的智能化、自动化,从而提升交通效率、保障交通安全、减少环境污染。文章还展望了ITS在自动驾驶、车路协同等领域的应用前景,为构建未来智慧城市提供有力支撑。 ####
|
存储 运维 API
源码解密协程队列和线程队列的实现原理(一)
源码解密协程队列和线程队列的实现原理(一)
401 1
|
移动开发 前端开发 JavaScript
|
数据采集 安全 调度
【C 言专栏】C 语言与操作系统的交互
【5月更文挑战第1天】C语言在操作系统中扮演核心角色,常用于内核及系统级应用开发。它涉及进程管理(如`fork()`创建进程)、内存分配(`malloc()`、`free()`)、文件操作(`open()`、`read()`等)和设备驱动。C语言允许直接硬件交互,支持进程间通信和文件系统管理,但也带来资源管理、错误处理和可移植性的挑战。在嵌入式系统中,C语言尤为重要。随着技术发展,C语言将继续适应新操作系统和硬件架构,与其他语言融合,推进系统编程进步。
453 0
【C 言专栏】C 语言与操作系统的交互
|
数据安全/隐私保护 Python
Python Flask-Mail实现邮件发送
Python Flask-Mail实现邮件发送
452 0