Py学习  »  机器学习算法

引领人工智能革命的程序员、OpenAI的秘密武器Greg Brockman:五年前,我并不擅长机器学习

InfoQ • 4 月前 • 100 次点击  

编辑 | Tina

Greg Brockman 因担任 OpenAI 联合创始人兼首席技术官而闻名。

Brockman 曾于 2008 年在哈佛大学就读,后来转到麻省理工学院,但也没待多久,2010 年,他退学加入金融科技初创公司 Stripe。随后,Brockman 在 Stripe 待了五年,最终成了公司 CTO,在这段时间里,Stripe 实现了爆炸式增长,成为科技行业中最有价值的创业公司之一。2015 年他离开 Stripe 并创立了 OpenAI。

虽然 OpenAI 的 CEO Sam Altman 代表公司的公众形象,但 Brockman 是公司的秘密武器:

Brockman 作为 OpenAI 的总裁,一直在推动 OpenAI 的产品前进。Altman 说:“如果没有他的参与,整个项目不可能以如此高的质量交付。”Quora 的 CEO Adam D’Angelo 则评论说,“Greg 是那个真正能使技术变成现实的人。”

Brockman 的日常职责与拥有该头衔的大多数科技领导者几乎没有任何相似之处——34 岁的 Brockman 没有直接下属,这使他免于常规的管理类繁琐事务,可以将大约 80% 的时间用于编程工作。

“Greg 有极强的能力,能够看到每个技术问题的细节,对每个层次都了如指掌,同时也能非常有战略性地考虑每个部分需要如何协同工作。”Altman 说。

Brockman 是一位“流动人员”,在不同的团队之间游走,制定目标并推动团队在软件效率方面逐步改进。在达到特定节点时,他将项目交给管理者,并转向新项目。“我一直在不断地探索新领域。”Brockman 说。

在 OpenAI 的前几年,Brockman 和 Ilya Sutskever 做了大部分日常决策,Brockman 管理公司的软件工程师,而 Sutskever 则负责管理研究员。

因此,Brockman 需要解决的一个难题是让研究员和工程师协同工作的问题,这让他必须需要了解人工智能相关的工作。而作为一个长期从事软件方面的工作,并且没有接受过正规的“人工智能”方面的本科教育的人来说,自学机器学习肯定具有挑战性。

Brockman 自称是“人工智能方面的新手”,在 OpenAI 工作的头三年里,虽然他一直梦想可以成长为一名机器学习专家,但是他的机器学习技术能力一直没有长进。但之后,他花了九个月的时间,终于完成了向机器学习实践者的转变。

Greg Brockman 过去的文章和演讲主要集中在软件方面。

他曾写过一篇文章,来总结他的学习过程,在这篇“励志”文章中,Brockman 指出,这很难,但并非不可能。在他看来,大多数优秀的程序员都会一些(或愿意学习)数学,既然如此他们就也能做到这一点。他给我们的一个建议是:花时间进行试验、快速失败,然后继续根据现实世界的用例进行研究。下面让我们一起看看这篇文章:

Greg Brockman 的自述:
我是如何成为一名机器学习从业者的?

在 2018 年假期期间学习机器学习

早      期

OpenAI 的一个基本原则是重视研究和工程——我们的目标是构建能够解决以前不可能完成的任务的工作系统(我们团队中有 25% 的人主要使用软件技能,还有 25% 主要使用机器学习技能,剩下 50% 混合使用这两种技能)。所以从入职 OpenAI 的第一天开始,我的软件技能就一直很 受欢迎,这也致使我一直拖延学习机器学习技能。

在帮助完成了 OpenAI Gym 项目之后,我被安排负责 Universe 项目。之后,我们团队又开始致力于 DOTA 项目——在开始机器学习之前,我们需要有人将游戏场景变成一个机器强化学习环境。

  DOTA  

在没有源代码的情况下将如此复杂的游戏转换成一个研究环境是一项非常有挑战性的工作,每当我有所突破的时候,团队都会感到很兴奋。我知道如何打破游戏的 Lua 沙箱,在 GRPC 服务器上以编程的方式使用 LD_PRELOAD 控制游戏, 增量地将整个游戏状态转储到原 buf 中, 并为我们可能想要使用的许多不同的代理配置构建一个对未来兼容的 Python 库和抽象层。

但我感到当时有点盲目了。在 Stripe 时,尽管我更倾向于基础设施解决方案,但我可以在堆栈的任何地方进行更改,因为我非常熟悉产品代码。在 DOTA 项目中,我不得不从软件的角度来思考所有的问题,这意味着有时我会碰到一些困难的问题,而这些问题本可以通过稍微不同的机器学习来避免。

我想像我的同事 Jakub Pachocki 和 Szymon Sidor 那样,他们创造了驱动 DOTA 机器人的核心突破。他们并不认为 OpenAI 中的增强算法不能伸缩。为此他们编写了一个分布式强化学习框架,名为 Rapid,每两周左右就以指数形式进行扩展,运行的一直很顺畅。我希望能够做出一些关键的贡献,比如把软件和机器学习技能结合起来。

左边是 Szymon,右边是 Jakub

2017 年 7 月,我似乎有了机会。软件基础设施很稳定,我开始着手一个机器学习项目。我的目标是利用行为克隆从人类训练数据中教授神经网络。但我并没有完全准备好,我感觉自己会像一个初学者。

我一直为一些小的工作流细节感到沮丧,这些细节让我不确定自己是否取得了进展,比如不确定某个给定的实验使用了哪些代码,或者意识到我需要将上周的结果与我没有正确存档的结果进行比较。更糟糕的是,我不断地发现一些小错误,这些错误一直在破坏我的结果。

我对自己的工作开始失去信心,但奇怪的是,别人对我很有信心。人们会安慰说从人类数据中克隆行为是多么多么困难。而我总会从自己身上找问题来说明是我自己的问题,这可能是我更愿意相信是我能力问题而非项目问题。

当我的代码被使用到机器人项目中时,我觉得一切困难都是值得的,Jie Tang 将我的代码用在蠕变阻塞上,然后通过强化学习对其进行微调。但是之后他找到了不用我的代码就能得到更好结果的方法,这也意味着我的努力没有带来任何成果。

之后我就再也没有在 DOTA 项目上尝试使用过机器学习。

超      时

在 2018 年的国际比赛中,我们输掉了两场比赛,大多数人都认为我们已经竭尽所能。但从我们的度量标准中,我们知道我们离成功已经非常靠近了,最需要的是用更多的数据训练学习。这意味着,我们需要降低对时间的要求。2018 年 11 月,我觉得自己有了一个机会,可以用三个月的时间来赌一把。

队员们在国际比赛中输掉了第一场比赛后情绪高涨

当我的目标确定了之后,我往往能够做的更好。我决定试着做一个聊天机器人。我开始自学我们为学员制定的课程,只选择与 NLP 相关的模块。例如,我编写并训练了一个 LSTM 语言模型,然后是一个基于转换的模型。我还研读了信息论等主题的书,阅读了许多论文,每一行都细细研读,直到完全吸收。

其实进展过程很缓慢,这也是之前就预想到的。这让我想起了我刚开始编程时的感受,我一直在想,要花多少年的时间才能获得一种掌控感。老实说,我并不相信自己会擅长机器学习。但我一直在努力,因为……说实话,因为我不想被限制在只理解我项目的一部分,我想把全貌看清楚。

我的个人生活也是让我坚持下去的一个重要因素。我和一个人开始了一段感情,他让我觉得即使失败也没关系。我和她一起在解决机器学习的问题中度过了我们的第一个假期,但无论因为学习耽误了多少计划好的活动,她都能理解并陪着我。

一个重要的关键点是克服我不敢使用 DOTA 的障碍:对其他人的机器学习代码进行实质性的修改。我对找到的聊天数据集进行了 GPT-1 微调,并做了一些小修改,添加了我自己的原始采样代码。但当我试图生成更长的消息时,它变得非常慢,之前的恐惧也逐渐变成了沮丧, 我实现了 GPU 缓存——这一改变影响了整个模型。

我尝试了好多次,寻求各种帮助,因为它们超出了我头脑中所能容纳的复杂性。几天后,当它可以正常工作时,我才意识到我学到了一些以前我认为不可能的东西:我现在理解了整个模型是如何组合在一起的,包括一些小的风格细节,比如代码基如何优雅地处理 TensorFlow 变量范围。

改      进

经过三个月的自学,我觉得自己已经准备好做一个真正的项目了。这也是我觉得我可以从 OpenAI 的许多专家那里受益的第一点,当 Jakub 和我的联合创始人 Ilya Sutskever 同意为我提供建议时,我很高兴。

Llya 在我们公司外唱卡拉 OK

我们开始得到非常令人兴奋的结果,Jakub 和 Szymon 全职加入了这个项目。每当我看到他们在我的机器学习代码库中做出 commit 时,我都感到很自豪。

我开始觉得自己具备机器学习能力了,虽然我还没有完全掌握。但这反映在了我能激励自己专注于机器学习工作的时间上——我现在的编程时间大约是我过去工作时间的 75%。

这是第一次,我觉得我正在步入正轨。起初,我被似乎无穷无尽的机器学习新概念淹没了。在最初的六个月里,我意识到我可以在不断学习全新的基础知识的情况下取得进步。 我仍然需要在许多技能上获得更多的经验,比如初始化一个网络或设置一个学习进度计划,但现在的工作感觉是渐进的,而不是潜意识中认为不可能。

从我们的研究员和学者项目中,我知道拥有扎实的线性代数和概率基础的软件工程师只需几个月的自学就能成为机器学习工程师。 但不知何故,我说服自己,让自己认为是一个例外,无法学习。但是我错了——即使是在 OpenAI 这样的公司,我也不能进行角色转换,因为我不愿意再次成为一个初学者。

你可能也不是一个例外。如果你想成为一个深度学习的实践者,你一定可以。你需要给自己失败的机会。如果你从失败中学到足够多的东西,你就会成功——而且成功所花的时间可能比你想象的要少得多。

在某种程度上来说,和优秀的专家一起工作对你会很有帮助。这是我非常幸运的一个地方。如果你是一个优秀的软件工程师,请记住,有一种方法可以让你跟优秀的人一起工作——来 OpenAI 工作吧!

原文链接

https://www.infoq.cn/article/xFSNjrv9MaNdsODqOITh

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

软件开发“食物链”:运维竟高于开发,最顶端该是用户还是管理层?

滴滴 P0 事故,K8s 背锅?拼多多正式登顶中国电商巨头,马云阿里内网罕见发言;学霸女儿创业AI项目火了,老爸公司涨停|Q资讯

ChatGPT 一周年:生成式 AI 出现后,我决定以后砸锅卖铁都不让后代当程序员了

亚马逊 CTO 20 年架构经验之道:俭约架构师的七大黄金法则!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/165321
 
100 次点击