本文来自微信公众号:胖福馒头(ID:amazingfounder),编译:胖福馒头,原文标题:《OpenAI联合创始人:什么是研究中至关重要的》,题图来自:视觉中国


因为做早期风险投资,让我有大量的时间与许多优秀的创始人打交道。尤其是近一年来,在与一些院士和优秀科研团队的共事中,我们一起尝试跨越从学术研究到产业转化的鸿沟,探索将研究成果通过商业化公司发展的最佳实践。


通常来说,企业的创始人和科研学者完全是两类人,但这两类人群中的优秀者也有一些共性的特征。他们都需要面对高失败率的挑战,他们的成功都建立在找到所处领域的最重要的问题,并找到其解决方案。


随着国家大战略的需求和创投生态的发展,如何提升学术研究的能力和研究成果在产业端的价值是很值得思考和讨论的话题。


今天分享一篇来自John Schulman关于机器学习领域的研究思考内容,希望能起到抛砖引玉的作用。也许你对John有些许陌生,但他作为联合创始人创立的OpenAI目前是全球最受瞩目的科技公司,John Schulman也是强化学习领域中最有话语权的学者之一。


在这篇内容中,John基于自己长时间从事研究的经验对机器学习提出了宝贵的建议。在John看来,研究中至关重要的是选择解决正确的问题,持之以恒地在这些问题上取得进步,并实现高速的个人成长,希望这篇内容能给您带来思考与启发。



这个指南本来是2017年12月为OpenAI Fellows计划编写的,在这篇文章中,我根据自己从事研究和为他人提供建议的经验,为机器学习领域的后起之秀提供了一些建议,包括如何选择问题和规划你的时间。


成功的关键是解决正确的问题、在这些问题上不断进步、并实现持续的个人成长。这篇文章由三部分组成,每一部分都涵盖了其中的一个主题。


先花几分钟时间讨论一下ML(Machine Learning 机器学习)中的哪些发现和成就对你来说是最有趣、最有价值的。想想它们为什么如此突出——因为它是一个改变你想法的突破性结果;或者因为它是一个可重复使用的算法;还是因为它对一些反复出现的问题有深刻见解?你应该渴望产生这样的结果、算法和见解。


一、选择问题


提高你的品味——选择去解决什么问题的能力比你本身具有的技能更重要。通过观察哪些想法成功了、哪些想法被忘掉了,就能逐渐形成你对问题对品味。你会看到哪些问题能产生新想法并获得成果,哪些因为太复杂或太脆弱,或者因为增量改进太小而被忽略。


如何快速培养对问题的品味,其实有几个好办法:


1. 阅读大量论文,并对其进行批判性评估。如果可能的话,与对该主题有深入了解的人讨论它们。


2. 加入研究小组中与其他人一起研究类似的课题。这样你们就可以吸取彼此的经验。


3. 向有经验的研究人员寻求建议。当你决定做哪一项研究,以及你在这项研究上表现如何时,你的技能就该发挥作用了。


4. 花时间思考什么研究是有用的和有成果的。思考以下几个问题:


  • 理论什么时候有用?

  • 实证结果何时可以转化?

  • 是什么原因导致一些想法被广泛接受,而另一些却被遗忘?

  • 你所在领域的趋势如何?哪些研究会淘汰其他研究?


第1~3项需要优化环境和其他研究人员给你信息,而第4项是你自己要做的事情。作为1~3重要性的经验证据,考虑一下最具影响力的研究是如何紧密聚集在少数研究团体和机构中的。


这并不是因为这些人比其他人聪明得多,而是因为他们拥有更高密度的专业知识和观点,这使他们比社群中的其他人领先一点,因此他们在产生新结果方面占据主导地位。


如果你没有足够的幸运处在一个相关专业知识高度密集的环境中,不要绝望。你只需要格外努力,就能走在众人的前面,而且特别重要的是,要专门化和发展你自己独特的视角。


研究:想法驱动VS目标驱动


简单地说,有两种不同的方式可以让你决定下一步做什么。


想法驱动。遵循文献的某些部分。当你阅读一篇关于如何做XX的论文时,有了如何做得更好的想法,然后着手一个项目来测试你的想法。


目标驱动。设定一个愿景,比如你想要为人工智能赋予一些新的能力,然后去解决让你更接近目标的问题。(下面,我给出了几个我自己的研究案例,包括使用强化学习进行3D人形运动的目标。)在你的实验中,你可以测试文献中的各种现有方法,然后开发出自己的改进方案。


当然,这两种方法并不相互排斥。任何给定的ML(Machine Learning 机器学习)子空间都与一些目标有关(例如,目标检测)。任何“想法驱动”的项目都将代表该子空间目标的进展,因此在某种意义上,它是目标驱动研究的一个实例。但在这里,我会把目标驱动研究理解为你的目标比你整个子空间的目标更具体,更像是让X第一次发挥作用,而不是让X更好地发挥作用。


我个人建议大多数人进行目标驱动的研究,我自己也一直遵循这个策略。


想法驱动型研究的主要风险在于很可能会被抢先或重复他人研究。世界各地的研究人员都在阅读相同的文献,所以他们有相似的想法。为了在想法驱动的研究中取得突破,你不仅要对你的主题有非常深刻的理解,还要与社群其他人有不同的观点——有些人可以做到,但很难。


另一方面,有了目标驱动的研究,你的目标会给你一个不同于社群其他人的视角。它会引导你问别人没有问过的问题,使你取得更大的进步。目标驱动的研究也更有激励性。每天早上醒来,你可以想象你的目标实现时会是什么样子,你会有什么感觉。这样会让坚持一个有起有落的长期研究项目变得更加容易。目标也能使一组研究人员合作,攻克一个问题的不同方面,而想法驱动的研究最好由1~2人的“团队”组成。


目标驱动研究案例:我在研究生院期间的研究


在我博士的前半部分,我的目标是让机器人能够操纵可变形的物体——包括外科手术机器人打结、家用机器人叠衣服。虽然这个目标是由我的顾问Pieter Abbeel确定的,这也是他实验室的主要目标,但我对如何实现这个目标有着自己的看法——我的方法是基于从人类演示中学习,从解决让PR2在绳子上打结的问题开始。然后出现了各种意想不到的子问题,其中一个就是轨迹优化,在这个子问题上获得的成果,最后成为了“打结项目”最有影响力的产品。


在博士的后半段,我对强化学习产生了兴趣。虽然强化学习可以应用到很多领域,但是我决定专注于机器人运动,因为这是一个具体的目标,结果也足以让我振奋。


具体来说,我的目标是让一个3D机器人使用强化学习从头开始学习跑步。经过初步探索,我决定将重点放在策略梯度方法上,因为它们似乎最适合理解和数学分析,而且我可以利用我的优势进行优化。在这期间,我开发了TRPO和GAE,最终实现了3D仿人运动的最初目标。


通过运用策略梯度方法研究运动,我获得了第一个成果,DeepMind团队使用雅达利的DQN展示了这些成果。随之,许多人加入了这股潮流,并试图开发更好的Q-learning版本,并将它们应用到Atari领域。


然而,我已经探索了Q-learning并得出结论,对于我正在研究的运动任务来说,这不是一个好方法,所以我继续研究策略梯度方法,所以才有了TRPO、GAE和后来的PPO——现在是我最著名的作品。从这个例子可以看出,从社群的其他问题中选择一个不同的问题是如何引导你探索不同的想法的。


目标驱动研究案例:把自己限制在通解上


目标驱动研究的一个陷阱是把你的目标看得太字面。如果你心中有一个特定的能力,可能有一些方法来实现它,但这种方法并不有趣,也不会推进机器学习领域。你应该把你的研究限制在那些看起来通用的、可以应用于其他问题的解决方案上。


例如,在研究机器人运动时,我避免将领域信息纳入解决方案——目标是在模拟中实现运动,这是一种通用的方法,可以应用于其他问题。为了看到生命的最初迹象,我做了一些特征工程和奖励塑造,但我小心翼翼让我的更改保持简单,不让它们影响我正在开发的算法。


现在,我把视频游戏作为一个试验平台,我敢说我的算法思想不是专门针对这种环境的——它们同样可以很好地应用于机器人。


志存高远,逐步向更高的目标攀登


有时候,那些既聪明又勤奋的人做不出伟大的研究。在我看来,失败的主要原因是他们过于关注不重要的问题。当你着手一个研究项目时,你应该问自己:潜在的上升空间有多大?会有10%的改进还是10倍的改进?我经常看到研究人员接手看似合理的项目,但只能对某些指标产生微小的改进。


在你试图实现的更大目标的背景下,增量研究(那些10%的改进)是最有用的。例如,关于使用卷积神经网络进行ImageNet分类的开创性论文(Krizhevsky,Sutskever,& Hinton,2012年)不包含任何全新的算法组件,相反,它累积了大量的小改进,实现了前所未有的结果,这在当时几乎出乎所有人的意料(尽管我们现在认为这是理所当然的)


在你的日常研究中,你会在表现和理解方面不断进步。但是这些小步骤会让你朝着一个更大的目标前进,这个目标代表着一种非渐进式的进步。


如果你正在研究增量思维,要知道它们的有用性取决于它们的复杂性。在基线上稍微改进的方法最好非常简单,否则没有人会费心去使用它——甚至是你。如果有10%的改进,最好是2行代码,而如果有50%的改进,可以增加10行代码,等等。(我给出这些数字只是为了说明,实际数字显然取决于域。)


二、不断进步


要在机器学习中开发新的算法和见解,需要长时间专注于一个问题。这一部分是关于在这个长期解决问题的过程中如何培养有效的习惯,让你不断地朝着好的结果前进。


使用一个笔记本,并经常翻阅它


我强烈建议你用一个笔记本来记录你每天的想法和实验。我在研究生院学习了5年,在OpenAI学习了2年,我觉得这非常有帮助。


我每一天都会创建一个条目。在这个条目中,我会写下我正在做的事情、我的想法和实验结果(粘贴在图和表中)。每隔1或2周,我会做一个回顾,阅读我所有的日常记录,并将信息浓缩成一个摘要。通常我的回顾包含实验发现、见解(可能来自我、我的同事或我读到的东西)、代码进度(我实现了什么)和后续步骤/未来研究的部分。


做完一周的回顾后,我经常会回顾前一周,看看我是否跟进了那一周我想到的所有事情。此外,在做这个回顾时,我有时会将信息转移到其他笔记来源。(例如,我将backburner想法和项目的列表与笔记本分开保存。)


保留这个笔记本并定期检查有什么价值?


首先,笔记本是一个很好的工具,当你有想法的时候就把它们写下来,这样你以后就可以重温它们了。当我回顾这周的日志时,我通常会补上一个当时没有想到的内容。


第二,笔记本帮助你把你的实验结果保存在一个统一的地方,这样你以后可以很容易地找到结果。你可能很容易忘记一些结论,比如哪些超参数产生了影响,这时你就会想要重新翻阅旧笔记本中的条目。


第三,笔记本可以让你检测自己的时间使用。你如果想知道“上周进行到哪里了”,笔记本会帮你回答这个问题。


你可能会不满意自己的吞吐量,并意识到需要优化你的时间管理。你也可能在几个月后回顾过去,意识到你在想法之间摇摆不定——你有几个半成品项目,但是你没有足够长的时间根据它们来产生显著的成果。


何时切换问题


要解决一个具有挑战性的问题,你需要花足够的时间。但在经验机器学习研究中,很难知道你是否已经足够努力地尝试了一个想法。有时候这个想法有可能行得通,但是如果你弄错了一个细节,你就看不到任何生命迹象。但是其他的想法无论你如何努力都注定要失败。


根据我的经验,相比问题切换不够,过于频繁地切换问题(并放弃有前途的想法)是更常见的失败模式。通常,当你正在为实现当前想法而付出漫长的努力时,另一个有希望的想法会出现,你会想跳到那个想法。如果你可以迅速尝试这个想法,而且潜在的上升空间很大,那么就去做吧。但更常见的是,你对新想法的最初结果会令人失望,需要更持久的努力才能产生显著的结果。


作为一个经验法则,当你回顾你几个月来一直在做的项目时,你应该会发现有很多小的死胡同,但是你的大部分时间都花在了可以交付成果的项目上,比如一篇论文或者一篇博文。


如果你回顾你的时间,发现很大一部分都花在了半成品项目上——这算不上明确的失败,而是你为了一些新想法所放弃的——那你以后应该更加努力地保持一致性,学会坚持到底。


还有一个我没亲自尝试过的策略,但经过思考后我认为它很有意义,那就是投入一些固定的时间预算去尝试与你的研究主线不同的新想法。比方说,每周花一天时间做一些与主项目完全不同的事情。这将构成一种无限的探索,也有助于拓宽你的知识面。


三、个人能力发展


无论你在研究过程中如何分配时间,你一定会学到很多东西。每个项目都会带来新的挑战,你可以在这个过程中获得背景材料和技能。然而,长远来看,通过定期为个人发展留出时间,可以显著提高做好研究的机会。


具体来说,你应该分配一部分时间来提高你对ML的通用知识,而不是只专注于你当前的项目。如果你不分配这些时间,那么在你学会日常研究所需的基础知识后,你的知识可能会停滞不前。适应你所熟悉的方法的舒适区并不难,你需要积极努力去扩展这个舒适区。


建立你的ML知识的主要方法是阅读教科书和论文;并从这些资源中重建算法。在职业生涯的早期,我建议把时间平均分配在课本和论文上。你应该选择一小部分相关的教科书和论文来逐步研究,你也应该重建你最喜欢的论文中的模型和算法。


大多数机器学习的学生在完成他们的学校课程后,不会花时间阅读教科书。我认为这样是不对的,因为教科书是比论文更密集的知识吸收方式。每篇会议论文通常包含一个主要的新观点,以及一个极其简洁的研究背景,从中无法学到任何东西,需要你花更多的时间去理解符号和术语,而不是概念本身。另一方面,好的教科书收集了几十年的想法,并用相同的符号按适当的顺序呈现出来。


除了阅读机器学习入门教材,还要阅读你感兴趣领域的其他书籍。我最喜欢的几本书是Nocedal & Wright的《数值最优化》,以及Cover & Thomas的《信息论基础》。


除了课本,我推荐你阅读感兴趣的研究人员的博士论文。ML中的博士论文通常按以下顺序排列:


1. 介绍性和背景材料

2. 之前在会议上发表的几篇论文(据说你只需将你的论文“钉在一起”就可以写论文了)

3. 结论和展望‍


你可能会从第一和第三部分中受益颇深,因为它们包含了一个由专家撰写的关于该领域过去和未来的统一观点。最新论文通常是找到一个活跃领域文献综述的最好地方,但是旧的论文也经常包含有价值的观点。


教科书和论文有助于积累你的基础知识,但是你也需要阅读大量的论文来将你的知识提升到前沿。当你刚刚开始研究生涯时,我建议花大量时间重现论文中的想法,并将你的结果与发表的结果进行比较。


第一,与被动阅读相比,这会让你对主题有更深刻的理解。


第二,你将获得实践经验,并且通过重现现有的研究(期望的性能水平是已知的),你将获得比做原始研究更快的反馈。一旦你可以很容易地复制最先进的技术,就可以准备好超越它。


除了阅读开创性的论文并重建它们,你还应该跟踪你的领域中发表的不那么优秀的论文。用批判的眼光阅读论文有助于你注意到你所在领域的趋势(也许你注意到许多论文使用了一些新技术并取得了良好的成果——也许你应该探索一下)


它还可以通过观察想法的依赖图来建立自己的品味——哪些想法得到了广泛应用,并为其他想法打开了大门。


去做伟大的研究吧!‍


本文来自微信公众号:胖福馒头(ID:amazingfounder),编译:胖福馒头