Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ICCV 2017:训练GAN的16个技巧,2400+星(PPT)

ICCV 2017:训练GAN的16个技巧,2400+星(PPT)

作者头像
新智元
发布于 2018-03-21 07:22:27
发布于 2018-03-21 07:22:27
1.6K0
举报
文章被收录于专栏:新智元新智元
【新智元导读】本文来自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-ICCV_Venice/How_To_Train_a_GAN.pdf

NIPS2016:https://github.com/soumith/ganhacks

训练GAN的16个trick

# 1:规范化输入

  • 将输入图像规范化为-1到1之间
  • 生成器最后一层的输出使用tanh函数(或其他bounds normalization)

#2:修改损失函数(经典GAN)

  • 在GAN论文里人们通常用 min (log 1-D) 这个损失函数来优化G,但在实际训练的时候可以用max log D

-因为第一个公式早期有梯度消失的问题

- Goodfellow et. al (2014)

  • 在实践中:训练G时使用反转标签能工作得很好,即:real = fake, fake = real

一些GAN变体

【TensorFlow】https://github.com/hwalsuklee/tensorflow-generative-model-collections

【Pytorch】https://github.com/znxlwm/pytorch-generative-model-collections

#3:使用一个具有球形结构的噪声z

  • 在做插值(interpolation)时,在大圆(great circle)上进行
  • Tom White的论文“Sampling Generative Networks”

- https://arxiv.org/abs/1609.04468

#4: BatchNorm

  • 一个mini-batch里面必须保证只有Real样本或者Fake样本,不要把它们混起来训练
  • 如果不能用batchnorm,可以用instance norm

#5:避免稀疏梯度:ReLU, MaxPool

  • GAN的稳定性会因为引入了稀疏梯度受到影响
  • LeakyReLU很好(对于G和D)
  • 对于下采样,使用:Average Pooling,Conv2d + stride
  • 对于上采样,使用:PixelShuffle, ConvTranspose2d + stride

-PixelShuffle 论文:https://arxiv.org/abs/1609.05158

#6:使用Soft和Noisy标签

  • Label平滑,也就是说,如果有两个目标label:Real=1 和 Fake=0,那么对于每个新样本,如果是real,那么把label替换为0.7~1.2之间的随机值;如果样本是fake,那么把label替换为0.0~0.3之间的随机值。
  • 训练D时,有时候可以使这些label是噪声:偶尔翻转label

- Salimans et. al. 2016

#7:架构:DCGANs / Hybrids

  • 能用DCGAN就用DCGAN,
  • 如果用不了DCGAN而且没有稳定的模型,可以使用混合模型:KL + GAN 或 VAE + GAN
  • WGAN-gp的ResNet也很好(但非常慢)

- https://github.com/igul222/improved_wgan_training

  • width比depth更重要

#8:借用RL的训练技巧

  • Experience replay
  • 对于deep deterministic policy gradients(DDPG)有效的技巧
  • 参考Pfau & Vinyals (2016)的论文

#9:优化器:ADAM

  • 优化器用Adam(Radford et. al. 2015)
  • 或者对D用SGD,G用Adam

#10:使用 Gradient Penalty

  • 使梯度的norm规范化
  • 对于为什么这一点有效,有多个理论(WGAN-GP, DRAGAN, 通过规范化使GAN稳定)

#11:不要通过loss statistics去balance G与D的训练过程(经典GAN)

#12:如果你有类别标签,请使用它们

  • 如果还有可用的类别标签,在训练D判别真伪的同时对样本进行分类

#13:给输入增加噪声,随时间衰减

  • 给D的输入增加一些人工噪声(Arjovsky et. al., Huszar, 2016)
  • 给G的每一层增加一些高斯噪声(Zhao et. al. EBGAN)

#14:多训练判别器D

  • 特别是在加噪声的时候

#15:避开离散空间

  • 将生成结果作为一个连续预测

#16:离散变量

  • 使用一个嵌入层
  • 给图像增加额外通道
  • 保持嵌入的维度低和上采样以匹配图像通道的大小

总结:

  • GAN模型的稳定性在提升
  • 理论研究有所进展
  • 技巧只是权宜之计

时间线——GAN模型的稳定性

PPT下载:https://github.com/soumith/talks/blob/master/2017-ICCV_Venice/How_To_Train_a_GAN.pdf

参考:https://github.com/soumith/ganhacks

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

本文分享自 新智元 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
How to Train a GAN? Tips and tricks to make GANs work
While research in Generative Adversarial Networks (GANs) continues to improve the fundamental stability of these models, we use a bunch of tricks to train them and make them stable day to day.
CreateAMind
2018/07/25
1.5K0
How to Train a GAN? Tips and tricks to make GANs work
训练GAN,你应该知道的二三事
笔者接触 GAN 也有一段时间了,从一开始的小白,到现在被 GANs 虐了千百遍但依然深爱着 GANs 的小白,被 GANs 的对抗思维所折服,被 GANs 能够生成万物的能力所惊叹。我觉得 GANs 在某种程度上有点类似于中国太极,『太极生两仪,两仪生四象』,太极阐明了宇宙从无极而太极,以至万物化生的过程,太极也是讲究阴阳调和。(哈哈,这么说来 GANs 其实在中国古代就已经有了发展雏形了。)
机器之心
2019/05/22
1.3K0
[GAN学习系列] 初始GAN
要说最近几年在深度学习领域最火的莫过于生成对抗网络,即 Generative Adversarial Networks(GANs)了。它是 Ian Goodfellow 在 2014 年发表的,也是这四年来出现的各种 GAN 的变种的开山鼻祖了,下图表示这四年来有关 GAN 的论文的每个月发表数量,可以看出在 2014 年提出后到 2016 年相关的论文是比较少的,但是从 2016 年,或者是 2017 年到今年这两年的时间,相关的论文是真的呈现井喷式增长。
kbsc13
2019/08/16
9480
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)——前生今世
【猫咪生成器】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.1K1
【猫咪生成器】DCGAN、WGAN等4种生成对抗网络猫咪图像对比
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
最常见的评价GAN的方法就是主观评价。主观评价需要花费大量人力物力,且存在以下问题:
JOYCE_Leo16
2024/04/16
3260
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)
上一篇文章--[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)中,我们先介绍了对于图像修复的背景,需要利用什么信息来对缺失的区域进行修复,以及将图像当做概率分布采样的样本来看待,通过这个思路来开始进行图像的修复。
kbsc13
2019/08/16
7320
C# 深度学习:对抗生成网络(GAN)训练头像生成模型
电子书仓库:https://github.com/whuanle/cs_pytorch
郑子铭
2025/03/27
640
C# 深度学习:对抗生成网络(GAN)训练头像生成模型
深度学习界明星:生成对抗网络与Improving GAN
生成对抗网络,根据它的名字,可以推断这个网络由两部分组成:第一部分是生成,第二部分是对抗。这个网络的第一部分是生成模型,就像之前介绍的自动编码器的解码部分;第二部分是对抗模型,严格来说它是一个判断真假图片的判别器。生成对抗网络最大的创新在此,这也是生成对抗网络与自动编码器最大的区别。简单来说,生成对抗网络就是让两个网络相互竞争,通过生成网络来生成假的数据,对抗网络通过判别器判别真伪,最后希望生成网络生成的数据能够以假乱真骗过判别器。过程如图1所示。
博文视点Broadview
2020/06/11
4130
深度学习界明星:生成对抗网络与Improving GAN
[读书笔记]:撩一撩 Improved WGAN《多图慎入》
至于为什么第一次写WGAN呢,其实我也不知道为什么,可能是刚好最近再看吧,生成效果也不错。WGAN的作者们前后一共写了三篇论文,前两篇知乎上有人写了,写的很好很仔细,我开始也是看的那个,获益匪浅, 建议看一下,当然原文还是要看的。今天要说的是第三篇,作者propose了一个新的method,用来对之前WGAN的改进。论文中声称比之前的wgan converges 更快并且generates 图像质量更高。好了,废话不多说,下面进入正文。 ==说一句哈,这是我一次写成的,限于水平有限,说的不对的地方,大神请轻
用户1622570
2018/04/11
1.8K0
[读书笔记]:撩一撩 Improved WGAN《多图慎入》
资源 | 生成对抗网络新进展与论文全集
选自GitHub 参与:蒋思源、吴攀 生成对抗网络(GAN)是近段时间以来最受研究者关注的机器学习方法之一,深度学习泰斗 Yann LeCun 就曾多次谈到 这种机器学习理念的巨大价值和未来前景。在本文中,机器之心总结了 GitHub 上两篇关于 GAN 的资源,其中一篇介绍了 GAN 的一些引人关注的新理论和实践(如 Wasserstein GAN),另一篇则集中展示了大量 GAN 相关的论文。 以下是两篇原文的链接: GAN 理论&实践的新进展:https://casmls.github.io/gene
机器之心
2018/05/07
7750
资源 | 生成对抗网络新进展与论文全集
GAN!生成对抗网络GAN全维度介绍与实战
生成对抗网络(GAN)是深度学习的一种创新架构,由Ian Goodfellow等人于2014年首次提出。其基本思想是通过两个神经网络,即生成器(Generator)和判别器(Discriminator),相互竞争来学习数据分布。
TechLead
2023/10/21
3.3K0
GAN!生成对抗网络GAN全维度介绍与实战
GAN应用情况调研
在此之前呢,先推荐大家去读一下一篇新的文章LS-GAN(Loss-sensitive GAN)[1]。
CreateAMind
2018/07/24
6510
GAN应用情况调研
GAN生成图像综述
生成对抗网络(Generative adversarial network, GAN)[1]自2014年由Ian Goodfellow等人提出后,就越来越受到学术界和工业界的重视。而随着GAN在理论与模型上的高速发展,它在计算机视觉、自然语言处理、人机交互等领域有着越来越深入的应用,并不断向着其它领域继续延伸。其中,GAN在图像生成上取得了巨大的成功,这取决于GAN在博弈下不断提高建模能力,最终实现以假乱真的图像生成。
SIGAI学习与实践平台
2019/05/07
2.1K0
GAN生成图像综述
教程 | 萌物生成器:如何使用四种GAN制造猫图
选自WordPress 作者:Alexia Jolicoeur-Martineau 机器之心编译 参与:李泽南 生成对抗生成网络(GAN)被认为是近年来机器学习界的一大发现,在它的基础上开发各种新算法是很多科研人员努力的方向。近日,毕业于魁北克大学的 Alexia Jolicoeur-Martineau 开始尝试使用猫咪图片来训练不同的对抗生成网络,并把代码和结果公开。目前他已经测试了四种不同 GAN 的效果,Meow Generator 引起了众多学者的兴趣。有人打趣地评论道:由于网络中存在大量猫图,这种
机器之心
2018/05/08
9680
教程 | 萌物生成器:如何使用四种GAN制造猫图
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
Minerva
2020/06/16
15.3K0
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
这些资源你肯定需要!超全的GAN PyTorch+Keras实现集合
选自GitHub 作者:eriklindernoren 机器之心编译 参与:刘晓坤、思源、李泽南 生成对抗网络一直是非常美妙且高效的方法,自 14 年 Ian Goodfellow 等人提出第一个生成对抗网络以来,各种变体和修正版如雨后春笋般出现,它们都有各自的特性和对应的优势。本文介绍了主流的生成对抗网络及其对应的 PyTorch 和 Keras 实现代码,希望对各位读者在 GAN 上的理解与实现有所帮助。 PyTorch 实现地址:https://github.com/eriklindernoren/
机器之心
2018/05/08
9570
这些资源你肯定需要!超全的GAN PyTorch+Keras实现集合
C# 深度学习:对抗生成网络(GAN)训练头像生成模型
本教程将通过一个示例介绍生成对抗网络(DCGAN),在教程中,我们将训练一个生成对抗网络 (GAN) 模型来生成新的名人头像。这里的大部分代码来自 pytorch/examples 中的 DCGAN 实现,然后笔者通过 C# 移植了代码实现,本文档将对该实现进行详尽的解释,并阐明该模型的工作原理和原因,阅读本文不需要 GAN 的基础知识,原理部分比较难理解,不用将精力放在这上面,主要是根据代码思路走一遍即可。
痴者工良
2025/03/26
810
C# 深度学习:对抗生成网络(GAN)训练头像生成模型
生成对抗网络(GAN)算法原理简述
2014年Ian Goodfellow在研究使用生成模型自动生成图片的过程中,发现传统神经网络方法效果并不理想,随后缘于一个偶然的灵感,发明了生成对抗网络(GAN),在其实验数据的图片生成上取得了非常理想的效果。从此,这种全新的技术作为训练生成模型的新框架,迅速风靡人工智能各个领域并取得不少突破。
灯塔大数据
2020/09/15
6.8K0
生成对抗网络(GAN)算法原理简述
学界 | Goodfellow点赞的相对鉴别器:表征GAN中缺失的关键因素
生成对抗网络(GAN)[Hong et al., 2017] 是生成模型的一大类别,两个竞争的神经网络——鉴别器 D 和生成器 G 在其中玩游戏。训练 D 用于分辨数据的真假,而 G 用于生成可以被 D 误识别为真数据的假数据。在 Goodfellow 等 [2014] 提出的原始 GAN(我们称之为标准 GAN,即 SGAN)中,D 是分类器,用于预测输入数据为真的概率。如果 D 达到最佳状态,SGAN 的损失函数就会近似于 JS 散度(Jensen–Shannon divergence,JSD)[Goodfellow et al., 2014]。
机器之心
2018/07/26
8050
学界 | Goodfellow点赞的相对鉴别器:表征GAN中缺失的关键因素
推荐阅读
相关推荐
How to Train a GAN? Tips and tricks to make GANs work
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文