编者按:李飞飞高徒Andrej Karpathy2015年在斯坦福大学获得计算机科学专业博士,2016进入OpenAI工作,主要研究兴趣为:深度学习,生成模型和强化学习。2011至2015年先后在Google Brain,Deepmind及各大DL实验室实习过,在学习与工作方面经验颇丰。本文是他在Quora为广大机器学习研究领域学子答疑解惑,希望对大家有所启发。
您是如何学习研究ML/DL的?在学习DL过程中,您最喜欢的书籍有哪些?
我曾经在数据科学周刊的访谈中谈论过这个话题。我们长话短说,我以前是想做量子计算这一块儿,之后觉得稍有点灰心丧气,并且意识到AI是我想要研究的最重要的“元”问题。
在我攻读博士学位期间,DL方面没有太多可供参考的书籍。现在有Ian Goodfellow等深度学习方面的书籍及其他资料来源(例如,许多演讲,CS231n等)。
我个人不太过分依赖参考书。我喜欢Bishop的书,在读博期间曾从头到尾读过好多遍,还有Sutton的强化学习(Reinforcement Learning)一书,这本书我在几周内快速翻阅了一遍,反复实践有关ReinforceJS章节的知识。不过,遗憾的是,这本书在策略梯度(Policy Gradients)这一块儿讲得略少,而我们在研究中用到这方面的知识还是蛮多的,不管怎样,这本书都为我在DL方面的学习打下了良好的基础。
到现在为止,我发现,想要学会许多知识的诀窍就是反复实践已经学到的理论知识,正所谓实践出新知嘛。无论何时,当我读到一些知识,我会想象着自己已经理解透彻了,然后强制自己反复实践,这种方法总会给我带来新的有趣的洞见。这是我最爱的学习方法。
您个人偏爱哪一种深度学习框架?
在读博期间,我在学习深度学习框架过程中经历过几个转型期。起初是使用Matlab,当时每个人都使用这个软件。不过,遗憾的是,Matlab不是一种真正的语言,当时所有人都为此嘲笑我,所以我转而学习Python/numpy,手写出我自己所有的反向传播算法代码。不过,不幸的是,numpy不适用于GPU,因此,学习Python也行不通。
之后,我开始学习Torch,我当时非常喜欢这个计算框架,到现在还是很喜欢。Torch比较简单:你可以在CPU或GPU上透明地以各种方式操作Tensor 对象,并且可以使用这种简易的深度学习专门转化器。你几乎可以理解所有的内容,并对所学到的知识进行检测,改善,都是行得通的。
我现在使用TensorFlow,OpenAI的所有研究者都在使用这种系统。说实在话,我觉得我的代码变得越来越复杂。相比使用Torch,我现在要花费很多时间来排除故障。我现在还处于学习阶段,不过,我觉得现在遇到的难题都是暂时的。
我们再探讨的深入一些,我感觉到在学习TensorFlow的过程中,自己放弃了很多东西(比如,我不能再轻而易举地处理原始梯度,不能全面检测代码库,不能再简单地运用任意命令代码创建网络层,此外,编写代码要花费更多的时间),但是,我的收获付出并不对等。尽管这样,我选择TensorFlow就像下了一个长期的赌注,现在正在这条路上变得越来越专业。如果你不想做出太疯狂的选择,喜欢自己小型,敏捷,透明,快速的代码,Torch依然是个不错的选择。
您是如何学习强化学习(RL)的?
关于RL,我在博客上放过一些相关链接:Deep Reinforcement Learning: Pong from Pixels。这篇博文简要回顾了RL背后的基本思想。更专业一点,我推荐从Sutton的书入门打基础,再看John Schulman或Pieter Abbeel近来的一些公开课(例如,蒙特利尔深度学习夏令营的公开课就很棒),然后从头反复实践DQN或策略梯度方面的知识。利用OpenAI的Gym慢慢适应整个研究环境。
遗憾的是,在许多新的领域,很难做到在研究领域之外实验突破。如果你决心要投身AI研究的话,我认为,你肯定想要与该领域更有经验的人合作。在RL研究领域更是如此,因为关于如何利用函数,基线,如何设置实验步骤,如何有效地排除故障,等等,都鲜有诀窍,这些在相关论文中都得不到系统的解答。相反,在一个领域的研究者中,这些知识都仅算得上常识。当然,这并不是说你真的无法自己实现某一领域的突破,只是利用1对1学徒学习这种方式可以少走很多弯路了。
您能否为一个有志成为一名机器学习工程师的本科生提供一些建设性的意见?
本科生往往太注重分数(我曾经也犯过相同的错误)。我将开始削减一些具体的项目,将这些项目记录在Github或博客上。我觉得,有自己参与过的具体工作和项目是非常宝贵的经历。
您认为,有哪些方面在ML发展过程中没有受到重视?
目前,我尚未找到合适的答案来回答这个问题,不过,我认为,我们在深度学习领域所做的都是存储(memorization)(比如,内插法,模式识别等),而不是思考(thinking)(比如,外推法,归纳法等)。我还没有见到过能够“思考(think)”的神经网络,而且我也不知道,如何定义“思考”这样一个抽象概念,更难以想象会“思考”的神经网络会是什么样的。
有一些文章似乎解答过这个难解的谜题,不过,我尚不能苟同。如果非让我指出有什么作品提及到“会思考的神经网络”(我个人的观点),那应当是Jacob Andreas的动态神经网络(dynamic neural nets)一书。关于这个话题,我暂且讲到这里。
工作篇
在Google Brain工作是什么体验?
2011年我在Google Brain实习,那个时候Google Brain的发展正处于幼儿期。当时,这个项目人手还不是很多,我们都对无监督学习超感兴趣。当我2013年再次来实习时,大家都对监督学习很痴迷,因为在当时监督学习真的很有用。2015年,当我再次回到Google时,强化学习又开始盛行。
如今Google Brain与往昔大不相同。我想说的是,这里聚集了很多有才能,很牛的研究员,工程师,尤其是有一些能够大规模运用深度学习的经验丰富的人士。我觉得,Google 非常看重Brain 这个项目,他们都有很优秀的领导型人才,为大家营造了很棒的工作环境(这是我从公司内部朋友那儿得来的消息),在这里我个人不能给予过多评论。
您为什么选择去OpenAI?
我觉得,OpenAI是一块极具创新性的土地,这是它最吸引我的地方。这样一个机构涵盖了学术研究,有一个产业界研究实验室,是AI研究领域的后起之秀。我们也有一些非凡且有趣的实验,如贝尔实验室,一个政府管制垄断的大型研究实验室。上述这些都有其有趣的优点和缺点。我觉得,OpenAI在创新方面有非常有趣的实验,结合了我所感兴趣的事物(是学术与产业的结合),像这样一个组织能够创造出更多价值,我有幸能够参与实验,能够从一开始便陪伴其成长发展。所以,我选择了OpenAI。这是我人生中很关键的一步。
OpenAI当前最有趣的研究课题有哪些?
有一些非常有价值的项目和计划,在学术界根本无法开展(比如,大量工程方面或者综合性工作是一小群博士生无法胜任的),而产业界人士可能不想去做(比如,可能出于动机方面的原因,也可能有法律方面的顾虑)。OpenAI目前正在致力于开展几项极具价值的项目,这些项目不仅仅限于科研工作本身,可以被认为是在做“元”的东西,比如开设一些平台和基础设施,为每一位研究者提供便利。我们今年早些时候发布的 Gym不失为一个好例子。
具体来讲,我们中有很大一部分人(包括我在内)都专心投入到一个项目中,我本人对这个项目特别感兴趣,不过,我想,这个项目目前还未公开讨论过。总之,目前我只能透露,该项目涉及很多工程方面的工作,在很大程度上能够提升并扩展AI领域的研究工作。关于这个项目的进展,在这里我只能为大家留下悬念,非常抱歉。
Andrej Karpathy博士的论文详细
本文由雷锋网独家编译,未经许可拒绝转载!