在这场访谈中,Jeff Dean讲了一些有趣的往事。
1999 年 8 月,Jeff Dean 加入了谷歌,成为早期第 20 号员工。他在 2011 年参与创立了 Google Brain 团队,专注于智能机器领域的进展。自那时起,他的工作重心转到了 AI 和 ML 领域的研究、系统和应用,并引领了更广泛 AI/ML 和计算机科学研究社区的发展方向。
2020 年 12 月,Jeff Dean 获得了 2021 年度 IEEE 冯诺依曼奖,以表彰他对大规模分布式计算机系统和人工智能系统科学与工程的贡献。2023 年 4 月,谷歌宣布将旗下 Google Brain 和 DeepMind 合并,成立了 Google DeepMind。Jeff Dean 成为该部门的首席科学家。
作为谷歌的 AI「掌门人」,在谷歌工作了 25 年的 Jeff Dean 见证着 AI 发展的过去、现在与未来。在最近的一次访谈中,他和伦敦大学学院的副教授 Hannah Fry 畅谈了谷歌 AI 布局的昨天、今天与明天。
在访谈中,Jeff Dean 开启了回忆杀。
90 年代,神经网络的性能有限。Jeff Dean 在本科时曾探索过大规模神经网络,以失败告终,后来在谷歌,是和吴恩达的一次谈话激发了他继续扩展神经网络的想法。
彼时,大洋彼岸的 DeepMind 正在主攻强化学习,来谷歌访问的史上最强 60 岁「实习生」Hinton(没错,就是深度学习之父)提议去考察,这才有了 Google 和 DeepMind 的强强联合。如今,Scaling 和强化学习都让 AI 的智能程度上了一个台阶。
Jeff Dean 还分享了一个有趣的事情,Gemini 这个名字是他提出的。Jeff Dean 表示 Gemini 代表双胞胎,就像 DeepMind 和 Google Brain 的合并,代表着这两个部门共同致力于一个雄心勃勃的多模态项目。
大家都在谈论的 Transformer,Jeff Dean 也进行了简单明了的介绍。
以下是访谈主要内容的摘录:
重拾神经网络,起因竟然是和吴恩达聊天?
主持人:你还记得你第一次接触神经网络是什么时候吗?
Jeff Dean:神经网络有着有趣的历史。人工智能(AI)本身是一门相当古老的学科,早期的 AI 研究主要是试图定义一系列规则,告诉我们世界是如何运作的。这一阶段大概发生在 20 世纪 50 年代、60 年代和 70 年代。后来,神经网络在 70 年代开始出现,并在 80 年代末和 90 年代初迎来了一波热潮。
大约在 1990 年,我还是明尼苏达大学的一名本科生。我当时正在上并行处理课程,学习如何将一个大问题分解为可以在不同计算机上独立完成的小问题,然后让这些计算机一起协作解决问题。
主持人:那听起来有点像我们今天所说的并行计算能力不足的问题。你们当时是怎么让计算机「像团队一样」工作的?
Jeff Dean:当时神经网络是一种特殊的机器学习和 AI 方法,基于我们对大脑工作原理的粗略近似 —— 特别是人类或其他生物的大脑如何通过神经元协同工作。这就是为什么它们被称为「神经网络」,因为它们由人工神经元组成。每个神经元与其他神经元相连,通过信号传递来决定是否对某一特定输入模式做出反应。
一个神经网络通常有很多层次。较低层次的神经元学习识别一些简单的特征,比如图像中的色块或边缘。然后,较高层次的神经元会在这些简单特征的基础上学习识别更复杂的模式,比如物体的形状,甚至是脸部的特征。
因此,通过构建这些分层的学习抽象,这些系统实际上可以发展出非常强大的模式识别能力。这就是 80 年代末和 90 年代初大家对神经网络感到兴奋的原因。
然而,当时的网络规模非常小,只能识别一些手写数字或非常简单的人工模式,远不能识别像人脸或汽车这样的复杂对象。
人们当时很兴奋,因为这些网络可以解决一些基于逻辑规则的系统无法解决的问题。神经网络可以泛化到处理凌乱的手写字符,而基于规则的系统很难做到这一点。
在听了两次关于神经网络的讲座后,我对此产生了浓厚的兴趣。我决定写一篇关于并行训练神经网络的高级荣誉论文,因为我认为我们只需要更多的计算能力。如果我们可以使用系里的一台 32 处理器的机器,是不是就能训练出一个更大的神经网络?这就是我花了几个月时间研究的内容。
主持人:那有效果吗?
Jeff Dean:是的,但不如我想象的那么好。我当时是个天真的本科生,认为 32 处理器就能让神经网络「嗡嗡作响」,快速运转起来,但实际上,我们需要大约一百万倍的计算能力,才能让这些网络真正解决实际问题。
不过,随着摩尔定律带来的 20 年计算进步,CPU 和其他计算设备变得越来越快,我们终于拥有了可以实际应用的系统,其计算能力是当时 32 处理器机器的一百万倍。
后来我重拾对神经网络的兴趣是在遇到吴恩达之后。当时,他是斯坦福大学的老师,每周有一天在谷歌做顾问,我有一次在公司的微型厨房里遇见了他。我当时好像问了,「你在谷歌做什么工作?」他说,「我还没有弄清楚,因为我刚来。但是我在斯坦福大学的一些学生在神经网络方面取得了很好的成绩。」我说,「哦,真的吗?那我们为什么不训练一个非常大的神经网络呢?」
这就是谷歌神经网络工作的起源。然后我们成立了一个名为谷歌大脑的小团队,开始研究如何利用谷歌的计算资源训练非常大的神经网络。所以我们建立了软件基础设施,使我们能够获取神经网络描述,然后将其分解成可以在不同计算机上、由团队的不同成员完成的片段。这些计算机以它们需要的方式相互交流,以解决如何在 2000 台计算机上训练单个神经网络的总体问题。这是我们为真正扩大神经网络训练而开发的最早的软件。它让我们能够训练比现有神经网络大 50 到 100 倍的模型。
主持人:这大概是 2011 年的时候,对吗?
Jeff Dean:是的,那是在 2012 年初。
主持人:所以这是图像识别领域取得重大突破之前的事情,对吧?这听起来像是很早期的工作。在很多方面,你当时做的事情其实和你之前做的一样,只不过是把多个计算机结合起来工作。
Jeff Dean:是的,就像我本科毕业论文里做的那样。只不过这次做出的神经网络真的能用了,因为我们的计算机变得更快,而且我们用了更多的计算机。
主持人:但在 2011 年,你觉得这是一场赌博吗?
Jeff Dean:哦,是的,绝对是。我们当时构建了一个系统,用来训练这些神经网络,并尝试不同的方法来分解这些网络。我把这个系统命名为 DistBelief,一部分原因是因为许多人认为这不会真正起作用,另一部分原因是它是一个分布式系统,除了神经网络之外,我们还想要训练的是「信念网络」。
谷歌收购 DeepMind,提议来自史上最强 60 岁「实习生」Hinton
主持人:这太惊人了。当这一切发生时,在大西洋彼岸,一家名为 DeepMind 的公司正在崭露头角。
2011 年,Demis Hassabis 创立了 DeepMind
Jeff Dean:是的。
主持人:你就是提出想去考察 DeepMind 的人,对吧?给我们讲讲这个故事吧。
Jeff Dean:好的。Jeffrey Hinton,他是非常有名的机器学习研究者。他在谷歌度过了一个夏天,那大概是 2011 年。我们不知道该如何给他定位,所以 Hinton 被归类成实习生了。想想还挺好笑的。
主持人:历史上最高级的实习生。
历史上最高级的「实习生」
Jeff Dean:所以,他和我一起工作,不知怎地,我们发现了 DeepMind。Hinton 应该更了解 DeepMind,比如公司的构成。其他一些人也提到过,说:「哦,是的,英国有这么一家公司。」
主持人:当时 DeepMind 的规模还很小。
Jeff Dean:是的,当时他们大概只有 40 到 50 个人。所以我们决定代表公司,把他们当成潜在的收购对象考察。后来我在加州,Hinton 回到了多伦多,他要回去教课。
还有,Hinton 的背不好,所以他不能长时间坐飞机,因为他不能坐下来,他只能躺下或站起来。你在飞机起飞时站起来,机长可能要不开心了。那我们必须想办法解决,于是我们在私人飞机上安排了一张医疗床。我们一群人从加州起飞,飞往多伦多,在停机坪上接上 Hinton,并把他安置到飞机上的医疗床上。
再一起飞到英国,降落在一个小机场。机场在郊区。我们上了一辆商务车,成群结队地去参观 DeepMind。当时 DeepMind 大概在罗素广场附近办公。前一天晚上我们坐飞机真的很累,但 DeepMind 带来了连续 13 场 20 分钟的讲座,他们汇报各自的业务。
主持人:一个组一个组地来吗?
Jeff Dean:是的。所以我们看到了 DeepMind 的工作成果。
主持人:当时时差还没倒过来吧?
Jeff Dean:是的,时差还没倒过来呢!
主持人:这好像情景喜剧的剧情。
Jeff Dean:没错。所以我们听了一些他们正在研究的 Atari 的报告,后来他们也发表了如何运用强化学习让 AI 学会玩旧版 Atari 2600 游戏的相关论文,比如「breakout」或者接乒乓球,各种各样的有趣小游戏。
2016 年,DeepMind 为强化学习引入无监督辅助任务,使得人工智能的 Atari 游戏水平达到人类的 9 倍。
主持人:因为当时谷歌还没开始做强化学习,对吧?
Jeff Dean:是的。我们当时主要都在扩大规模,大规模的监督和无监督学习。
主持人:强化学习更受奖励的激励。
Jeff Dean:是啊。我认为这些技术都有用,它们往往结合起来使用。我们可以这么来理解强化学习:有某些智能体要在某个环境中进行一些动作,每一步都有很多决策要做,有很多动作可以选择。
例如,在围棋游戏中,你可以把棋子放在棋盘里的任意位置,你可以上下左右移动 Atari 的操纵杆,你也可以按控制方向的按钮。通常在这种情况下,你不会立即得到奖励,比如在棋盘上放了一枚棋子,你不知道这一步走得好不好,直到整个棋局结束了才知道。
强化学习有一个有趣之处,它能够处理较长的动作序列,并根据你做出这些动作时的预期程度,将奖励或惩罚分配给你采取的动作序列。比如这是一个好的想法吗?AI 按这个想法赢了,那就倾向这个方向一点;输了,那就别太觉得那是个好主意。这大概就是强化学习的主要思想。这是个相当有效的方法,尤其是在不清楚这是否是个好主意的情况下。
相比之下,监督学习是你有输入,并且有实际的输出。举一个经典的例子来说,这里有一堆图像,每张图片都标了一些特征。比如,这是一张图,画面中的物体是汽车。这是另一张图,画面中的物体是鸵鸟。这里有另一张图,画面中的物体是石榴。
主持人:你去 DeepMind 考察的时候,做了要收购的决定,那 Demis 紧张吗?
Jeff Dean:他紧不紧张,我不知道。我当时说:「好,我听过了这些精彩的演讲,但是我能看一点代码吗?」因为我想确认这些演示背后确实有真实的代码,并且看看他们的编码标准如何,像是人们是否真的写了注释,类似这样的东西。
Demis 有点不确定。我说:「不必给我看机密代码,只需选择一些代码并向我展示。」
于是我和一个工程师走进一间办公室,我们坐下来了 10 分钟。我说:「好,这段代码是做什么用的?」哦,原来是做这个的。那段是做什么用的?在哪里能向我展示这一功能的实现?我很满意地走出了那间办公室。
主持人:他们的代码很整洁。
Jeff Dean:那是相当整洁。对于试图快速发展的小公司来说,它是一种研究代码,但你清楚地知道 DeepMind 的代码有趣且有据可查。
主持人:我听说你编写代码时,会添加一个名为「lgtm」的东西。
Jeff Dean:是的,对我来说很有用。我在现实生活中也用它,不仅仅是为了代码审查。
主持人:好吧,那么在 DeepMind 展示的 PPT 中,有什么展示给你留下印象了吗?
Jeff Dean:他们的工作看起来非常有趣,特别是在强化学习这方面。谷歌专注于扩大规模,所以我们训练的模型比 DeepMind 的模型大得多。当时 DeepMind 正在做各种尝试,但他们当时主要用强化学习解决 AI 玩游戏的问题。游戏是一个很好的、干净的强化学习环境,但似乎结合了强化学习加上谷歌一直在做的扩展,最后的成果将会很惊艳。
主持人:这就像是对问题两面夹击,一方面通过强化学习,从微处着手,逐步构建;另一方面,从扩大模型的规模来解决问题。当你把各方面结合起来时, 便能释放出强大的力量。
Jeff Dean:是的,确实如此。这也是我们去年将 DeepMind、Google Brain 和其他 Google 研究部门合并的主要原因。我们决定将这些部门合并在一起,成立 Google DeepMind。
构建 Gemini 的想法早于合并之前,我们都在尝试训练真正高质量、大规模、多模态模型。合并前是分散想法、各部门之间合作少、并分散宝贵的计算资源等是没有意义的。我们应该把所有这些放在一起,建立一个联合团队来解决问题。
主持人:那为什么叫 Gemini?
Jeff Dean:实际上是我给起的名字。
Gemini 代表双胞胎,就像 DeepMind 和 Google Brain 的合并,代表着这两个部门真正开始合作并开展一个雄心勃勃的多模态项目,这是一个很好的名字。
Jeff Dean 对 Transformer 的看法
主持人:我想谈谈关于多模态的内容。但在此之前,我想公众对聊天机器人和大型语言模型的认识发生如此巨大变化的一个重要原因是,谷歌在 Transformer 方面的一些工作,你能向我们介绍一下 Transformer 及其带来的变革吗?
Jeff Dean:当然。在语言和其他领域解决的问题,都是序列问题。例如,在 Gmail 中的自动补全功能,当你输入一个句子时,系统能够帮助你完成剩下的部分。这主要依赖于模型观察到一部分序列后,预测接下来会发生的内容。这就是大型语言模型训练的目的:它们通过逐个词或词的一部分输入数据,然后预测下一个可能出现的内容,就像一个高级的自动补全功能。
事实证明这很有用,你也可以用这种方式模拟很多不同的问题。例如,在翻译中,可以将其建模为接收一个英文句子,并训练模型输出对应的法语句子。只要有足够的英、法句子对作为训练数据,就可以按照序列来进行训练。此外,这种方法也可以应用于医疗领域,比如预测一个患者根据他们报告的症状、实验室检测结果以及过去的病历记录,你可以将整个情况建模为一个序列,然后预测最可能的诊断。如果你有其他去标识化的数据可供训练,这些数据也以序列的形式组织,你可以通过隐藏序列的剩余部分,迫使模型预测下一步会发生什么。这种方法不仅适用于语言翻译和医疗设置,还适用于 DNA 序列等多种场景,非常有趣且广泛适用。
在 Transformer 架构之前成功的模型是所谓的循环模型,这些模型具有某种内部状态,每当它们看到一个词时,就会进行一些处理来更新其内部状态。然后继续处理下一个词,并重复这一过程。因此,它们会将状态向前推进一点,并根据刚刚看到的下一个词来更新状态。可以将这个过程想象成一个包含 12 个词的句子,你需要更新状态 12 次,但每一步都依赖于前一步。这意味着要使其快速运行实际上相当困难,因为存在所谓的顺序依赖性,其中第 7 步依赖于第 6 步,第 6 步依赖于第 5 步,依此类推。
因此,Google Research 的研究人员们想出了一个非常有趣的想法,那就是我们不要只更新一个单词的状态,而是一次性处理所有单词。并且记住在处理每个词时得到的状态。然后在尝试预测新词时,关注所有之前的状态,并学习如何关注重要部分。这就是 Transformer 中的注意力机制,用来预测下一个词。在某些情况下,你可能需要非常关注前一个词;在某些上下文中,关注上下文中的许多词语都很重要。但关键的是,这个过程可以并行完成。你可以接收 1000 个单词,并行计算每个单词的状态,这使得在扩展性和性能上比以前的循环模型提高了 10 到 100 倍。这就是为什么这一发现如此重要的原因。
我认为我们在 Google Brain 团队中所做的语言建模工作实际上是对单词进行建模,而不是对单词的表面形式(如 hello)进行建模,实际上是对高维向量进行建模,该向量表示单词的使用方式。我们人类习惯于在二维和三维空间中思考,但是当你有 100 个维度或 1,000 个维度时,一千维空间中就会有很多空间。你以某种方式训练模型,cow、sheep、goat 和 pig 这些词会彼此靠近,而与 espresso machine 这样的词相距甚远,这种高维表示尤其显得有意义。
主持人:milk 和 sweet milk 会比较接近。
Jeff Dean:虽然 milk 可能指的是 sweet milk,milk 在这种高维模型中可能更靠近 cow,但又位于两者之间的某个位置。这正是这些模型拥有出人意料的强大能力的原因之一,因为它们用如此多的高维度来表示事物,使得它们能够同时紧密地抓住一个词、一个句子或一个段落的多个不同方面,因为在它们的表示路径中有很多空间。这种表示方式从某种程度上提取了我们自己给语言赋予的基础含义。
我们在听到一个词时,并不仅仅考虑这个词的表面形式。比如 cow,它会触发一系列其他事物的联想,如 milk、espresso machine、milking、calf 和 bull。我们在早期词表示中发现,方向具有含义。例如,如果你考虑动词的现在时态,比如 walk,在这个百维空间中,从 walk 变为 walked 的方向,和从 run 变为 ran 的方向,以及从 read 变为 read 的方向是相同的。
这实际上表明它能够理解,这里确实存在一种时态的表达方式。而且,这是从训练过程中自然产生的,不是我们故意设定的。我们使用的训练算法和语言中特定形式的多样使用方式导致了这种现象的出现。例如,你还可以改变词的性别,如从 cow 到 bull 的方向,和从 queen 到 king 或从 woman 到 man 的方向是相同的。
主持人:这确实令人惊讶。但我们目前讨论的还只是语言。那么多模态的方面是如何改变的呢?它有什么不同?多模态模型能够触发与我们看到一头牛时在大脑中产生的类似激活的东西,从 cow 这个词,到听到牛叫的声音。
Jeff Dean:你希望训练的模型能够拥有这种联合的意义和表达,不论它们是如何获得输入数据的。所以,如果模型看到一个视频,里面是一头牛在田野中行走,那么这应该在模型中触发一系列与此相关的事物,基于模型构建的激活。这些模型通常是非常深层的。最低层通常具有非常简单的表达,而模型中更高层次的层则在这些表达的基础上构建,形成更有趣、更复杂的特征和表达组合,无论是词语还是图像。
我认为弄清楚如何将不同的模态整合到模型中,以及应该如何训练一个多模态模型,确实比训练一个单纯的语言模型要复杂的多。但从中你可以获得很多好处,例如有时能实现跨模态的迁移。我们现在看到关于牛的视觉内容实际上有助于语言信息的形成。也许你之前看到了许多关于牛在草地上的描述,但现在突然之间,模型看到了相关的图像和视频。它实际上能够以一种方式将这些表征融合在一起,使得无论是看到 cow 这个词还是相关的图像,都能在模型内部触发类似的反应。
文章来源于“机器之心”
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI