专栏名称: 新智元
智能+中国主平台,致力于推动中国从互联网+迈向智能+新纪元。重点关注人工智能、机器人等前沿领域发展,关注人机融合、人工智能和机器人革命对人类社会与文明进化的影响,领航中国新智能时代。
目录
相关文章推荐
爱可可-爱生活  ·  【[2.6k星]PromptWizard:微 ... ·  2 天前  
新智元  ·  Ilya又回来了!神秘初创SSI估值200亿 ... ·  3 天前  
黄建同学  ·  推荐!直接戳中文翻译:网页链接。 ... ·  4 天前  
爱可可-爱生活  ·  【[37星]Ola:打破多模态边界,实现图像 ... ·  4 天前  
51好读  ›  专栏  ›  新智元

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

新智元  · 公众号  · AI  · 2017-10-29 12:59

正文

【AI WORLD 2017世界人工智能大会倒计时 10

“AI达摩”齐聚世界人工智能大会,AI WORLD 2017议程嘉宾重磅发布

在2017年11月8日在北京国家会议中心举办的AI World 2017世界人工智能大会上,我们邀请到 阿里巴巴副总裁、iDST副院长华先胜 旷视科技Face++首席科学家、旷视研究院院长孙剑博士, 腾讯优图实验室杰出科学家贾佳亚教授,以及 硅谷知名企业家、IEEE Fellow Chris Rowen ,共论 人脸识别等前沿计算机视觉技术


抢票链接: http://www.huodongxing.com/event/2405852054900?td=4231978320026

大会官网: http://www.aiworld2017.com

新智元编译

作者:Soumith Chintala等

编译:马文

【新智元导读】 本文来自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:避开离散空间

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










请到「今天看啥」查看全文