前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)

GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)

作者头像
Minerva
发布于 2020-06-16 09:26:53
发布于 2020-06-16 09:26:53
15.6K0
举报

GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)

在上一篇文章中我们介绍了GAN的原理(GAN生成对抗网络入门介绍),生成对抗网络GAN主要由两部分组成,生成网络Generator和判别网络Discriminator,生成模型G的思想是将一个随机噪声包装成一个逼真的样本,判别模型D则需要判断输入的样本是真实的还是生成的假样本,通过对抗训练共同进步,判别模型D对样本的判别能力不断上升,生成模型G的造假能力也不断上升,但GAN存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题,下面介绍一系列在此基础上的各种改进。 一、 CGAN条件GAN 论文《Conditional Generative Adversarial Nets》 论文地址:https://arxiv.org/pdf/1411.1784.pdf 1、原理 原始GAN的生成过程采用随机噪声就可以开始训练,不再需要一个假设的数据分布,但是这样自由散漫的方式对于较大的图像就不太可控了,CGAN方法提出了一种带有条件约束的GAN,通过额外的信息对模型增加条件,来指导数据生成过程。本文将额外信息y输送给判别模型和生成模型,作为输入层的一部分,从而实现条件GAN,是在Mnist数据集上以类别标签为条件变量,生成指定类别的图像,把纯无监督的GAN变成有监督的模型。

2、目标函数 条件 GAN 的目标函数是带有条件概率的二人极小极大值博弈(two-player minimax game ):

CGAN的网络结构:

本文针对Mnist数据集,生成器的输入是100维服从均匀分布的噪声向量,以类别标签(one-hot编码)为条件来训练条件GAN,生成器经过sigmoid生成784维(28x28)的单通道图像,判别器的输入为784维的图像和类别标签(one-hot编码),输出是该样本来自训练集的的概率。

二、 DCGAN深度卷积GAN 论文《unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》 论文地址:https://arxiv.org/pdf/1511.06434.pdf DCGAN使用卷积层代替了全连接层,采用带步长的卷积代替上采样,更好的提取图像特征,判别器和生成器对称存在,极大的提升了GAN训练的稳定性和生成结果的质量。判别器中采用leakyRELU而不是RELU来防止梯度稀疏,而生成器仍然采用RELU,但输出层采用tanh。本文采用adam优化器训练GAN,设置学习率为0.0002。 DCGAN的生成器结构如下,通过卷积的方式将100维的随机噪声输入映射成一张图像,

一些生成的图像如下:

DCGAN并没有从根本上解决GAN训练不稳定的问题,训练的时候仍需要小心的平衡生成器和判别器的训练,往往是训练一个多次,训练另一个一次。 三、WGAN 论文《Wasserstein GAN》 论文地址:https://arxiv.org/pdf/1701.07875.pdf WGAN主要是从损失函数的角度对GAN进行了改进,这种改进即使在全连接层也能得到很好的表现结果,在理论上给出了GAN训练不稳定的原因,就是之前的损失函数交叉熵(JS散度)不适合衡量具有不相交部分的分布之间的距离,而使用文章提出的Wassertein距离来衡量数据分布和真实数据分布之间的距离,理论上解决了训练不稳定的问题,不再需要小心平衡生成器和判别器的训练。同时也解决了模式崩溃问题(collapse mode)(生成器倾向于生成一些有把握但相似的图片,而不敢轻易地尝试去生成没把握的新图片,从而缺乏多样性的情况),使得生成器生成结果更加多样。 具体的改进有: 1) 判别器最后一层去掉了sigmoid, 2) 生成器和判别器的损失函数loss不含有log 3) 在梯度更新后的权重强制截断到一定的范围[-0.01,0.01],来满足论文中提到的lipschitz连续性条件(在样本空间中,要求判别器函数D(x)梯度值不大于一个有限的常数K) 4) 论文提出采用其他SGD,RMSprop优化器也可以,不再使用基于动量的优化算法(momentum和Adam) 5) 提出了一个评价指标来表示GAN训练的好坏 训练过程如下:

原目标函数的问题: 原始GAN的目标函数为:

当固定生成器时,最优的判别器是

当判别器最优时,生成器的优化目标为

可以写成JS散度的形式

上述有关JS散度的目标函数会带来梯度消失的问题,如果判别器训练得太好,生成器就无法得到足够的梯度继续优化,而如果判别器训练得太弱,指示作用不显著,同样不能让生成器进行有效的学习。这样一来,判别器的训练火候就非常难把控,这就是GAN训练难的根源。 四、WGAN-GP 论文《Improved Training of Wasserstein GANs》 论文地址:https://arxiv.org/pdf/1704.00028.pdf WGAN有时候也会伴随样本质量低、难以收敛等问题,WGAN-GP是WGAN的改进版,主要改进Lipschitz连续性限制条件,之前是直接采用weight clipping将权重裁剪到一定范围[-0.01,0.01],但这样过于简单粗暴,会导致模型建模能力弱化、梯度消失或爆炸。WGAN-GP引入了Gradient Penalty

GP项的设计逻辑是:当且仅当一个可微函数的梯度范数(gradient norm)在任意处都不超过1时,该函数满足1-Lipschitz条件。从理论上最优Critic的梯度范数应当处处接近1,对Lipschitz条件的影响不大,同时从实验中发现two-sided penalty效果比one-sided penalty略好。 详细的算法流程如下:

WGAN-GP在训练的速度和生成样本的质量上,都略胜WGAN一筹。由于是对每个batch中的每一个样本都做了梯度惩罚(随机数的维度是(batchsize,1)),因此判别器中不能使用batch norm,但是可以使用其他的normalization方法,比如Layer Normalization、Weight Normalization和Instance Normalization,论文中使用了Layer Normalization,weight normalization效果也是可以的。

五、LSGAN最小二乘GAN 论文《Least Squares Generative Adversarial Networks》 论文地址:https://arxiv.org/pdf/1611.04076.pdf LSGAN采用最小二乘损失函数代替原始GAN的交叉熵损失函数,主要针对原始GAN生成器生成的图像质量不高和训练过程不稳定两个问题,作者认为以交叉熵作为损失,会使得生成器不会再优化那些被判别器识别为真实图片的生成图片,即使这些生成图片距离判别器的决策边界仍然很远,也就是距真实数据比较远。这意味着生成器的生成图片质量并不高。为什么生成器不再优化优化生成图片呢?是因为生成器已经完成我们为它设定的目标——尽可能地混淆判别器,所以交叉熵损失已经很小了。而最小二乘就不一样了,要想最小二乘损失比较小,在混淆判别器的前提下还得让生成器把距离决策边界比较远的生成图片拉向决策边界。

损失函数定义如下

sigmoid交叉熵损失很容易就达到饱和状态(饱和是指梯度为0),而最小二乘损失只在一点达到饱和,因此LSGAN使得GAN的训练更加稳定。

一些生成结果如下:

六、BEGAN(Boundary Equilibrium GAN)边界均衡GAN 论文《BEGAN: Boundary Equilibrium Generative Adversarial Networks》 论文地址:https://arxiv.org/pdf/1703.10717.pdf BEGAN是一种基于均衡思想的改进,其不需要训练的trick,使用标准的训练步骤就可以快速稳定的收敛,使得判别器和生成器在训练过程中保持平衡,BEGAN使用了自动编码器(auto-encoder)作为判别器,判别器的输入是图片,输出是经过编码解码后的图片,使用重构误差来衡量样本是生成的还是真实的,尽可能匹配误差的分布而不是样本的分布,如果误差的分布之间足够接近,那么真实样本之间的分布也会足够接近,最后生成的图像质量也不会差。BEGAN提供了一个超参数,这个超参数可以在图像的多样性和生成质量之间做均衡,提出了一种收敛程度的估计。 网络结构为:

重构误差L(v)为:

设真实样本的重构误差分布u1的均值为m1,生成样本的重构误差分布u2的均值为m2,采用EM距离来衡量该距离

它的下界为

BEGAN中G和D对应的损失函数为:

系统达到均衡时应该满足

引入超参数diversity ratio来进行trade-off,当该值 比较小时,D的目标是最小化真实样本的重构误差,相对来说,而对生成样本的关注较少,这将导致生成样本的多样性降低。

BEGAN的目标为

一些生成结果如下:

当改变超参数时模型生成结果的多样性和清晰度在变化,值越小图像越清晰但多样性降低,值越大图像质量下降但多样性提高了。

上图显示了随着模型的逐渐收敛,生成图像的质量不断提高。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python编程和深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【猫咪生成器】DCGAN、WGAN等4种生成对抗网络猫咪图像对比
【新智元导读】 作者用 DCGAN,WGAN,WGAN-GP 和 LSGAN 等生成对抗网络(GAN),使用拥有1万张猫的图片的 CAT 数据集做“生成猫咪的脸”的实验。结果有非常好的,也有不够好的,作者进行了分析并提出一些改进的方法。这个研究被GAN的提出者 Ian Goodfellow,Andrew Ng 等人在推特推荐,可以说是非常有趣的深度学习应用了。 我尝试使用生成对抗网络(GAN)来生成猫的脸。我想分别以较低和较高的分辨率使用 DCGAN,WGAN,WGAN-GP 以及 LSGAN。使用的数据集
新智元
2018/03/27
2.2K1
【猫咪生成器】DCGAN、WGAN等4种生成对抗网络猫咪图像对比
GAN、DCGAN、WGAN、SRGAN 演变与改进
来源:信息网络工程研究中心本文共1000字,建议阅读5分钟本文带你了解GAN、DCGAN、WGAN、SRGAN。 GAN 生成网络接收一个随机噪声,生成逼真图像; 判别网络接收一个图像,生成该图像是真实的概率(0~1); GAN网络中存在两个不同的网络,训练方式采用的是对抗训练方式,其中G的梯度更新信息来自于判别器D,而不是来自数据样本。 GAN不适合处理离散形式的数据,比如文本。 使用JS散度作为距离公式 DCGAN DCGAN(deep convolutional generative adversa
数据派THU
2022/05/25
6840
GAN、DCGAN、WGAN、SRGAN 演变与改进
GAN的发展系列二(PGGAN、SinGAN)
在前面的文章里我们已经介绍了GAN生成对抗网络的入门和一些GAN系列,在之后的专辑里会继续介绍一些比较经典的GAN。
Minerva
2020/06/16
3K0
GAN的发展系列二(PGGAN、SinGAN)
训练GAN,你应该知道的二三事
笔者接触 GAN 也有一段时间了,从一开始的小白,到现在被 GANs 虐了千百遍但依然深爱着 GANs 的小白,被 GANs 的对抗思维所折服,被 GANs 能够生成万物的能力所惊叹。我觉得 GANs 在某种程度上有点类似于中国太极,『太极生两仪,两仪生四象』,太极阐明了宇宙从无极而太极,以至万物化生的过程,太极也是讲究阴阳调和。(哈哈,这么说来 GANs 其实在中国古代就已经有了发展雏形了。)
机器之心
2019/05/22
1.3K0
GAN系列学习(2)——前生今世
作者:刘威威 编辑:李文臣 本文是GAN系列学习--前世今生第二篇,在第一篇中主要介绍了GAN的原理部分,在此篇文章中,主要总结了常用的GAN包括DCGAN,WGAN,WGAN-GP,LSGAN-BEGAN的详细原理介绍以及他们对GAN的主要改进,并推荐了一些Github代码复现链接。 本文旨在对GAN的变种做一些梳理工作,详细请看下文。 3 1.DCGAN 【Paper】 : http://arxiv.org/abs/1511.06434 【github】 : https
机器学习算法工程师
2018/03/06
1.2K0
GAN系列学习(2)——前生今世
GAN!生成对抗网络GAN全维度介绍与实战
生成对抗网络(GAN)是深度学习的一种创新架构,由Ian Goodfellow等人于2014年首次提出。其基本思想是通过两个神经网络,即生成器(Generator)和判别器(Discriminator),相互竞争来学习数据分布。
TechLead
2023/10/21
3.9K0
GAN!生成对抗网络GAN全维度介绍与实战
这份攻略帮你「稳住」反复无常的 GAN
生成对抗网络(GAN)是一类非常强大的神经网络,具有非常广阔的应用前景。GAN 本质上是由两个相互竞争的神经网络(生成器和判别器)组成的系统。
机器之心
2019/04/29
1.1K0
这份攻略帮你「稳住」反复无常的 GAN
ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
【新智元导读】本文来自ICCV 2017的Talk:如何训练GAN,FAIR的研究员Soumith Chintala总结了训练GAN的16个技巧,例如输入的规范化,修改损失函数,生成器用Adam优化,使用Sofy和Noisy标签,等等。这是NIPS 2016的Soumith Chintala作的邀请演讲的修改版本,而2016年的这些tricks在github已经有2.4k星。 ICCV 2017 slides:https://github.com/soumith/talks/blob/master/2017
新智元
2018/03/21
1.7K0
ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
生成式对抗网络模型综述
原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。
SIGAI学习与实践平台
2018/07/11
1.4K0
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
最常见的评价GAN的方法就是主观评价。主观评价需要花费大量人力物力,且存在以下问题:
JOYCE_Leo16
2024/04/16
3580
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
万字综述之生成对抗网络(GAN)
前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇。可是在深度学习,GAN 领域,其进展都是以月来计算的,感觉那两篇综述有些老了。
机器之心
2019/04/29
3.4K0
万字综述之生成对抗网络(GAN)
新手指南综述 | GAN模型太多,不知道选哪儿个?
今天看到这么一个论文题目“A Novel Framework for Selection of GANs for an Application ”,这名字有、6啊,好久没有出厉害的GAN的变体了吧?新颖的GAN框架?决定下载下来看!引入眼帘的是摘要:
公众号机器学习与AI生成创作
2020/04/27
9500
WGAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
https://www.zhihu.com/question/52602529/answer/158727900
CreateAMind
2018/07/24
3.2K0
WGAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
生成对抗网络(GAN)系列:WGAN与金融时序(附代码)
过拟合是我们试图将机器学习技术应用于时间序列时遇到的问题之一。出现这个问题是因为我们使用我们所知道的唯一时间序列路径来训练我们的模型:已实现的历史。
量化投资与机器学习微信公众号
2020/06/29
4.3K1
生成对抗网络(GAN)系列:WGAN与金融时序(附代码)
生成对抗网络(GANs)最新家谱:为你揭秘GANs的前世今生
作者:Guim Perarnau 编译:Katherine Hou、朝夕、Katrine Ren、Shan LIU、笪洁琼、钱天培 生成对抗网络(GAN)一经提出就风光无限,更是被Yann Lecun誉为“十年来机器学习领域最有趣的想法”。 GAN“左右互搏”的理念几乎众所周知,但正如卷积神经网络(CNN)一样,GAN发展至今已经衍生出了诸多变化形态。 今天,文摘菌就来为大家盘点一下GAN大家庭中各具特色的成员们。 他们的名单如下: 1.DCGANs 2.Improved DCGANs 3.Conditio
大数据文摘
2018/05/24
7080
这些资源你肯定需要!超全的GAN PyTorch+Keras实现集合
选自GitHub 作者:eriklindernoren 机器之心编译 参与:刘晓坤、思源、李泽南 生成对抗网络一直是非常美妙且高效的方法,自 14 年 Ian Goodfellow 等人提出第一个生成对抗网络以来,各种变体和修正版如雨后春笋般出现,它们都有各自的特性和对应的优势。本文介绍了主流的生成对抗网络及其对应的 PyTorch 和 Keras 实现代码,希望对各位读者在 GAN 上的理解与实现有所帮助。 PyTorch 实现地址:https://github.com/eriklindernoren/
机器之心
2018/05/08
9900
这些资源你肯定需要!超全的GAN PyTorch+Keras实现集合
通俗|令人拍案叫绝的Wasserstein GAN 及代码(WGAN两篇论文的中文详细介绍)
在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文Wassertein GAN 却在 Reddit 的 Machine Learning 频道火了,连Goodfellow都在帖子里和大家热烈讨论,这篇论文究竟有什么了不得的地方呢?
CreateAMind
2018/07/25
2.7K0
通俗|令人拍案叫绝的Wasserstein GAN 及代码(WGAN两篇论文的中文详细介绍)
教程 | 萌物生成器:如何使用四种GAN制造猫图
选自WordPress 作者:Alexia Jolicoeur-Martineau 机器之心编译 参与:李泽南 生成对抗生成网络(GAN)被认为是近年来机器学习界的一大发现,在它的基础上开发各种新算法是很多科研人员努力的方向。近日,毕业于魁北克大学的 Alexia Jolicoeur-Martineau 开始尝试使用猫咪图片来训练不同的对抗生成网络,并把代码和结果公开。目前他已经测试了四种不同 GAN 的效果,Meow Generator 引起了众多学者的兴趣。有人打趣地评论道:由于网络中存在大量猫图,这种
机器之心
2018/05/08
9970
教程 | 萌物生成器:如何使用四种GAN制造猫图
一文看尽深度学习中的生成对抗网络 | CVHub带你看一看GANs架构发展的8年
生成对抗网络 (Generative Adversarial Networks, GANs) 在过去几年中被广泛地研究,其在图像生成、图像转换和超分辨率等领域取得了显著的进步。到目前为止,已经提出了大量基于GANs的相关工作和综述。本文基于柏林圣三一大学计算机科学与统计学院的王正蔚博士与字节跳动AI实验室联合发表的一篇综述[1]为基础,详细的解读GANs的来龙去脉,同时为大家介绍近期一些相关工作,中间也会穿插一些笔者的见解。最后,本文也将列出一些可探索的未来研究方向,希望能给予读者一些启发。
AIWalker
2021/07/05
1.6K0
一文看尽深度学习中的生成对抗网络 | CVHub带你看一看GANs架构发展的8年
GAN最新进展:8大技巧提高稳定性
生成对抗网络 (GAN) 是一类功能强大的神经网络,具有广泛的应用前景。GAN 本质上是由两个神经网络组成的系统——生成器 (Generator) 和鉴别器 (Discriminator)——二者相互竞争。
新智元
2019/03/07
1.2K0
GAN最新进展:8大技巧提高稳定性
推荐阅读
相关推荐
【猫咪生成器】DCGAN、WGAN等4种生成对抗网络猫咪图像对比
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档