GAN之父Ian Goodfellow在Quora:机器学习十问十答
大数据文摘作品,转载要求见文末
编译 | Aileen,张礼俊
笪洁琼,钱天培
近日,GAN之父Ian Goodfellow在Quora上举行了一年一度的live问答活动。不同于去年的独挑大梁,他今年还叫来了他在Google Brain的好基友Alexey Kurakin。本次互动吸引了将近2万Quora用户的参与,两人总共回答了网友提出的35个机器学习相关的问题。
大数据文摘从中精选出10个问题,从机器学习入门到深入探讨都有涉及,带你了解大佬眼中的机器学习。当然,我们也摘录了Ian Goodfellow对他的“爱子”GAN的点评。
此外,文摘将在本周推出Quora问答精选专栏,大家敬请关注!
给新人的学习建议
1. 你建议其他领域的人(比如机械工程)来学习机器学习吗?
Ian Goodfellow:当然了!我最崇拜的Geoffrey Hinton在博士阶段研究领域是实验心理学!
在机械工程里,我想你已经学了很多能用到机器学习领域的数学工具,所以你并不需要从头开始。通常而言,我们发现某一领域的变革往往是因为另一个领域的人带来了其领域中已成型的新想法!
2. 一个几乎没有任何技术背景的人怎么学习机器学习?
Ian Goodfellow:你应该要掌握一些基本的线性代数、概率和python的编程知识!
但是你不必知道所有的线性代数知识(比如QR分解就是不必要的),所有的概率论知识(通常我们也不会在深度学习中用到太多排列组合,序列重排序之类的知识),或者所有python编程的知识(实际上一些很晦涩难度的语言特性在一些公司是被禁用的)。
我觉得你应该从学习足够的线性代数、概率论和python编程做起,目标是你可以只用python和numpy库实现逻辑回归!
通过阅读我的深度学习(http://www.deeplearningbook.org)那本书的第一章到第五章,你就能学到完成逻辑回归编写所需的所有知识了,python的部分除外。当然我很难说这是否可行,因为我很难把自己放在一个没有任何技术背景的人的角度去考虑,但是我们已经尝试在书里放入了足够多的细节,所以你应该是没问题的。你需要一些耐心和努力,从零开始学习知识!
3. 作为一个大二学生,我该如何进入人工智能领域?
Ian Goodfellow:
如果你野心勃勃,边实践边学习,并参与我们的对抗样本竞赛吧(NIPS 2017: Non-targeted Adversarial Attack)
学习教你线性代数和概率论的课。
学习可以教你写出适合你所用硬件的高效代码的课。有时这会是硬件设计的课,而不是编程课。如果你不确认的话可以询问你的导师。
学习教你写高效实时多线程代码的课。有时这个课题会被包含在其他课里,比如计算机系统开发和游戏开发。
读《深度学习》这本书。
选一个你感兴趣的机器学习项目。如果不知道怎么将深度学习应用到你的爱好或者课程项目上,那就做一些比较常用的项目,比如在TensorFlow上从头开始构建一个SVHN(Street View House Numbers)分类器。做一遍这个项目,当你对某些你读到的问题有疑问的时候,尝试用你的代码作一些实验,从而回答这个问题。
如果你的学校有机器学习、计算机视觉、自然语言处理和机器人学的课,那就赶紧去上吧。
当然也可以来申请谷歌大脑的实习啦!
4. 说3本你最推荐的机器学习的书吧?
Ian Goodfellow:哈哈,我当然会推荐我和Yoshua还有Aaron一起写的《深度学习》。十年前,当我在学习机器学习的时候,我最喜欢的书有:
Chris Bishop的《模式识别和机器学习》(Pattern Recognition and Machine Learning)以及Daphne Koller 和Nir Friedman 的《概率图模型》(Probabilistic Graphical Models)。而在我对机器学习颇有了解之后,我就不怎么看新书了,比如说Kevin Murphy’s 写的《Machine learning: A Probabilistic Perspective》,所以我推荐的不一定就是最佳的。
一般机器学习类问题
5. 你最喜欢的超参数(hyperparameters)优化的方法是什么?
Ian Goodfellow:随机搜索。用随机的超参数并行跑25次算法,选择其中最好的两三组超参数,在这些最好的超参数的附近再随机选25组跑。
我几乎每年都会试一些近来比较流行的超参数优化器,把他们和随机搜索进行对比。到现在为止,我还没看到哪一个专门的优化器能找到比随机搜索更好的超参数。当然,我也知道其他人会有不同的看法。鉴于我更偏向研究领域,我通常会比别人用更多的超参数,我用到的算法也会更奇怪。
6. 谷歌大脑今年正在从事哪方面的研究呢?
Ian Goodfellow:谷歌大脑是一个很大的团队,独立研究者们有很大的自由度去实现他们自己的想法,所以我很难将这些研究方向总结出来。
你可以在我们的网站上看到更多的信息:Research at Google(https://research.google.com/teams/brain/)
我们的基础研究试图改进机器学习的算法,建造出使机器学习更强有力的计算机系统(像TensorFlow),我们也将机器学习应用到医疗保健、机器人学、音乐与艺术生成的问题中。
我和Alexey是聚焦对抗性机器学习的基础研究团队的一员。我们制造虚构的对抗器,令算法有表现的更好(像GAN),我们也试图找到真实世界中的对抗器(像对抗样本)。
7. 深度学习的下一步是什么?
Ian Goodfellow:
深度学习还有好多需要发展的领域呢。试着开阔你的思维,不要仅仅只在一个方向上思考。
更好的强化学习/深度学习和强化学习的整合;能够可靠地学习如何控制机器人的强化学习算法等。
更好的生成式模型;可以稳定地学习如何生成人类分不出真假的图像、语音、文字的算法。
学习如何学习的算法,以及普适深度学习算法(可以重新设计它们自己的架构,自行优化超参数的算法)。现在,我们依然需要人类专家来运行“学习如何学习”的算法,未来我们希望这一过程能被简化,而那些当前与AI关联甚少的行业也能受益于AI的成果。
服务于网络安全的机器学习,以及机器学习自身的网络安全:越来越多的网络攻击使用机器学习来生成恶意软件,这些软件能有效率地躲过漏洞模糊测试。同时,更多的网络防守软件也会用到机器学习,从而给出比人类更快的反应,检测更多细微的入侵。不同阵营的机器学习算法会互相欺骗对方,进行攻防大战。
计算力提升:动态活动分配会让更大的模型使用更少的计算操作来处理一个简单的样本。但总体来说,大量的计算依然会是人工智能的关键。
半监督学习和极小样本学习(one-shot learning):这能够减少训练所需的数据,使人工智得到更广泛的应用。
几乎不犯错误、具有极高稳定性的模型:这样的模型会被用于对安全性有高要求的领域。
深度学习会继续在大众文化中扩张,我们会看到越来越多的艺术家和流行文化引领者们用深度学习去做我们意想不到的事。我认为Alexei Efros的实验室和像CycleGAN这样的项目就是这个潮流的开端。
8. 在未来,哪个机器学习领域会取代深度学习?
Ian Goodfellow:“深度学习”是一个非常广泛的概念,我不确定它是否可以被取代。深度学习只是意味着用更多的处理步骤来学习,而不是仅仅只有一步。从这点来说,相比于“浅”的算法,“深”的算法会遇到组合爆炸的问题。
在2006-2011,“深度学习”很流行,但是这里的“深度学习”多是把许多无监督学习算法叠起来,从而为监督学习定义复杂的特征。
2012年之后,“深度学习”往往意味用反向传播来优化一个代表某个可微分函数的深计算图的所有参数。
在不久后,我们可能会更多地用到贝叶斯化算法(而不是基于最优参数的点估计),以及更多的不可微操作。(译者注:贝叶斯算法从概率推断的角度构建算法,通常对模型有先验概率,通过观察到的样本和贝叶斯定理来进行推断。)我们当然也可以继续认为它们是“深”的,也可以不去思考它们是否是“深”的。我认为,试图将深度学习和其他学习算法区分开是不必要的。我们对深度学习早已司空见惯,不需要再给它一个特殊的名字了。
9. 现今人工智能和机器学习系统有什么缺陷?
Alexey Kurakin:就我看来,一个最大的限制是大多数机器学习系统只能解决一个特定的问题(图像、文字、强化学习等)和特定的任务。所以每次面对一个新任务,你都需要重新设计一个分类器,搜集训练数据,训练你的模型,或者至少要调整你上一个任务所获得的分类器。
比如说如果你在一个图像集上训练一个分类器,可能在另一个图像集上准确度就会降低。并且也可能难以解决不同类型的问题(比如说自然语言处理)。
现在有研究在试图解决这些挑战。近来谷歌大脑的一篇文章(One Model To Learn Them All)提出了一个能解决不同类型问题的架构,然而这个问题还远没被完全解决。
GAN类问题
10. 机器学习领域的新人应该了解对抗性机器学习(adversarial machine learning)的哪些内容?
Alexey Kurakin:首先,你要对机器学习和深度学习有一定的了解,这样才能理解这个问题的背景。
对抗性机器学习研究的是,当同一个机器学习分类器的不同子部分有完全相反的奖励函数(或是损失函数)时我们的应对技术。对抗式机器学习最典型的应用是:生成式对抗网络和对抗样本(Adversarial examples)。你也可以在其他机器学习论文中找到这个方法的应用。
在生成式对抗性网络(generative adversarial network, GAN)中,你有两个网络:生成网络和判别网络。生成网络的目标是生成“仿真”的数据样本,判别网络则是要将生成的“仿真”样本和真实样本区分开。
对抗样本是那些被微调而导致错误分类的样本。对抗样本通常会在机器学习稳定性和安全性问题中被考虑到。有相反奖励函数的两个子部分如下:一个分类器被优化后能够有很高的分类精确度和很好的泛化特性,而另一个对抗器则是要通过干扰输入试图“欺骗”之前的分类器。
如果你想了解更多的信息,github网页提供了很不错的对抗性机器学习的论文和阅读材料(yenchenlin/awesome-adversarial-machine-learning。)