雷锋网AI科技评论按:近日,「GANs 之父」Ian Goodfellow 做客国外一档「你问我答」(Ask Me Anything)的线上问答节目,提问者可以直接对 Ian Goodfellow 提出任何关于 GANs 的问题,下面 AI 科技评论带大家围观 GANs 发明的背后都有哪些不为人知的故事。
以下是 AMA 节目中,Ian Goodfellow 与线上提问者的问答实录,雷锋网AI 科技评论做了不改动原意的编译。
Gfred:有传言说你是在一家酒吧想出 GAN 的。你能回忆并描述一下当时的情景吗?
Ian Goodfellow:这确实是真的,并不是传言。我之前在几次采访中也讲过这个故事,「麻省理工科技评论」「连线」杂志,「英伟达博客」上都有报道。
Wired:https://www.wired.com/2017/04/googles-dueling-neural-networks-spar-get-smarter-no-humans-required/
NVIDIA Blog:https://blogs.nvidia.com/blog/2017/06/08/ai-podcast-an-argument-in-a-bar-led-to-the-generative-adversarial-networks-revolutionizing-deep-learning/
MIT Technology Review:
https://www.technologyreview.com/lists/innovators-under-35/2017/inventor/ian-goodfellow/
https://www.technologyreview.com/s/610253/the-ganfather-the-man-whos-given-machines-the-gift-of-imagination/
Gautam Ramachandra:您能否介绍一下实现以下目标函数所采用的函数导数所涉及的步骤。 GAN中是否采用了贝叶斯定理?
以上给出了上述目标函数的导数
这些方程来自论文「Generative Adversarial Networks」(http://arxiv.org/pdf/1701.00160.pdf)可以在第 46 页和第 47 页找到。能不能帮我完成目标函数的函数导数推导步骤?
Ian Goodfellow:在这个回答中,我可能没有足够时间用 LaTex 格式完成函数推导的过程,不过你可以在「深度学习」书中找到一些有用的信息:http://www.deeplearningbook.org/contents/inference.html。大部分你需要知道的内容在方程 19.46 中。
当你把这个方程应用到 j(d),你就会得到一个新的衍生表达式,并不需要知道任何有关函数导数的东西。
Avhirup Chakraborty:目前是否有关于生成模型可迁移的论文和工作?例如:我有一个用于生成猫和狗图片的模型,我是否可以利用该模型前面的一些网络层来生成狼和老虎的图片?
Ian Goodfellow:目前我还不知道在这方面有哪些研究和工作,但我认为这是可行的。对于生成器来说,越接近后面输出端的网络层,越容易在不同模型之间共享吧。
Anshuman Suri:这个问题可能有点偏离主题。您认为今天重新思考「神经元」在深度学习模型中的工作方式是唯一能够解决对抗样本中的鲁棒性问题吗?在你的一些视频中,你曾经提到过存在这种普遍性问题,因为这些模型都是「线性」(而不是许多人称的「非线性」)。我们是通过深入探索目前这些神经元模型来找出错误,还是说将完美的激活函数和数据增强/防御混合起来作为一个整体模型运用到模型中,就能修复这些问题?
Ian Goodfellow:我不认为这是完全脱离主题的,因为 GAN 的鉴别器需要对由生成器生成的对抗输入具有鲁棒性。我确实认为我们目前使用的神经元很难对对抗样本保持鲁棒性,但我觉得这不是唯一错误。最近的一些工作表明,如 https://arxiv.org/abs/1801.02774 中提到的,为了确保分类器的安全性,我们真的需要重新思考我们的基本原则和策略,而不仅仅是训练我们的模型。
胶囊网络确实比普通模型更能抵御对抗样本(参考文章 https://openreview.net/forum?id=HJWLfGWRb),但目前还不清楚这是否是最好的防御方式---在同一数据集上的对抗训练是否能抵御最强攻击,目前还不知道结果。
Foivos Diakogiannis:您能否就 GAN 与强化学习(RL)之间的相似之处(如果有的话)发表一下评论?我对这两种网络的认识都不是太专业,但据我浅显的理解,我认为 GAN 上的生成器-鉴别器和强化学习中的代理-环境相互作用的方式非常相近,我的理解对吗?
Ian Goodfellow:我或许没有资格评价强化学习,但是我认为 GAN 是使用强化学习来解决生成建模的一种方式。GAN 案例的一些奇怪的地方在于奖励函数在行动中是完全已知和可微分的,奖励是非稳态的,奖励也是代理策略的一种函数。但我确实认为它是基于强化学习。
Jakub Langr:我发现 GAN 训练中有两个或三个阵营:OpenAI 和 Google 的人员算一个阵营;Mescheder、Sebastian Nowozin 与其他微软研究院等机构的研究人员是另一个阵营。你认为是这样的吗?你有类似的看法吗?
Ian Goodfellow:不,我认为还有更多的阵营。FAIR(Facebook AI 研究院)/ NYU(纽约大学)也是主要参与者。实际上,FAIR / NYU 是第一个将 GAN 与 LAPGAN 应用在地图上。这是 GAN 第一次生成真正引人注目的高分辨率图像,这也是 GAN 第一次得到新闻报道等。另一个非常重要的阵营是(伯克利+英伟达)Berkeley + NVIDIA 阵营,他们专注于非常引人注目的高分辨率图像和视频,无监督翻译等。我也不确定你所说的「阵营」是什么意思。如果你只是指研究 GAN 的不同方法,那么是的,这些团队倾向于以不同的方式运作。不过很多时候,「阵营」一词意味着彼此意见不同或相互冲突的群体,我认为情况并非如此。
Vineeth Bhaskara:您的论文与 Jurgen Schmidhuber 在 GAN vs PM 上有多远?你们俩在这方面还有什么分歧吗?
Ian Goodfellow:这篇论文已被撤稿了,但我们仍有分歧。
Adam Ferguson:
1)您如何选择 GAN 与其他生成模型(如 VAE 和 FVBN)(NADE,MADE,PixelCNN)?我们应该使用哪个框架来做出这个决定?
2)第二个问题与论文没有直接关系,像 Librarian / Fermat Library 工具对 ML / DL 等领域来说很重要,因为这些领域的发论文速度要比期刊快得多。你如何看待这个领域的未来?
Ian Goodfellow:先回答第二个问题,我正在做这个 AMA 问答,就是来帮助促进 Librarian / Fermat Library 工具的普及,因为我认为这些工具需要变得更加为大众所知。ArXiv 现在基本上是一种绕过同行评审的方式筛选论文,它使得深度学习论文的信噪比猛降。虽然仍然有很多伟大的深度学习工作正在进行,但也存在很多低质量的工作。即使现在最好的工作也经常出现夹杂私货 -比如一个好想法写在一篇不公平的营销文章,或是与其他作品比较不准确的论文中,因为没有任何同行评审,所以作者变得有点肆无忌惮了。
再回到第一个问题,如果你想生成连续变量的真实样本,如果你想做无监督翻译(例如 CycleGAN),或者如果你想做半监督学习,那么你可能需要用到 GAN。如果你想产生离散符号,你可能用不到 GAN,但我们正在努力使它在这方面变得更好。如果你想最大化可能性,你可能也不想用 GAN。
Kushajveer Singh:最近你在 Twitter 上列了 10 篇你认为最佳的 GAN 论文,你能写一篇文章列举一下从初学者和专家都需要学习哪些 GAN 知识,你还有别的资源分享吗?
Ian Goodfellow:我可能没有时间写,而且即便我写了,它也会很快过时。我在 2016 年 12 月编写了关于 GAN 的大型教程:https://arxiv.org/abs/1701.00160。大家可以去看一下。这里的许多想法今天仍然实用,当然,它不包括 2017 年末以后的现有技术模型,如渐进式 GAN,光谱归一化 GAN,带投影鉴别器的 GAN 等。
Rafa Ronaldo:定量评估 GAN 的标准是什么?
Ian Goodfellow:它取决于你希望拿 GAN 来做什么。如果你希望将它用于半监督学习,那么就使用测试集的准确率度量;如果你希望用于生成用户喜欢的图像(如超分辨率图像等),那么就需要使用真人来打分。如果你仅希望使用一般的自动化质量评分,那么我认为 Frechet Inception Distance ( https://arxiv.org/abs/1706.08500 ) 可能是最好的。当然度量方法本身仍然是研究领域中非常重要的一部分。
Andres Diaz-Pinto:现在有方法将隐变量映射到生成图像的一部分吗?换句话说,能否使用几个变量改变背景颜色,然后然后另外几个个变量修正形状或其它的属性?
Ian Goodfellow:通常情况下是可以实现的,但我们需要以特定的方式训练模型,参考论文 InfoGAN:https://arxiv.org/abs/1606.03657。
Rafa Ronaldo:很多疯狂的想法,如 GANs 需要高超的编程技巧来辅以实现,你是如何提升你的编程技能的?有没有推荐的书?任何特定学习 Tensorflow 或深度学习框架的书籍都可以。谢谢!
Ian Goodfellow:我学习现代深度学习编程的路径非常间接,因为在学习使用 Python 之前,我已经学了各种 C、汇编、网页等语言。所以对于别人,我不确定有什么捷径可以加速编程的学习过程。在编程能力方面,对我来说非常重要的一个转折点就是 2006 年参加 Jerry Cain 在斯坦福开设的 CS107 课程。在那之前,我基本只是一个编程爱好者,但上过课后,基本上我在软件开发方面就不会再困惑了。现在你们也可以在 YouTube 或 iTunes U 等站点找到该课程。
关于我是如何提升编程技能,因为我做了很多编程!我在 11 岁时学会了编程。我的中学为我们的数学课程设计了图形计算器,并且有人在 TI-BASIC 上编程游戏,并加入了图形计算器课程中。我从图书馆获得了 https://www.amazon.com/MacFroggy-Teaches-Basic-Amy-Barger/dp/0944838391 的副本,以便了解游戏的工作原理。
我为什么开始踏入深度学习领域,有一部分原因是我一直在做我最爱的游戏编程。我一直在使用 OpenGL 着色器语言编写通用 GPU 程序。当 CUDA 推出时,利用 GPU 进行 CUDA 编程实际上比试图将数学问题解决为专门为图形设计的语言要容易得多。我的朋友 Ethan Dreyfuss 在 Geoff Hinton 关于深层网络的论文出炉后不久告诉了我关于深度学习的内容,然后我和 Ethan 一起构建了斯坦福大学的第一台 CUDA 机器,以便一起研究深度学习。我的第一次深度学习计划是在 CUDA 中实施 RBM。与我为编程 GAN 所做的相比,这确实很困难。当我编写第一个 GAN 代码时,我有很多很好的工具,如 Theano,LISA 实验室计算机集群等。
为什么编写 GAN 代码很容易?有一部分原因是我有一个非常好的代码库,是从很早期的项目就开始准备的。我一直在为我的整个博士期间的学习深度学习做准备,并且有很多类似的代码可以随时待命。我的第一个 GAN 实现主要是来自 https://arxiv.org/pdf/1302.4389.pdf 的 MNIST 分类器的复制粘贴。
Jason Rotella:GAN 能用于主题建模吗?现在除了生成模型,GAN 框架还能扩展应用到其它领域吗?
Ian Goodfellow:我猜测是可以用于主题建模的,但目前还没听说在该领域有哪些具体研究。一个主要的挑战即文本建模,文本是由离散的字符、标记或单词组成的,但是 GAN 需要通过生成器的输出计算梯度,因此它只能用于连续型的输出。当然还是有可能使用对抗自编码器或 AVB 等模型,因此生成器实际上或是一个编码器,并能输出连续的编码。这对于文本建模可能是非常有用的属性,因为它给出了表征主题的分布。
Rafa Ronaldo:我在 NIPS 会议上的理论/实践研讨会上发表了关于 GAN 的演讲(我还参加了 LLD 研讨会上的演讲 - GAN 创建新数据)。谈话结束时,Sanjeev Arora 问了你一些问题,就像 GAN 框架可能不足以学习分布,需要添加更多元素。我没有完全理解这个问题,你能否解释为什么 GAN 框架不足以学习分布,需要添加哪些元素以及为什么 GAN 在图像生成任务中如此顺利?感谢 AMA,也感谢您的在线讲座和教程,这对于像我这样的人来说非常有帮助。
Ian Goodfellow:说实话,我不记得 Sanjeev Arora 在这次演讲中究竟是怎么问的,我也不明白他的工作需要什么详细的答案。
我认为他担心计数问题(也可能我认为是错的):神经网络参数空间中没有足够的不同点来表示输入上的所有不同概率分布。如果我正确地表达了他的关注,这将适用于任何类型的神经网络生成器,而不仅仅是 GAN,并且有一些出路:可能在现实生活中,我们不会遇到任意的概率分布,而只是一些子集非常结构化的,也许我们在现实生活中遇到的分布结构与神经网络可以有效表示的分布结构一致。
现在深度学习和 GAN 有很多不同的话题,我很难跟随所有这些话题,我很乐意承认这是我所不擅长的,所以很可能我错误地表达了 Sanjeev 的工作。
Greg McInnes:在基因组学研究中,有用到 GAN 的机会吗?
Ian Goodfellow:我对基因组学没有太多的了解,但我认为用于半监督学习的 GAN 模型可能会对该领域有非常重要的作用。因为未标注的基因远要比标注的基因多,所以半监督学习有助于利用大量未标记数据从少数标注样本中学习。
Tim Salimans 为此也开发了一些方法,这些方法在 MNIST 和 SVHN 等基准测试中非常高效(https://arxiv.org/abs/1606.03498)。
但值得注意的是,到目前为止,我们发现其他半监督方法实际上并不能很好地完成任务(https://openreview.net/forum?id=ByCZsFyPf),半监督 GAN 尚未完成测试。
Kevin Hsu:我看到你的推特发布评论 StarGAN。您提到 StarGAN 可以在没有监督的情况下在多个域之间进行翻译。据我所知,虽然 StarGAN 不需要配对数据,但仍需要标记数据来训练条件图像生成过程。我很困惑,为什么你提到它是「没有监督」。谢谢!
Ian Goodfellow:我的「没有监督」意思是不需要搭档来监督翻译。
Nicholas Teague:我想知道你是否已经成功地将 GAN 应用于图像或视频以外的领域。
Ian Goodfellow:这个链接是我们近来将 GAN 用于文本数据的论文: https://arxiv.org/abs/1801.07736。
Gonçalo Abreu:我认为这个概念真的很巧妙。关于结论的第 4 点:您如何建议我们只使用 GAN 进行特征提取?我的意思是:我们如何确保由 GAN 架构产生的表示是输入数据底层结构的有用表示呢。如果网络有足够的容量,那么没有什么能阻止生成器学习如何「模仿」输入数据,是吗?
「有可能有两个不同的 GAN,其中一个具有更好的得分,但是在作为外部分类器时,从鉴别器中抽取特征要更差或更低效。」这种陈述对吗?
Ian Goodfellow:你说的那个陈述是对的,假设你有一个完美的生成器,那么对于所有的 x,P_generator(x)=P_data(x)。那么最优判别器 D*(x)= P_data(x)/(P_generator(x)+P_data(x))=1/2,这个判别器的特征可能完全没用,因为我们可以将判别器的权重设为 0 而达到该效果。
对于特征提取,一种方法是使用判别器隐藏层的特征,另一种方法就如同自编码器一样单独学习一个独立的编码器,以下是一些关于 GAN 编码器的论文:
对抗性学习推断:https://arxiv.org/abs/1606.00704
BiGAN:https://arxiv.org/abs/1605.09782
对抗性自编码器:https://arxiv.org/abs/1511.05644
对抗性变分贝叶斯:https://arxiv.org/abs/1701.04722
alpha-GAN:https://arxiv.org/abs/1706.04987
关于「如果网络有足够的容量,那么就没有什么能阻止生成器学习如何「模仿」输入数据,是吗?」这个问题,我的回答是:是的,这几乎与所有生成模型的点估计量都有关。如果最大限度地提高无限容量密度函数的可能性,则应该只记住训练数据。在实践中,GAN 似乎在配合不足方面比在过度配合方面更麻烦。这可能是因为我们不知道如何很好地平衡游戏。
「关于基于解码器的生成模型的定量分析」文中发现,GAN 为列车和测试集分配相似的可能性。当然,可能性很低,因为 GAN 没有经过最大化可能性的训练,并且取决于 z 的维度ž,他们甚至可以为所有训练数据分配零可能性。论文地址:https://arxiv.org/abs/1611.04273
「GAN 是否真的学会了这种分布?」一项实证研究发现 GAN 学习生成的样本比真正的基础数据生成分布少得多,但比训练数据更多样化。论文地址:https://arxiv.org/pdf/1706.08224.pdf
雷锋网注:编译原文出处:https://fermatslibrary.com/arxiv_comments?url=https%3A%2F%2Farxiv.org%2Fpdf%2F1406.2661.pdf