Ian Goodfellow:生成对抗网络 GAN 就是强化学习(超全资料)

简介: 今天,Ian Goodfellow开展了一场有关生成对抗网络(GAN)的最新AMA问答,从他小时候如何学习编程,如何想出GAN这个idea,到具体的技术和应用,Goodfellow都作出了专业而且诚恳的回答。

关于GAN:想法来自酒后与同行的争论

问:有传言说你是在一家小酒馆里想出了GAN的idea,是这样吗?

Ian Goodfellow :这是真事,不仅仅是传言。我之前在好几次采访中都讲过这个故事了。

参考:专访 Ian Goodfellow:欲在谷歌打造 GAN 团队,用假数据训练真模型

问:在训练GAN方面似乎有两三个阵营(camp),你和在OpenAI、谷歌的人,Mescheder, Sebastian Nowozin和微软研究院的人,以及其他。在这些阵营中你有看到什么相似点吗?

Ian Goodfellow:实际上有更多阵营。FAIR/NYU也是重镇,实际上是FAIR/NYU最先把GAN带进了我们的视野(LAPGAN)。那是第一次GAN生成了逼真的高清图像,也是第一次GAN得到媒体曝光,等等。另外一个重要阵营是伯克利+英伟达,他们专注超高清逼真图像和视频,无监督翻译,等等。我不太清楚你用“阵营”(camps)想表达什么,如果是说用不同的思路和方法在研究GAN,那么确实如此。但“阵营”一般多指相互敌对的团队,在这里并不适用。

要从根本上重新考虑使用的策略,现有神经元难以抵御对抗攻击

问:问个有点偏的问题——有人认为重新思考深度学习模型中“神经元”的工作方式,是应对对抗样本的唯一方法,你怎么看?在以前的演讲中你提到过,这种通用样本的存在是因为这些模型的“线性”(对应之前人们说的“非线性”)。继续采用使用了这些神经元的模型,在方向性上说会不会是错误的?或者说,好好选择激活函数,做好数据增强/防御,能从整体上解决这个问题?

Ian Goodfellow:我不认为这个问题有点偏,因为GAN的判别器需要具有鲁棒性,应对生成器的对抗攻击。同时,我确实认为我们当前使用的神经元,很难在应对对抗样本方面具有鲁棒性。但我并不认为这是唯一有问题的地方。一些最新的工作,比如(https://arxiv.org/abs/1801.02774)表明,要让图像分类安全可靠,我们真的需要从根本上重新考虑我们使用的策略,而不仅仅是训练的模型。

胶囊网络(Capsule networks)能比普通模型更好的应对对抗攻击(https://openreview.net/forum?id=HJWLfGWRb)。目前还不清楚这是不是最好的防御方法——我还没看到有使用最先进的攻击方法来一对一测试模型可靠性的工作。

问:定量评估GAN的指标是什么?

Ian Goodfellow:这取决于你想用GAN来做什么。如果你想将其用于半监督式学习,请使用测试集精度作为评估指标,如果你想使用它来生成高质量的图像(例如超分辨率),那么可能需要使用人类评分员来评估。如果你只是想得到一个通用的自动化的质量得分,那么我认为Frechet Inception Distance(https://arxiv.org/abs/1706.08500)可能是最好的,尤其是对于class-specific(https://arxiv.org/pdf/1802.05957.pdf)的模型来说。这些指标本身现在仍是一个正在进行的重要的研究领域。

问:有没有办法将潜变量(latent variables)映射到fake image的部分?换句话说,是否可以这样说:这2个变量改变图像的背景颜色,这些x变量修改了形状,等等?

Ian Goodfellow:这不是总是可行的,但你可以训练模型这样表现。例如InfoGAN:https://arxiv.org/abs/1606.03657

ArXiv让人绕过同行评议,降低深度学习论文质量

问:1)如何在GAN和其他生成模型,比如VAE和FVBN(NADE, MADE, PixelCNN)之间选择?选择的时候有什么比较标准吗?2)像Librarian/Fermat's Library这样的在线文库对于ML/DL论文来说重要吗?现在ML/DL论文一般都是直接发表在arXiv。

Ian Goodfellow:我在Fermat’s Library这里做AMA,就是为了推广这些工具,我认为它们很重要,也值得更多人重视。ArXiv现在基本成了绕过同行评议的捷径,让深度学习论文的信噪比骤降。现在仍然有很多优秀的深度学习研究在进行,但同样也存在大量的低质量工作。如今就连最好的那些工作也是好坏掺半——有很好的想法,但却用宣传推广的套路在写,跟其他工作的比较也不准确,等等。这都是因为这些论文没有经过同行评议。

至于方法选择,如果你想生成连续变量的真实样本,做无监督翻译(例如GycleGAN),或者做半监督学习,那么你很可能用得着GAN。如果你想生成的是离散标记(token),你或许还用不着GAN,但我们也在不断改进。如果你想要的是最大似然,就不要用GAN了。

关于GAN和其他方法:GAN基本上可以说就是强化学习

问:GAN与强化学习(RL)原则之间有什么相似之处(如果有的话)?我对这两者都不是专家(只有非常基本的了解),我觉得GAN的“generator - discriminator”的想法和RL的“agent - environment interaction”有着紧密的联系。是这样吗?

Ian Goodfellow:我也不是RL的专家,但我认为GAN是使用RL来解决生成建模问题的一种方式。GAN的不同之处在于,奖励函数对行为是完全已知和可微分的,奖励是非固定的,以及奖励是agent的策略的一个函数。但我认为GAN基本上可以说就是RL。

问:有测试生成模型可迁移性的论文或研究吗?例如我有一个生成狗或者猫的模型,之后想用早一些的层生成狼和老虎。

Ian Goodfellow:我不知道,但肯定有。对于生成器来说,可能偏后期的层(靠近输出的)更容易共享。

关于GAN的应用:GAN适用于半监督学习问题

问:GAN能用于话题建模(Topic Modeling)吗?除了生成建模(目前主要用于图像),还有其他领域使用GAN框架吗?

Ian Goodfellow:我猜应该有,但我不知道具体的。文档是离散token,比如文字、单词,而GAN需要计算生成器的输出的梯度,因此在有连续输出的地方才能很好的工作。或许你可以用对抗自编码器,或者AVB,在这里生成器实际上是编码器,能够输出连续的代码。这对于文档建模有很大帮助,因为能对topics给出一个分布式表示。

问:GAN在基因组学里有什么应用?

Ian Goodfellow:我不太了解基因组学,但我认为GAN这类的模型可以用于半监督学习。我想在基因组学中,未标记的数据应该比有标记的更多,利用大量的未标记数据从少量标记数据中学习的话,半监督学习会很有帮助。这方面Tim Salimans提出了一些方法,在MNIST、SVHN等基准上特别好用:https://arxiv.org/abs/1606.03498

但需要注意,我们发现其他半监督方法实际上并不怎么好用(https://openreview.net/forum?id=ByCZsFyPf ),但半监督GAN并没有接受这些测试。

11岁学会编程,10篇最好的GAN论文推荐

问:您最近在Twitter上列举了你觉得最好的10论文GAN论文。你可以写一篇博客文章,介绍从GAN的初学者到GAN专家都适合的所有论文和其他资源吗?

Ian Goodfellow:我可能没有时间做这件事情,而且就算写一篇这样的文章,它会很快就过时。

我在2016年12月写了关于GAN的长文教程:NIPS 2016 Tutorial: Generative Adversarial Networks (https://arxiv.org/abs/1701.00160)

里面的许多想法在今天仍然有价值,尽管这个教程没有包含2017年以来的最新模型,例如Progressive GANs,spectrally normalized GANs, GANs with projection discriminator等等。

问:你是怎样提高你的编程技巧,以便快速尝试各种疯狂的想法,例如GANs?有没有推荐的编程技能的书?以及请推荐一些TensorFlow学习或深度学习框架的书籍。谢谢。

Ian Goodfellow:

回答推荐书籍:我自己学习现代深度学习编程的路径是相当间接的(在我开始使用Python之前,我已经学会了各种C,assembly,web等编程语言),因此我不知道对于今天的学习者来说最好的方法是什么。

在编程能力方面,对我来说一个非常重要的转折点是在斯坦福大学Jerry Cain开的CS107课程,我记得是在2006年春季学习了这门课程。在那之前,我只是一名编程爱好者,系统工作的时候我感到兴奋,但很多时候,系统宕机时我只能感到困惑,不知道是什么地方错了。学完这门课后,我就再没有因为软件开发方面的任何事情困惑过。你可以在YouTube或iTunes U之类的网站上找到这门课的讲座。

回答“你怎样提高编程技能,以便快速尝试各种疯狂的想法,比如GANs”:

我编程的时间很长!我在11岁就学会了编程,中学时我们的数学课有图形计算器,有人在上面用 TI-BASIC编了一个游戏。为了了解这个游戏的工作原理,我从图书馆复制了一本“MacFroggy Teaches Basic ”来学习BASIC语言。

我入坑deep learning的部分原因是我一直在出于爱好做游戏编程。我一直在使用OpenGL Shading Language(GLslang)来编写通用的GPU程序。当CUDA推出时,利用GPU进行CUDA编程实际上比试图将数学问题转换为专为图形设计的语言要容易得多。在Geoff Hinton的关于deep belief nets的论文发表后不久,我的朋友Ethan Dreyfuss就给我讲了有关深度学习的内容,然后我和Ethan一起搭建了斯坦福大学的第一台用于深度学习的CUDA机器。我最初编写的深度学习程序是在CUDA中实现RBM。与我编写GAN时所做的努力相比,这要困难得多。在写GAN时,我已经有很多很好的工具,例如Theano,LISA lab等等。

编写GAN代码很容易,部分原因是我有一个很好的代码库,可以从早期的项目开始。我的整个博士学位期间都在搞深度学习,有很多类似的代码可以随时待命。我的第一个GAN实现主要是从MNIST分类器(https://arxiv.org/pdf/1302.4389.pdf)的代码中复制粘贴来的。

Ian Goodfellow关于GAN的资料大全

Invited Talks

Adversarial Examples and Adversarial Training

8481c8f592b7f349aa84a1de5c171db681516edf"Defending Against Adversarial Examples". NIPS 2017 Workshop on Machine Learning and Security. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Thermometer Encoding: One hot way to resist adversarial examples," 2017-11-15, Stanford University [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training," 2017-05-30, CS231n, Stanford University [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training," 2017-01-17, Security Seminar, Stanford University [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training," 2016-12-9, NIPS Workshop on Reliable ML in the Wild [slides(pdf)] [slides(key)] [video(wmv)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training," presentation at Uber, October 2016. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Physical Adversarial Examples," presentation and live demo at GeekPwn 2016 with Alex Kurakan. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training," guest lecture for CS 294-131 at UC Berkeley. [slides(pdf)] [slides(key)] [video(youtube)]
8481c8f592b7f349aa84a1de5c171db681516edf "Exploring vision-based security challenges for AI-driven scene understanding," joint presentation with Nicolas Papernot at AutoSens, September 2016, in Brussels. Access to the slides and video may be purchased at the conference website. They will be freely available after six months.
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training" at HORSE 2016. [slides(pdf)] [youtube]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training" at San Francisco AI Meetup, 2016. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples and Adversarial Training" at Quora, Mountain View, 2016. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples" at the Montreal Deep Learning Summer School, 2015. [slides(pdf)] [video]
8481c8f592b7f349aa84a1de5c171db681516edf "Do statistical models understand the world?" Big Tech Day, Munich, 2015. [youtube]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Examples" Re-Work Deep Learning Summit, 2015. [youtube]

Generative Adversarial Networks

8481c8f592b7f349aa84a1de5c171db681516edf "Overcoming Limited Data with GANs". NIPS 2017 Workshop on Limited Labeled Data. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Bridging theory and practice of GANs". NIPS 2017 Workshop on Bridging Theory and Practice of Deep Learning. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "GANs for Creativity and Design". NIPS 2017 Workshop on Creativity and Design. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Giving artificial intelligence imagination using game theory". 35 under 35 talk at EmTech 2017. [slides(pdf)][slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks". Introduction to ICCV Tutorial on Generative Adversarial Networks, 2017. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks". NVIDIA Distinguished Lecture Series, USC, September 2017. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks". Adobe Research Seminar, San Jose 2017. [slides(pdf)] [slides(keynote)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks". GPU Technology Conference, San Jose 2017. [slides(pdf)] [slides(keynote)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks". Re-Work Deep Learning Summit, San Francisco 2017. [slides(pdf)] [slides(keynote)]
8481c8f592b7f349aa84a1de5c171db681516edf Panel discussion at the NIPS 2016 Workshop on Adversarial Training: Facebook video
8481c8f592b7f349aa84a1de5c171db681516edf "Introduction to Generative Adversarial Networks," NIPS 2016 Workshop on Adversarial Training. [slides(keynote)] [slides(pdf)] [video (Facebook)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks," NIPS 2016 tutorial. [slides(keynote)] [slides(pdf)] [video] [tech report(arxiv)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks," a guest lecture for John Canny's COMPSCI 294 at UC Berkeley. Oct 2016. [slides(keynote)] [slides(pdf)] [youtube]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks" at AI With the Best (online conference), September 2016. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks" keynote at MLSLP, September 2016, San Francisco. [slides]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks" at Berkeley AI Lab, August 2016. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks" at NVIDIA GTC, April 2016. [slides(pdf)][video]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks" at ICML Deep Learning Workshop, Lille, 2015. [slides(pdf)] [video]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Adversarial Networks" at NIPS Workshop on Perturbation, Optimization, and Statistics, Montreal, 2014. [slides(pdf)]

Other Subjects

8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Robustness for Aligned AI". NIPS 2017 Workshop on Aligned AI. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Defense Against the Dark Arts: Machine Learning Security and Privacy," BayLearn, 2017-10-19. [slides(pdf)][video(youtube)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Machine Learning for Security and Privacy," Army Research Organization workshop, Stanford, 2017-09-14. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Generative Models I," 2017-06-27, MILA Deep Learning Summer School. [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Adversarial Approaches to Bayesian Learning and Bayesian Approaches to Adversarial Robustness," 2016-12-10, NIPS Workshop on Bayesian Deep Learning [slides(pdf)] [slides(key)]
8481c8f592b7f349aa84a1de5c171db681516edf "Design Philosophy of Optimization for Deep Learning" at Stanford CS department, March 2016. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Tutorial on Optimization for Deep Networks" Re-Work Deep Learning Summit, 2016. [slides(keynote)] [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Tutorial on Neural Network Optimization Problems" at the Montreal Deep Learning Summer School, 2015. [slides(pdf)][video]
8481c8f592b7f349aa84a1de5c171db681516edf "Practical Methodology for Deploying Machine Learning" Learn AI With the Best, 2015. [slides(pdf)] [youtube]

Contributed Talks

8481c8f592b7f349aa84a1de5c171db681516edf "Qualitatively characterizing neural network optimization problems" at ICLR 2015. [slides(pdf)]
8481c8f592b7f349aa84a1de5c171db681516edf "Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks" with Yaroslav Bulatov and Julian Ibarz at ICLR 2014. [youtube]
8481c8f592b7f349aa84a1de5c171db681516edf "Maxout Networks" at ICML 2013. [video]
8481c8f592b7f349aa84a1de5c171db681516edf "Joint Training Deep Boltzmann Machines for Classification" at ICLR 2013 (workshop track). [video]

Miscellaneous

8481c8f592b7f349aa84a1de5c171db681516edf I've made several presentations for the Deep Learning textbook, and presented some of them at a study group for the book.
8481c8f592b7f349aa84a1de5c171db681516edf PhD thesis defense. [youtube] [slides]

原文发布时间为:2018-03-16
本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号
相关文章
|
5月前
|
机器学习/深度学习 存储 算法
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
358 2
|
3月前
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API两种训练GAN网络的方式
使用Keras API以两种不同方式训练条件生成对抗网络(CGAN)的示例代码:一种是使用train_on_batch方法,另一种是使用tf.GradientTape进行自定义训练循环。
36 5
|
3月前
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习】Generative Adversarial Networks ,GAN生成对抗网络分类
文章概述了生成对抗网络(GANs)的不同变体,并对几种经典GAN模型进行了简介,包括它们的结构特点和应用场景。此外,文章还提供了一个GitHub项目链接,该项目汇总了使用Keras实现的各种GAN模型的代码。
65 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
生成对抗网络(GAN):创造与竞争的艺术
【6月更文挑战第14天】**生成对抗网络(GANs)**是深度学习中的亮点,由生成器和判别器两部分构成,通过博弈式训练实现数据生成。GAN已应用于图像生成、修复、自然语言处理和音频生成等领域,但还面临训练不稳定性、可解释性差和计算资源需求高等挑战。未来,随着技术发展,GAN有望克服这些问题并在更多领域发挥潜力。
|
4月前
|
机器学习/深度学习 PyTorch API
生成对抗网络(GAN)由两部分组成:生成器(Generator)和判别器(Discriminator)。
生成对抗网络(GAN)由两部分组成:生成器(Generator)和判别器(Discriminator)。
|
6月前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
134 3
|
6月前
|
机器学习/深度学习 JavaScript 算法
深度学习500问——Chapter07:生成对抗网络(GAN)(1)
深度学习500问——Chapter07:生成对抗网络(GAN)(1)
112 3
|
6月前
|
机器学习/深度学习 人工智能 编解码
【AI 生成式】生成对抗网络 (GAN) 的概念
【5月更文挑战第4天】【AI 生成式】生成对抗网络 (GAN) 的概念
【AI 生成式】生成对抗网络 (GAN) 的概念
|
6月前
|
机器学习/深度学习 编解码 自然语言处理
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
92 0
|
6月前
|
机器学习/深度学习 JavaScript Linux
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
96 0