专栏首页新智元【干货】生成对抗式网络创始人Quora答疑

【干货】生成对抗式网络创始人Quora答疑

【新智元导读】还记得不久前LeCun在Quora答题时说的,他最激动的深度学习进展是“生成对抗网络”吗?生成对抗网络的提出者Ian Goodfellow日前也在Quora做了一期答疑,从他自己的深度学习路,到生成对抗网络的发展,以及他目前所在的OpenAI的运作,作为深度学习新一代技术主力,Goodfellow详尽回答了各种问题。

原文链接:https://www.quora.com/session/Ian-Goodfellow/1

生成对抗网络发展

生成对抗网络是如何发展而来的?

Christian Szegedy 发明了对抗训练(adversarial training ),这种算法包括训练神经网络正确分类正常实例与对抗实例( adversarial examples ),对抗实例是指故意设计出来搞乱模型的最糟糕的输入实例。我们发表的论文《神经网络的有趣属性》( Intriguing properties of neural networks)描述了对抗训练。那时,对抗训练表现得还不是很好,实际上我们还没给它取名。

我发明了生成式对抗网络,并写了一篇相关论文。生成式对抗网络是成对的网络:其中一个是生成器网络( generator network),从由一系列训练范例定义的概率分布中学习创造新的样本;另一个是判别器网络( discriminator nerwork ),可以查看样本,辨别它是真的(来自数据集)还是假的(来自生成器网络)。这篇论文没有使用术语“对抗训练”。

我找到了一种更快生成对抗实例的方法。这就在对抗训练的每一步上让制造一小批新的对抗实例变得实际可行,而不是在每个阶段只能制造几个实例。改进之后,对抗训练开始表现优异。在一篇揭示它事实上如何运行的论文《对抗实例的解释和巩固》 (Explaining and Harnessing Adversarial Examples)中,我们首次给它命名为对抗训练。

后来,其他人开始使用对抗训练指代生成式对抗网络。可以将生成式对抗网络视作执行对抗训练,对抗训练中的生成器网络为鉴别器网络制造对抗实例。或许,对抗训练可以被视为一个指代训练神经网络赢得游戏的过程的通用术语,而不是 Christian 和我用来指代以对抗实例来训练的术语。没有英语语言学院来确定如何使用词语,看上去对抗训练这样的词语表现出了自己的生命力,其含义正在不断扩大,超过了我们最初使用它来指代的范围。这可能在过渡时期引起一些困惑,但是不久我们将有希望达成清晰的共识。

生成对抗网络处理图像比起普通卷积神经网络的优势在哪里?

我并不完全明白普通卷积神经网络(ordinary convolutional neural networks)的意思,因为没有标准的用来生成图像的卷积神经网络。如果你想用卷积神经网络生成一些图像,那么它需要被包含于一些图像生成框架,如 GAN/VAE/PixelCNN/NICE 中。所以,比较 GAN 和 NICE 是有意义的,但比较 GAN 和卷积神经网络是没有意义的, GAN 只是训练卷积神经网络的一种方式,但并没有一个默认的训练卷积神经网络生成图像的方式。

生成对抗模型相比其他模型的优势在哪里?

生成对抗式网络框架能训练任何一种生成器网络(用 REINFORCE 来训练带有离散输出的生成网络非常困难)。大部分其他的框架需要该生成器网络有一些特定的函数形式,比如输出层是高斯的。重要的是所有其他的框架需要生成器网络遍布non-zero mass。

不需要设计遵循任何种类的因式分解的模型,任何生成器网络和任何鉴别器都会有用。

与 PixelRNN相比,生成一个样本的运行时间更小。GAN 每次能产生一个样本,而 PixelRNN 需要一次产生一个像素来生成样本。

与VAE 相比没有变化的下限。如果鉴别器网络能完美适合,那么这个生成器网络会完美地恢复训练分布。换句话说,各种对抗式生成网络会渐进一致,而 VAE 有一定偏置。

与深度玻尔兹曼机相比,既没有一个变化的下限,也没有棘手的分区函数。它的样本可以一次性生成,而不是通过反复应用马尔可夫链运算器。与 GSN 相比,它的样本可以一次生成,而不是通过反复应用马尔可夫链运算器;与NICE 和 Real NVE 相比,在 latent code 的大小上没有限制。

明确一下,我认为很多这些其它方法都是很好的,它们相对于 GAN 也有不同的优势。

你做了哪些事情完善生成对抗网络?

我基本上是在想办法解决不收敛的问题。所有理论都认为 GAN 应该在纳什均衡上有卓越的表现,但梯度下降只有在convergence函数的情况下才能保证实现纳什均衡。当博弈双方都由神经网络表示时,在没有实际达到均衡的情况下,让它们永远保持对自己策略的调整是可能的。

深度学习历程

你是如何走上机器学习之路的?

读高中时,我有很多兴趣爱好,我用语音字母表编造了我自己的语言,我参加了很多创意写作和文学课程。高中毕业后,我进了大学,选择读斯坦福,因为它不会在低年级就要求我选择一个主修专业,而且也不需要你连续四年读完学位。

在斯坦福的第一年,我选了一些编程入门课。我对解码大脑如何工作很感兴趣,所以我选了一些心理学和认知科学的课程。这些课没我想的那么扎实,跟我原来想的一样,大学浪费了我很多时间还有我父母的钱。期间我暂停了斯坦福的学业,和两个朋友去了苏格兰,但最后还是也回到了大学。

在斯坦福的第二年,我想到我能研究的最有趣的学术主题是解码大脑如何工作。大学一年级时我已发现心理学和认知科学课的内容比较软,所以我想神经科学的应该有很多的硬技术知识。 我花了一年和医学预科生学完了所有生物学的需要基础知识,像化学、生物等等。我也开始在一个功能磁共振成像实验室工作,甚至听了一点点神经科学课程。很高兴我能在大学时就开始热衷于这门学科。在这段时间里,我开始想我应该学一些编程,因为做神经科学研究时会用的上。我上了 Jerry Cain 的更高级的编程课。Jerry 把每个问题都讲的非常细致,细致到运行一个 C 代码时,机器指令执行了什么。自从参加他的课以来,我从未觉得自己的编程能力或者对计算机的理解被限制。我也开始花很多时间泡在 Jerry 的办公室里学习软件工程 。

在斯坦福读了两年大学后,我去美国国家卫生研究所实习,用经颅磁刺激技术(TMS)做神经科学研究。TMS是非侵入性的,用磁场影响大脑内部电活动。我阅读了很多这方面的资料,认为 TMS 是最炫酷的事了。在我去 NIH 后,结果发现这其实有些无聊。第一次学会操控一些人的大脑时,确实觉得很兴奋。然后你必须以相同的方式精确操控几十个人的大脑,以便收集足够多的实验数据从而达到统计显著性。我觉得这种常规的数据收集工作太枯燥乏味了。同时, NIH 的医生教了我很多数据分析技术。他们编写过机器学习算法来进行独立成分分析( ICA )等事情,区分收集到的不同 EEG 信号或者识别类似运动皮层规划手臂运动的事件。我花了很多时间从事数据分析,最后我非常喜欢数据分析,远远超过对用 TMS 机器做物理实验的喜爱。

我在大三回到斯坦福时,确定要选生物医学计算。然后我告诉 Jerry Cain 我的实习经历和我多么喜欢数据分析。他坚持认为我应该选吴恩达的人工智能入门课程。那时的我不知道关于人工智能的任何事物,除了用于视频游戏的伪人工智能(在完成 Jerry Cain 的课程后,我曾经因兴趣加入视频游戏项目)。我非常怀疑人工智能课程的价值,但是我相信 Jerry 的判断,于是选了那门课。在听了吴恩达讲解线性回归的偏差和方差分解后,我才相信人工智能是一门真正的科学,而且我申请了计算机科学专业。在课程结束时,吴恩达邀请我去斯坦福人工智能机器人工作,之后我一直参与机器学习研究。

我仍然用了一些时间才从神经科学转向机器学习。当我到了该读博的时候,我很难在 Bruno Olshausen 的神经科学和 Yoshua Bengio 的机器学习之间做出选择。我那时仍然对两个学科都感兴趣,并与两个领域内的人士共同工作,我最后做出选择研究机器学习的决定确实变得好像是历史上一个重大时刻。那是一个没有回头路的关键点,而且自从我做出那个决定后就一直热情地专注于机器学习。

在你的研究经历中,最难忘的失败是什么?你从中学到了什么教训?

绝大多数研究思路会失败,但是在机器学习中,尝试新想法的成本不高。我有一个高通量的筛选方法来研究我什么地方并行尝试了多个想法,希望的是丢弃大多数想法,只执行少数有希望的想法。正因为如此,当一个研究的想法得不到解决时,忘了它也不难。

做研究,尤其是技术发展中的研究,也都常常会有失败,因为过时是无法避免的。所以即便我花了很长时间在玻尔兹曼机器上后它变得不再流行,或者 Pylearn2 的开发不再活跃后,我也觉得没什么。这是技术的自然属性。

困扰我的主要失败是输掉一场比赛来完成一项壮举。大约在 2007 年到 2012 年之间,我曾和其他很多人尝试过解决对象识别问题,花很多时间试图做出更聪明的可以从较少的有标注数据中学习的算法。Alex、Ilya 他们做到了一点,升级了已经存在了几十年的算法,并在更多的数据中训练它们。在这种情况下,我以为对于现有的算法来说,每类 1000 个样本就够用了,不过这是错误的。 和后来其他输掉这场比赛的每个人一起,我认为因为对于卷积网络来说,在 CIFAR-10 上的每类 5000 个样本,不能让它发挥得很好。在 ImageNet 上每类 1000 个样本不能让它们发挥的很好。

OpenAI 运作

Sam Altman 和 Elon Musk 如何在 OpenAI 工作?

非常扁平,所有的技术人员都向 Ilya 或 Greg 报告。

OpenAI 的团队结构怎样?

他们参与地相当积极,每周都在办公室里。我大多数时间并不直接和他们接触,所以我不知道他们主要做了什么。每周例会上我基本能看见Musk。

谷歌研究院、Facebook 人工智能研究中心(FAIR)和 OpenAI 有什么不同?

谷歌(谷歌研究院是一个特定组织;我假定这个问题问的是一般意义上谷歌的研究):非常庞大的研究机构,在许多领域内有天赋异禀的人才,研究着令人难以置信的各种问题。谷歌的研究有一些是长期的,大多数是中短期的,而且结合了基础和应用研究。谷歌很容易做大规模的项目,但比高等学校更难快速地做小规模研究项目(因为你将同样的工具/过程用于大规模项目)。谷歌能获取你不能在任何其他地方获取的海量数据。

OpenAI是一家中等规模的研究机构,比大多数学术实验室要大,有专注于实现通用人工智能的深度学习途径的才华横溢的人才。几乎所有研究都聚焦于费力的基础问题,而不太关心短期收益;所有工作都是关于开发新的机器学习技术,而不是应用它们。我们的计算资源肯定足以支撑研究目的——开发出一个机器学习模型后,公司必须针对数百万用户做出部署,所以在很多情况下公司将投入更多到生态布局而非训练模型上。OpenAI 不必将资源倾注到市场布局上,因为不制造产品。

至于FAIR,我没在 FAIR 工作过,所以没有太多发言权。我能说的主要都是猜测,而且可能是不对的,但是 FAIR 似乎是一个纯粹专注于深度学习的小团队,比 OpenAI 的强化学习更少,但是 FAIR 的计算资源和可获得的数据大概与谷歌相似。我 2013 年去过一次 FAIR ,但那时 Yann LeCun还没有加入,之后 FAIR 也改变了很多。

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【干货】用反卷积网络合成超逼真人脸:理解深度学习如何思考

    【新智元导读】本文中介绍的深度学习架构能够基于选定的人的身份、情绪和方位,生成真实的脸部图像。你只要给网络提供你希望描绘的东西的原始参数,模型就能完成,但是生成...

    新智元
  • 【荐书】5 本深度学习和 10 本机器学习书籍(下载)

    5本深度学习书籍资源推荐 深度学习(Deep Learning) by Ian Goodfellow and Yoshua Bengio and Aaron C...

    新智元
  • 【深度学习并非万能】全方位对比深度学习和经典机器学习

    近年来,深度学习已成为大多数AI问题的首选技术,使得经典机器学习相形见绌。原因很明显,深度学习在语音、自然语言、视觉和游戏等许多任务上都表现出卓越的性能。然而...

    新智元
  • ubuntu 安装google浏览器

    参考链接:https://blog.csdn.net/liuqz2009/article/details/52087019

    foochane
  • Appium—Native+H5混合APP的自动化

    小编所在项目的客户端是比较奇怪的一个APP,大部分页面Android和iOS的客户端只提供了webview的功能,都是由H5处理业务逻辑和用户交互。H5承担了和...

    用户5521279
  • Appium—Native+H5混合APP的自动化

    小编所在项目的客户端是比较奇怪的一个APP,大部分页面Android和iOS的客户端只提供了webview的功能,都是由H5处理业务逻辑和用户交互。H5承担了和...

    软测小生
  • 你真的会高效的在GitHub搜索开源项目吗?

    GitHub的流行, GitHub在开源世界的受欢迎程度自不必多言。再加上今天,GitHub官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银...

    java思维导图
  • 你真的会高效的在GitHub搜索开源项目吗?

    GitHub的流行, GitHub在开源世界的受欢迎程度自不必多言。再加上今天,GitHub官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银...

    纯洁的微笑
  • ICML 2018 | MILA提出防御增强型网络:简单修改已有网络即可提升防攻击能力

    选自arXiv 作者:Alex Lamb, Jonathan Binas, Anirudh Goyal, Dmitriy Serdyuk, Sandeep Su...

    机器之心
  • 数据库MySQL-数据库表的水平拆分

    表的水平拆分是为了解决单表数据量过大的问题,水平拆分的表每一个表的结构都是完全一致的,以下面的peyment表为例来说明

    cwl_java

扫码关注云+社区

领取腾讯云代金券