杰夫·迪恩
主主持人编者按:本文是谷歌首席科学家杰夫·迪恩(Jeff Dean)的一场公开演讲。他长期主持谷歌大规模系统与机器学习研究,也是 Gemini 项目的联合负责人。演讲以「机器学习的激动人心的趋势」为题,从图像识别、语音识别讲到语言模型、多模态、专用硬件与科学应用,并在结尾回答了现场提问。本文依据现场录音编译整理。
今天我要讲的是机器学习中那些令人兴奋的趋势。这会是一场视野很宽的演讲,不会深入任何一个具体领域,但我认为,理解这个领域正在发生什么、哪些东西值得兴奋、机会在哪里,以及我们在为所有人构建这项技术时该留意什么,都很重要。我要介绍的是谷歌许多许多人的工作。其中一部分我参与过,也是合著者,另一部分不是,只是我觉得你们应该了解的精彩工作。
先从几点观察说起。近些年,机器学习确实改变了我们对计算机能力的预期。回想十年或十五年前,语音识别勉强能用,但远谈不上顺畅,错误很多。计算机并不能从像素层面真正理解一张图里有什么。语言方面,自然语言处理有不少工作,但谈不上对语言概念和多语种数据的深层理解。今天我们已经走到了另一个阶段:你会理所当然地期待计算机能够看见并感知周围的世界,比十年前强得多。这打开了各种惊人的可能,几乎遍及人类活动的每一个领域。想想动物演化出眼睛的那一刻,计算领域此刻正处在类似的阶段。我们有了能看、能感知的计算机,这是一场完全不同的比赛。
另一点观察是规模在不断增长:更大规模地使用计算资源,使用我稍后会讲的专用计算机,使用更大、更有趣、更丰富的数据集,训练更大规模的机器学习模型。把这些东西全部放大,往往就能得到更好的结果。过去十到十五年一直如此,每一次扩大规模,效果都会变好。新的能力会突然涌现,或者某个问题的准确率跨过一道门槛,此前几乎不可用,此后忽然就能用了,于是催生出新的应用。
还有一点:由于这种新的、以学习为基础的范式,我们想运行的计算类型与传统那种手写的、弯弯绕绕的 C++ 代码很不一样,而许多基础 CPU 正是为高效运行后者而设计的。所以我们需要不同类型的硬件,把这些计算跑得更高效。在某种意义上,我们可以把计算机要做的事收窄到一个更小的集合,然后把它们做到极致地好、极致地高效,这样规模的持续增长也就更有可能实现。
过去十年,计算机能做的事取得了惊人的进步。从一张图像的原始像素出发,得到一万或一千个类别之一的标签,十年前的计算机做不到,现在做得到。从音频波形出发,识别出这五秒钟里说了什么,这是语音识别,我们取得了巨大进展。翻译,从「Hello, how are you?」到「Bonjour, comment allez-vous?」,把一种人类语言译成另一种,是计算机能帮我们做的极有用的事。
我们甚至能从一张度假照片,比如一只猎豹趴在吉普车顶上,生成对它的描述。不只是「豹」这样一个类别标签,而是一小句话,讲清楚这个场景里发生了什么。这已经很了不起了。更了不起的是,最近几年我们把很多箭头反了过来。从「豹」这样一个类别标签出发,计算机能给你生成五十张、一百张不同的豹的图像。从「外面有多冷?」这句文字出发生成音频波形,这是文本转语音,存在很久了,但进步很大。翻译方向的反转并不意外,只是越来越好。再往前一步,给出一段对你想要的图像的简短描述,就能得到一张图,现在有时甚至能得到一小段视频;用语言描述一种声音,就能得到一段音频。这些能力正在涌现,我认为这让人非常兴奋:今天我们能用计算机造出的东西,与十年前已经完全不同。
来看看过去十年进步的幅度。斯坦福大学开发了一个叫 ImageNet 的基准,很多人都听说过。训练数据是这样的形式:一堆彩色图像,每张配一个标签,标签来自一千个类别。你可以用大约一百万张这样的图像训练系统。然后给你一批从未见过的图像,你要预测它们的真实标签。机器学习工作的一个核心就在这里:如何把从数据中获得的观察,推广到新的情境、新的从未见过的图像。
2011 年这项竞赛第一次举办,获胜作品的准确率是 50.9%。第二次举办时,一篇著名的里程碑论文出现了,人们亲切地称它为 AlexNet,作者是亚历克斯·克里热夫斯基(Alex Krizhevsky)、伊利亚·苏茨克维(Ilya Sutskever)和杰弗里·辛顿(Geoffrey Hinton)。他们把准确率一举提高了大约 13 个百分点,这实在惊人。那年大约二十八支参赛队伍,只有他们一家用了神经网络。但这是一次重大突破,第二年几乎所有参赛者都改用神经网络,原因很简单,这是一次革命性的进步,也清楚地表明,直接从原始数据中学习,远胜于手工设计那些能标示「这是一只豹」的特征。手工设计特征实在太难了。你会设计什么样的特征,来判断这是一只豹,而不是一只长颈鹿或一辆车?而从数据中学习让这件事成为可能。
这是一次很大的飞跃,但人们也容易忽视此后的进步。在这项任务上,我们已经从 63% 走到了今天的 91%。这其实相当惊人。我们知道人类在这项任务上的准确率其实略低于这个水平,因为它真的很难:一千个类别,其中四十种是不同品种的狗。人盯着一张照片,其实并不知道那是哪个品种。这就是大约十年间发生的事,它彻底改变了计算机视觉。
再看语音识别。这是一个流行的开源基准,用来衡量语音识别的准确率,指标是词错误率,也就是识别错的词所占的百分比,当然越低越好。我们从 13.25% 降到了 2.5%,而这段时间要短得多,只有五年左右。大致上,从每六七个词错一个,变成每四十个词左右错一个。这对系统的可用性是天壤之别。忽然之间你可以依赖它了,可以开始口述电子邮件,它基本都能听对。
我提到过,扩大规模能提高模型的质量。所以我们需要能让规模更高效地扩大的硬件。花同样的硬件成本,或者消耗同样的能源,怎样才能因为效率更高而得到质量更高的模型?这实际上是在改变我们设计计算机的思路。为机器学习优化的硬件效率高得多,而且一代一代之间都有重大改进,这让更大规模的模型得以在更低的经济成本和能源成本下实现。
神经网络,也就是如今人人都在用的这类机器学习模型,有两个非常好的性质。第一,降低精度没有关系。如果你把模型里的计算保留到一两位有效数字而不是六位,没问题。很多时候,这些模型的优化算法还会刻意引入噪声,好让模型学得更好。所以降低精度可以看作往学习过程里加了一点噪声,有时效果反而更好。第二,你听到的所有那些喧嚣的算法,本质上都是用不同方式拼装起来的线性代数运算,比如矩阵乘法和各种向量运算。这些算法说到底就是大量线性代数原语的反复应用。所以,如果你能造一台特别擅长低精度线性代数的计算机,那正是你想要的:以更低的计算成本和能源成本,训练出高质量的模型。
谷歌做这件事已经有一段时间了。我们看到系统里确实有这样的需求,于是构建了张量处理单元(Tensor Processing Unit,TPU)的第一个版本,它的架构就是为低精度线性代数设计的。第一代是为推理而造的。你已经有了一个训练好的模型,现在要把它用到产品里,就需要投入这些计算来识别图像里有什么,或者在有人对着麦克风说话时识别出他说了什么。第一代 TPU V1 是一块单卡系统,上面有一个加速器。与当时的 CPU 相比,它在能效和计算性能上都有大约三十到八十倍的提升。
后面几代 TPU,我们转向由多块芯片组成的更大系统,同时面向训练和推理。TPU V2 板上有四块这样的芯片。TPU V3 板算是它的近亲,但我们加上了水冷,真的有水流到芯片表面帮助散热。TPU V4 板,我们加上了漂亮的颜色。后面这三代都是为组装成更大的系统而设计的,我们称之为 Pod。Pod 的规模一代比一代大。第一代 Pod 内部用的是非常简单但带宽很高的网络:每块芯片以二维网格的方式与四个邻居相连,机架里相当于一个 16 乘 16 的芯片网格,每块芯片和邻居之间基本上就是一根线。这样网络里就不需要做任何路由,可以有极高的带宽和极低的连接成本,因为你只是要把数据送到六英寸之外的下一块芯片。下一代把规模扩展到八个机架、1024 块芯片。再下一代用了 64 个机架,每个机架 64 块芯片,占据数据中心的好几排,4096 块芯片提供 1.1 exaflops 的低精度浮点算力。
最新一代是我们去年底公开的 V5 系列,有两个变体。一个偏向推理,一个 Pod 有 256 块芯片。另一个是 V5P,每块芯片的内存大得多,芯片之间的带宽和内存带宽也高得多,每块芯片的 16 位浮点性能接近半个 petaflop,int8 性能再翻一倍。它的 Pod 也更大,接近九千块芯片,算力非常可观。
现在来谈语言。前面讲了图像识别和语音识别的进展,但语言恐怕是人们感受到计算机变化最大的领域之一。我对语言模型的兴趣由来已久,早在神经网络之前就有了。当年我和谷歌翻译团队的几位同事合作。他们有一套能力很强的系统,翻译质量很高,但它是为研究竞赛设计的:两周之内只需翻译五十个句子,然后提交结果。它每翻译一个句子,要为二十万个 n-gram 做磁盘查找。
我说,既然翻译质量这么高,应该把它真正投入使用。于是我们造了一个系统来提供 n-gram 模型服务。它基本上就是统计每一个五词序列在两万亿词元里出现了多少次,这样能得到大约三千亿个不同的五元组。我们把它们存在一批机器的内存里,翻译一句话需要查的十万个条目并行去查。我们还想出了一个新算法,叫「傻瓜回退」(stupid backoff),它无视数学上正确的做法,改用一种简单得多的办法:查一个五元组,如果没有数据,就查它的前缀四元组,有就用;没有就查三元组,依此类推。结果它的效果居然相当不错,与更精巧的 Kneser-Ney 平滑相比并不逊色,而后者虽然是理论上该做的事,计算上却相当困难。这件事的一个教训是:简单的技术加上海量数据,非常有效。这个教训贯穿了我的整个职业生涯,你完全可以做非常简单的事,让数据自己说话。
后来我的同事托马斯·米科洛夫(Tomas Mikolov)对分布式表示产生了兴趣。不再把一个词当作一个离散的符号,而是用一个很高维的向量来表示它,比如每个词对应一个一百维的向量。在训练过程中,我们把出现在相似语境里的词往一起拉,把出现在不同语境里的词往外推。训练目标非常简单,就是「出现在相似语境里就拉近,不同就推开」,在数万亿词元上这样训练,你会在这个一百维空间里得到非常漂亮的性质。一百维空间不太好想象,但在那个高维空间里,非常相似的东西最终会靠在一起。「山」「丘」「崖」会彼此邻近。
空间里的点很有意思,但也许更有意思的是方向,在这个高维空间里,方向也是有意义的,毕竟一百个维度里可以走的方向很多。比如,你看「国王」在空间里的位置,要走到「王后」,需要朝某个方向走,把「国王」的向量从「王后」的向量里减掉,就是那个方向。结果发现,这个方向与从「男人」走到「女人」的方向大致相同。所以方向是有意义的,不同的方向代表不同的含义。从一个动词的现在时走到过去时,是另一个方向,而且不管是哪个动词都一样。这说明分布式表示蕴含着很大的力量,代表一个词的那个一百维向量里,编码了许多不同种类的信息。
接着,我的同事伊利亚·苏茨克维和黎国(Quoc Le)开发了一种叫序列到序列学习(sequence-to-sequence)的模型。它用一个神经网络处理一个输入序列。以翻译为例,你把一个英文句子一个词一个词地喂进去,系统根据它当前的状态加上新看到的词,更新出一个新状态。就像单个词有分布式表示一样,你现在得到了一个迄今为止所看到的整个句子的分布式表示。更新状态用的是一种叫长短期记忆(LSTM)的循环神经网络。碰到句末标记时,你训练模型吐出这个句子的正确译文。训练数据就是一对对意思相同的英文句子和法文句子,你训练模型在看到这个英文句子时输出那个法文句子,然后在大量成对数据上重复这个过程。
果然,你可以用一个神经编码器处理输入序列来初始化状态,相当于「我已经吸收了输入句子,现在要一个词一个词地解码出正确的译文」,再用这个状态去初始化神经解码器。把规模放大,它就管用了,翻译准确率大幅提高。
后来奥里奥尔(Oriol Vinyals)和黎国发表了一篇研讨会论文,指出除了翻译,你还可以用上下文来做多轮对话。你与某个人或某一方交互的一连串记录,模型回一句,对方再说一句,来来回回好几轮,这些之前的多轮交互就是你的上下文。然后你训练模型在这些历史轮次的语境下生成一个好的回复。它本质上是同一个模型,一个序列到序列模型,只是序列现在用整段对话的历史轮次来初始化。于是用神经语言模型做有效的多轮交互成为可能。这很妙。
再往后,谷歌的另一批研究者加上一位实习生,提出了一种叫 Transformer 的模型。回想一下,前面那种模型是循环的:你有一个状态,取下一个词元,做一些处理来更新状态以吸收这个词元,然后带着新状态去吸收下一个词元,再更新一次。这是一个非常串行的过程,因为要吸收第三个词,你必须先处理完第二个词;要处理第二个词,必须先处理完第一个词。这不太理想。在计算机里,只要有办法,我们喜欢并行做事,而不是串行。
这个模型的做法是:把这批数据、也就是输入里的所有词并行处理,然后对其中不同的部分施加注意力,而不是维护一个随着词序列不断串行更新的单一状态。换句话说,不要把状态硬塞进一个分布式表示里,而是把你见过的所有词元的表示都保存下来,然后去「注意」它们:在翻译句子的这一部分或那一部分时,把注意力放到有意义的地方。结果是,用少十到一百倍的算力,得到更高的准确率。
还记得我前面讲的那些硬件进步和专用硬件吗?它们随时间给我们带来了巨大的提升,但我们同时也看到这样的算法改进,两者是相乘的。于是,靠算法进步加上机器学习硬件,我们现在能训练大得多的模型,也因此有了能力强得多的模型。
再后来,一群人决定把规模放大,用 Transformer 模型而不是循环模型在对话风格的数据上训练,得到了相当好的结果,尤其是提出了一种评估方式,要求回复既理智(sensible)又具体(specific)。你不希望聊天机器人含糊其辞,只会说「嗯,挺好」。你希望它针对你说的话给出真正有理智的回应,这样它才更吸引人、更有用。
我讲了其中一些,但神经语言模型和神经聊天机器人各有一条演进的脉络。聊天机器人这条线上有神经对话模型、Meena、OpenAI 的 ChatGPT,以及我们谷歌大约一年前发布的 Bard。语言模型这条线上,有我讲过的序列到序列工作,有 OpenAI 的 GPT-2,其中一些模型有参数量可以参考,大致代表模型的规模:2019 年的 GPT-2 是十五亿参数;谷歌几位同事的 T5 是一百一十亿参数,能力很强。顺便说一句,Transformer 是这些模型的基础,这里的「T」和那里的「T」都是 Transformer 的意思。人们真正见识到了 Transformer 模型和架构带来的十到一百倍的计算改进,从此把它作为大语言模型的基础。然后是 GPT-3,DeepMind 同事的 Gopher,谷歌研究院的 PaLM,DeepMind 的 Chinchilla,谷歌研究院的 PaLM 2,OpenAI 的 GPT-4,再然后是 Gemini,也就是我和同事奥里奥尔·维尼亚尔斯共同领导的项目。我们有一大群人,分布在许多不同的研究办公室,一起构建有能力的多模态模型。
我们想做的一件事,是从只理解文本的语言模型,走向能同时处理所有模态的模型。你可以给它文本加图像,或者音频加文本,让它做一件事,它能流畅、连贯地处理你给它的任何模态。所以我们大约一年前启动这个项目时,目标是:训练出世界上最好的多模态模型,并在谷歌各处使用它们。关于 Gemini 有一篇博客,有一个网站,还有 Gemini 团队写的技术报告,我很自豪是团队的一员。
Gemini 从一开始就是多模态的。正如我说过的,我们不想只处理文本,我们要处理图像、视频和音频,把它们转成一串词元,然后在上面训练一个基于 Transformer 的模型。解码有两条路径:一条训练用来生成文本词元;另一条用 Transformer 学到的状态来初始化解码器,从这个状态出发生成一整幅图像的像素。
我们还支持交错输入。不是说你给它一段文本输入和一个图像输入就完了,你可以把它们交替排列。对于视频,你可以放一帧画面,接一段描述它的文字,再放一帧画面,再接文字或者音频里所说内容的字幕。然后让 Transformer 利用它在训练中接触过所有这些模态的事实,为你给它的各种模态建立起共同的表示。
我们有几种不同的尺寸。第一代 Gemini 有三种:Ultra 是我们最大规模、能力最强的模型。Pro 的尺寸适合在数据中心运行,我们把它用在许多产品场景里,比如我们的 Bard 产品,它现在改名叫 Gemini 了,有点容易混淆,它运行在 Pro 模型上,或者上周刚宣布的 Ultra 模型上。还有 Nano 模型。你其实希望许多机器学习模型能在设备上运行,在一部小手机或一台笔记本上。Nano 在这方面非常高效,尺寸也合适。你还可以对它做量化,让它变得更小。
关于训练基础设施,我们想要一套可扩展性很强的底座:你用非常高层的方式描述你想要的计算,然后由一个系统把这个计算映射到你手头的硬件上。我说过我们有这些 Pod。比如你描述自己的计算时说,我关心这两个部分,但我不在乎你把它们放在哪里,把决定权交给我们构建的底层软件系统 Pathways。它可能决定把这部分放在一个 Pod 上,把那部分放在另一个 Pod 上。它知道芯片的位置、拓扑以及它们之间的带宽。当这块芯片要和那块芯片通信时,会走我提到的那条极高速的链路;当模型的这一部分要和远处那一部分通信时,就会走数据中心网络,那条路的带宽要低得多。但这一切是无缝发生的,机器学习研究者或开发者不必操心,只需知道两者的性能特性不同。
训练大规模模型的一个特点是,随着规模扩大,故障一定会发生。某台机器会挂掉,某块 TPU 芯片会过热,然后以某种方式出错。所以把故障减到最少非常重要。有些需要避免的故障几乎是人为的。举个例子,我们曾有一套滚动升级机器内核的流程。如果那些机器各自跑着独立的计算,这么做完全没问题;但如果它们都是同一个上千台机器的计算的一部分,你反而宁愿把机器一起停下,同时升级这一千个内核,再一起启动,而不是让故障一路滚过去。所以我们优化了一些维修和升级流程。
做完这些之后,你还要把恢复时间减到最短,因为恢复得越快,就能越早真正取得有用的进展。我们有一个指标,叫「有效产出」(goodput),指模型训练真正在往前推进的时间百分比,而不是在从检查点恢复,或者在等系统的其他部分启动。我们用的一个办法是,从其他机器内存里保存的模型状态副本快速恢复,而不是去分布式文件系统读检查点。这让恢复时间从几分钟变成了五到十秒。
训练数据方面,我们希望模型是多模态的,所以要在大量网页文档、各种书籍、许多种编程语言的代码,再加上图像、音频和视频数据上训练。我们有一些启发式规则来过滤数据集,有的是手写的规则,有的是基于模型的分类器,用来判断这份文档是否在各方面都算高质量。训练数据的最终配比是通过在较小模型上做消融实验确定的:我们用不同的配比训练小规模模型,比如代码占 32% 还是 27%,然后在一大批指标上评估表现,以便更好地理解。我们还做了一些事情,比如在训练末期提高领域相关数据的权重,在快结束时加入更多多语种数据,好让多语种能力提升。
我确实认为数据质量是一个很有意思、很重要的研究领域。我们已经看到,真正高质量的数据对模型在你关心的任务上的表现有巨大的影响。从某种意义上说,它与你使用的模型架构同样重要,有些情况下甚至更重要。所以我认为这是未来研究的一个重要方向:自动学习课程的能力似乎很重要,识别高质量和低质量样本也是。
除了训练这些模型,在如何引出模型最好的一面上也有一批进展。你怎样提问,才能让模型更有效地回答问题?比如,要求模型「写出解题过程」,既能提高模型的准确率,也能提高可解释性。我的几位同事提出了一种技术,叫思维链提示(chain-of-thought prompting)。回想一下三年级的数学课,老师总是鼓励你写出过程,对吧?老师这么做,一是想看到你得出答案的思路,二是鼓励你去想下一步是什么,我要怎样把这个复杂的问题拆成一小串步骤。
通常你会先给模型一个示例:一个你想让它回答的那类问题,以及这个问题的答案;然后再问它一个新问题,让它作答。这里有一个例子,模型学到的回答方式就是直接算出答案给你。换一个问题,模型输出说答案是 50,这是错的。但如果你换一种问法,向它示范怎样写出过程:「肖恩一开始有五个玩具。如果每人给他两个,那就多了四个。五加四等于九,所以答案是九。」这是三年级数学老师会引以为豪的解题过程。更重要的是,你这么做之后,模型也会写出这种一步一步的推导,然后它就答对了。因为它现在有了更长的时间去思考通向正确答案的各个步骤。
这个效应相当显著。这两条线是同一个底层模型在不同规模下的表现,两个基准都偏数学,右边这个是八年级数学题,这个是一批算术题。你看到的是,用标准提示时,回答质量相当糟糕;但到了某个点,模型规模足够大之后,一旦改用思维链提示,准确率一下子蹿了上去。这说明,怎样向模型提问是一门很有意思的学问,问得好既能让模型更可解释,也更可能给出正确答案。
来谈谈 Gemini 模型里的多模态推理,我想举一个例子,这是理解这个模型能做什么的好办法。提示是这样的:「这是一位学生对一道物理题的解答」,然后附上一张图,图里是题目和学生手写的答案。提示的其余部分说:「请一步一步地推理这个问题。」这又是思维链提示的风格。「学生的答案对吗?如果错了,请解释错在哪里,并解出这道题。数学公式请用 LaTeX,最终答案保留两位小数。」这就是输入:一张有点粗糙的手写图,一个滑雪者从斜坡上滑下来,能量守恒,诸如此类。
下面是模型的输出:学生没有得出正确答案。学生在计算斜坡起点的势能时犯了错。起点的势能由 mgh 给出,学生在计算中用了斜坡的长度(我猜就是斜边)而不是高度。正确的解法是这样这样,因此我们可以写出如下式子(这里其实是 LaTeX,为了方便阅读我们把它渲染出来了),代入数值,就是这个。它把题目做了出来,答案保留到两位小数。
想想这意味着什么。我们忽然可以给模型多模态的输入,一张白板的照片、一道题,让它去做一件事,它就能做。它不会每次都做对,但它能做。这可以成为一种了不起的教育工具。想象一个学生自己在琢磨题目,把自己的解答拍下来,系统就能帮他找出哪里错了。我们知道,一对一的人类家教带来的学习成果,比大班课堂环境高出两个标准差。我们能否在个性化辅导上接近那个水平?我认为这种可能性就在我们共同的能力范围之内。
刚才是 Gemini 能力的一个定性例子,但也应该看看它在一系列不同特性上与其他模型的比较。评估确实能帮我们找出模型的长处和短板,帮我们理解训练是否顺利,所以训练过程中我们一直在评估这些指标。它还帮我们决定该改什么。数学表现比预期低?那也许该在训练配比里加更多数学数据。可这会对多语种表现造成什么影响?这里有很多复杂的权衡,有些在训练开始时就得定下来,有些则是在线监控,然后做出有依据的、或者说凭手感的决定。评估也让我们能把自己的能力与其他模型和系统作比较。
最高层的总结是:我们考察了 32 个学术基准,Gemini Ultra 模型在其中 30 个上超过了此前的最高水平。深入看其中一些,有一批面向文本、通用推理和数学的基准。把 Gemini Ultra 与 GPT-4 比较,后者在大多数问题上是此前的最高水平,蓝色标出的是最高水平,八项里我们拿了七项。MMLU 上的 90% 很有意思,因为这是一套覆盖面极广的题目,涉及 57 个学科,化学、数学、国际法、哲学等等。编制这个基准的团队测得人类专家水平是 89.6%,也可能是 89.8%。所以这个成绩实际上超过了这 57 个门类上的人类专家水平,这很好,我们很高兴。下面还有一批编程相关的基准和数学相关的基准。
再看图像理解基准,这就进入多模态的部分了。我们在八个基准里的八个上都拿到了最高水平。其中有一件好事:有一个基准是在我们发论文一周前才发布的,我们从没见过它。评估团队很快把它加进了评估集,结果发现我们以相当可观的优势超过了最高水平。这很好。碰到一个从未见过的基准还能做得好,总是让人安心,因为你总在担心训练数据泄漏到测试集里之类的问题。再看视频理解,这个模型的多模态能力确实很出色,六个基准里的六个都是最高水平,包括那个重要的英文烹饪视频字幕基准,以及视频问答等等。再看音频,在四个公开的语音识别基准和一个语音翻译基准上的词错误率,五项里五项都是最高水平。多语种能力也相当好,五项里拿了四项。
所以,首先我希望你们体谅一下我们的评估团队,评估这些模型、把能力理解到这种细致程度,是一项浩大的工作,非常了不起。它也让我们有了相当确定的把握:Gemini 模型的能力相当强。论文里也有 Pro 和 Nano 的测量结果。
这些大型 Transformer 模型能生成出人意料地连贯的对话,这算是神经对话模型以及后来那些基于 Transformer 的版本的演进结果。看看 bard.g……我想我得更新一下幻灯片了,现在应该是 gemini.google.com。几个月前,在 Bard 还没有用上 Gemini 模型之前,我在准备一场演讲,就对它说:帮我把「hot chips」和「tensor processing units」的字母倒过来。只是为了展示这些模型能做什么。它说:「好的,倒过来的字符串是」,然后就是结果。
很好。但它接着说:「我还可以用 Python 帮你做这件事。」代码在这里:定义一个叫 reverse string 的函数,这是字符串,打印这个的反转,打印那个的反转。「使用代码请谨慎」,这一点我一向建议。然后它还解释了代码:代码首先定义了一个叫 reverse string 的函数,接收一个字符串作为输入,返回反转后的字符串,函数的工作方式是遍历字符串,然后代码打印出反转结果。它总是乐于助人:「还有什么我可以帮你的吗?」
这相当惊人,对吧?有人问了一个问题,它做了被要求的事,然后还说,顺便告诉你,有一种东西叫编程,这里有一段 Python 代码,写代码来做这件事是这样的。我觉得这很酷,而且又是一个真正的教育机会。「还有什么我可以帮你的吗?」当然,多讲讲 TPU。这个模型有相当多的世界知识。它知道 TPU 是什么,基本上就是我已经告诉你们的那些:谷歌开发的专用硬件处理器,用来加速机器学习,能提高效率和性能。好处有这些:更快的训练和推理。「希望这对你有帮助。」
这些聊天机器人的一个有趣之处是,它们可以有不同的性格。Bard 就像你那个热心的朋友,会帮你回答各种问题。上个月我们把 Gemini Pro 放进了 Bard,也就是现在的 Gemini。有一个公开网站叫 LMSYS,可以评估不同的聊天代理,因为现在世界上有很多聊天机器人了。它的做法是让用户自己写提示,从系统里配置的机器人中随机挑两个,把同一个提示发给两者,然后匿名展示两边的输出,你只需说左边好还是右边好。
由此就能算出一个叫 Elo 的分数。Elo 我记得是一位匈牙利数学家,他想找到给国际象棋棋手排名的方法。在锦标赛里,你击败一个对手就会获得更多 Elo 分,所以在比赛环境下可以算出 Elo 分数。大致上,Elo 高出 100 分意味着较强的一方会有 64% 的胜率,高出 400 分意味着十比一的优势。Pro 级别的模型在这个榜单上拿到了第二高的 Elo 分数,榜上大概有三十个不同的模型,我展示的是榜单顶部。这很不错。而且这是一项免费服务,而那几个不是。
我在推特上发了这件事,然后一个我从没见过的人说,它确实相当好,看看这个例子。我们有一个功能,让人们可以把自己喜欢的、愿意公开的 Bard 对话分享出来,他就这么做了。点开一看,他问的是:请估算以下各国每百万居民拥有的公司数量:美国、英格兰、韩国、台湾和新加坡,以表格形式呈现。
Gemini 说:当然,下面这张表展示了每百万人的公司数量,正如你所要求的。它还替你解读结果:如你所见,英格兰最高,其次是美国、韩国、台湾,然后是新加坡。需要注意这些只是估算,实际数字可能因来源和定义而异。希望这对你有帮助,如有其他问题请告诉我。
他接着问:你从哪里找到这些公司数量的?「抱歉没有提供来源。信息来自哪里应该保持透明。我使用的公司数量来自几个不同的来源:美国用的是邓白氏(Dun & Bradstreet)数据库,英格兰用的是国家统计局」,等等。「请注意这些来源对公司的定义略有不同。」所以它其实理解其中的微妙之处,对吧?什么算一家公司有不同的定义,而它知道该去哪里找这些不同来源的数据。它并没有把这些背下来,但它能够利用它们。相当妙。
我认为另一个重要的趋势是,对这些通用模型做进一步的精炼,可以造出惊人的领域专用模型。我的几位同事拿了我们早先的 PaLM 模型和后来的 PaLM 2 模型,它们是在通用文本上训练的通用模型,然后用医学数据做增强和继续训练,也就是医学问题和医学文献。他们发现,第一个 Med-PaLM 模型就超过了医师执照考试的及格线。六个月后,他们在此基础上训练出 Med-PaLM 2,在这项任务的医师执照考试上达到了专家水平。当然,这不是一个完全通用的场景,只是一批医学问题,但它确实展示了这样一种能力:先有一个能力很强的通用模型,再针对特定问题做领域专用的训练。
我会快速过一下生成图像和视频的生成式模型,你们大概已经把它当作世界潮流看到了。我们有几个不同的研究项目,Parti 和 Imagen。我提到过一件很酷的事:你可以用提示描述你想要的视觉图像,然后让模型生成这些图像,生成过程受处理这句话所得到的编码表示的约束,以此为条件生成图像的像素。
「一列蒸汽火车穿过一座宏伟的图书馆,伦勃朗风格的油画。」就是它。「一条用 X 做成的巨型眼镜蛇」,X 可以是玉米、煎饼、寿司或者沙拉。你最喜欢哪条?我有点偏爱那条凶狠的生菜蛇,不过玉米那条也很不错。「一张客厅的照片,有白色沙发和壁炉,墙上挂着一幅抽象画,明亮的光线从窗户照进来。」如果你像我一样正好需要一张这样的图片来做演示,就可以这么做。描述可以相当细致:「一张高对比度的照片,一只熊猫骑在马上。熊猫戴着巫师帽,正在读书。马站在一条街上,背景是灰色的混凝土墙,有五颜六色的花和「peace」这个词」,等等,「单反相机拍摄,白天的光线」。就是它。这段描述有很多种合理的诠释,但至少你得到了一个符合要求的例子。
这项功能现在已经集成进了 Bard。伊利诺伊州一家负责中小学教育的政府机构很兴奋,因为他们能给自己的吉祥物「超链接刺猬」(Hyperlink the Hedgehog)生成图像了。这是超链接在冲浪,乘着 AI 的浪潮。还有一个人很兴奋,他的提示是「一个人在伦敦的 Costa Coffee 买咖啡」,Costa Coffee 是一家很受欢迎的咖啡连锁店。这些模型过去常常挣扎的一件事是文字的保真度:把你要求的文字真正放进去,看起来像真实的字体,等等。这里你看到它做得相当好。
我不会讲太多细节,但大体上,你输入一个提示,得到这句话在分布式向量空间里的表示,以此为条件,模型先被训练生成一张小尺寸的图像;然后用另一个专门提高分辨率的模型,以那张低分辨率的图和文本嵌入为条件放大它;再对放大后的图做一次同样的事,同样以文本嵌入为条件,最终得到 1024 乘 1024 的全尺寸图像。
你能真切地看到规模的效应。我们训练了四个不同的模型,参数量从三亿五千万到两百亿,然后给它们同一个提示:「一张袋鼠的肖像照,它穿着橙色连帽衫,戴着蓝色太阳镜,站在悉尼歌剧院前的草地上,胸前举着一块写着『welcome friends』的牌子。」你看到的是,最小的模型大致抓住了袋鼠这一点,还有橙色连帽衫,但其他就不多了。有一块牌子,但文字还是让它很吃力。规模再大一点,袋鼠好了一些,它也多少知道悉尼歌剧院大概长什么样,但有点粗笨,细节不多。牌子上的字更接近「welcome friends」了,不过也可能是「Vegemite」,我不确定。规模再往上,你就得到了一张相当漂亮的图:悉尼歌剧院,你的袋鼠,橙色连帽衫,文字也对了。
所以你看,规模是这件事的一个重要方面。这也是为什么过去十年你看到所有这些进展,本质上是规模加上更好的训练方法和算法,共同带来了更高质量的结果。这张图说的其实是同一件事,但我觉得袋鼠说得更清楚。
还有一点很重要:大量机器学习正在以各种方式默默地帮助人们,尤其是在手机上。现代智能手机的许多相机功能这些年有了显著改进,靠的是计算摄影方法和机器学习方法的结合。人像模式,把背景全部虚化,让前景里的你显得很有格调,对那类人像照片来说是个不错的技术。夜视模式,在光线极弱的条件下拍照,可以从传感器多次读数,再用软件把它们叠加起来,得到远比实际环境明亮的成像,这也帮你拍出更好的星空照片。人像虚化和色彩突出,在你需要的时候也很好用。魔术橡皮擦,如果你真的理解图像,那么用户指着一根电线杆说「让这些消失」,系统就能做到。也许你的瀑布照片前面站着几个别的游客,你不想要他们,就可以擦掉。他们就没了。
手机上有很多功能,其中许多是关于如何把一种模态转换成另一种。有时你想筛选来电:也许你不想亲自接电话,而是让一个计算机生成的声音替你接,问对方为什么打来,然后把对方说的话转成文字给你,你再决定要不要接。「替我等待」功能可以替你在电话里等着,这样你给美国银行客服打电话时,就不必自己抱着听筒等了。实时字幕能把手机上正在播放的任何视频的音频听下来,给你配上旁白的字幕。也许你正在像这样的报告厅里想看一段视频,又不想让声音打扰别人。这里面有很多很酷的功能,很多都在人们的手机上运行,而人们未必意识到,也未必想过底下是什么技术。这对识字能力有限的人群也是巨大的进步:你把摄像头对准一样东西,它能把上面的字读给你听;也许你不懂那种语言,正想看明白,它可以读出来并替你翻译。
这一部分我会讲得快一些,跳过其中一些内容。我从材料科学讲起。这是一个很有意思的领域,机器学习正在开始影响科学的方方面面:或者是对科学假设空间中有意思的部分做自动化探索,或者是创造出学习得来的高速模拟器,以取代传统的大规模高性能计算。在某些领域,人们已经学出了一种模拟器,功能上等价于手工编码的模拟器,却快了十万倍。这意味着你忽然可以搜索一千万种可能的化学物质或材料,找出那些有意思、有前景、具备特定性质的候选,而这在过去需要多得多的算力。
我在 DeepMind 的几位同事正在探索一些有意思的方法,在可能的材料空间里搜索那些性质有趣的材料。他们有一条结构管线,能把一种潜在材料表示成一个图神经网络;还有一条组分管线,能把已知结构变异成邻近的、有意思的新结构;再利用现有的材料数据库,输出能量模型和一批稳定的、有意思的候选化合物。这样自动发现了两百二十万种新的晶体结构,带来一大批有趣的候选,可以在实验室里真正合成出来,看看它们究竟有什么性质。
我认为机器学习在医疗保健的各个方面都有巨大的潜力。我们在医学影像和诊断这个方向上已经做了相当长时间的工作,问题的类型很多:有的是二维图像,有的是核磁共振或 CT 扫描得到的三维体数据;有的只有单一视角,有的有多个视角;还有病理学里那种分辨率极高的大图像。这方面有相当多的工作,我只简单讲两项。
我们在这个领域做得最久的方向之一是糖尿病视网膜病变。这是一种退行性眼病,及时发现的话非常好治,发现不及时则可能导致部分或完全失明。有风险的人群,也就是所有糖尿病和糖尿病前期患者,都应该每年筛查一次。但在世界上很多地方,受过训练、能解读视网膜图像的眼科医生根本不够。机器学习在这里能帮上大忙,因为你可以让训练有素的眼科医生标注图像,「这张是一级,那张是三级,这张二级,那张五级」,用这些来训练模型。用持证眼科医生标注的数据训练,你能得到一个与持证眼科医生同样有效的模型。如果再请视网膜专科医生来标注同一批训练数据,他们在这类病例上有多得多的专业知识和经验,你就能训练出一个与视网膜专科医生相当的模型,而那是这个领域护理的黄金标准,全世界这样的专家寥寥无几。可现在,用一台笔记本上的 GPU,你就能让筛查质量达到视网膜专科医生的水准。我们已经与印度的一个眼科医院网络、泰国政府以及法国和德国的机构合作,每年做大量的筛查。
再说皮肤病学。这个领域有意思的地方在于,收集有用的数据并不需要专门的设备,就能判断你是否有皮肤问题。我们现在部署了一个系统,像视频里那样,你拍一张照片,它会告诉你这可能是什么,皮肤病数据库里还有哪些看起来相似的图像,帮你判断这是很严重的问题,还是相当良性的问题。
最后,随着我们把机器学习方法部署到世界上越来越多的地方,对它们更深、更广的理解真的非常重要。当我们从机器学习的基础研究,走到在所有产品的许多地方使用它时,我们开始思考一套原则,用来审视使用机器学习的影响,以及在各种可能的应用中该有哪些考量。2018 年我们发布了自己制定的一套原则。
这些原则的初衷是教育我们内部的团队,让他们在把机器学习用到自己关心的问题上时,知道该考虑什么。比如,避免制造或强化不公平的偏见。训练这些模型时,用的往往是来自真实世界的数据,而那常常是世界本来的样子,不是我们希望它成为的样子。所以部署机器学习模型时,一定不能在带有不公平偏见的数据上训练,然后把这种偏见放大,因为你现在可以自动化地、更快地做出这些决定。有一批算法层面的技术可以消除某些类型的偏见。我们努力做的是,一方面应用当前已知的最佳技术,另一方面也做研究,推进偏见等领域的最高水平。再比如,对人负责,我们认为让模型可解释是其中重要的一环。还有在合适的场景下注重隐私,以及对社会有益。
我要指出,其中很多都是活跃的研究领域。过去五六年,我们发表了大约两百篇与公平、偏见、隐私或安全相关的论文,你们可以在那里看到。
总结一下,我认为这是计算领域激动人心的时代。一场转变正在发生:从手工编码的软件系统,转向学习得来的、能以各种有趣方式与世界互动、与人互动的系统。计算机能够摄入、理解和生成的模态在不断增加,我认为这会让使用计算机变得更加顺畅自然。很多时候我们把自己限制在敲键盘之类的方式上,但现在我们有能力以非常自然的方式与计算系统交谈,它能听懂我们说的话,能用听起来自然的声音回应,或者在我们要求时给出一张漂亮的图。这非常令人兴奋。机会无疑是巨大的。
但责任也同样巨大。我们该如何推进这项工作,确保它对社会有益,真正用它在世界上做好事?为此,谢谢大家。
有人问,这个问题你们大概也料到了:更多的数据会让模型更好吗?数据翻倍,表现会好一倍吗?这是个好问题,但答案并不简单。我们已经看到,更多的高质量数据绝对能让模型表现更好,前提是你有足够的容量在这么多数据上训练。所以要考虑模型的容量,有时训练数据多了,模型的规模也得跟着扩大。我们也见过更多数据反而有害的情况:如果你拿到一大堆低质量数据,模型做数学题之类的能力反而会下降。所以这件事有细微之处,但总体上,更多高质量数据加上更大的模型容量,会让模型更好。
另一个问题是:既然绝大多数高质量训练数据已经用尽,大语言模型的未来在哪里?我对这个论断不太认同。我认为我们还几乎没开始在视频上训练。我们做过少量视频,但世界上有海量的视频数据。通过视觉和听觉数据来理解世界,与在大量语言上训练是不一样的,你两者都会想要。但我不认为我们已经耗尽了世界上的训练数据。
关于多模态模型,我在演讲里着重讲过。它们在所有领域上都比为每个领域单独训练的专用模型表现更好吗?我认为在某些情况下是这样的。这个问题可以换个说法:加入更多的模态,会不会提高其他模态上的表现?你希望如此,而我们确实普遍看到了一些这样的迹象。不过,如果你的问题很窄,又收集了一个专门针对这个问题设计的数据集,那在这个问题上往往也能得到好的表现。但如果问题很复杂,或者很难收集非常专门的数据,你要的就是一个对世界上各种事物都有海量知识的模型,从语言、图像到音频都懂,然后把它用到你关心的问题上。如果你手头有一点针对这个问题的数据,你会想从那个基础模型出发,做微调或者上下文学习之类的事,把表现做得相当好。
还有一个相关的问题:如今训练大模型的成本让小型创业公司难以产生影响,资源有限的个人该做什么样的项目?当然值得谈。机器学习领域有一大批问题。我更愿意从这个角度回答:如果没有大型数据中心的算力,在这个广阔的领域里能做什么有意思的研究?我认为可选的东西非常多。我提到过数据质量,比如数据质量的自动评估,还有在线课程学习、优化方法等等,其中很多都可以在一块 GPU 或者你桌子底下的几块 GPU 上做出证明,取得相当重要而有创新性的进展。最初的 Transformer 工作,我记得是在八块 GPU 上完成的;序列到序列模型肯定是八块 GPU。所以我认为,聪明的想法、扎实的评估,哪怕只在小规模上做出证明,都能带来进步。
还有一组问题是:大语言模型就是一切吗?Transformer 就是一切吗?还有别的吗?我们该研究其他类型的模型吗?对大语言模型的强调是否在压制机器学习的其他工作?这确实是个值得担心的问题。我们是不是在排挤其他有创新性的想法?那些想法也许还没有充分发展,所以看起来不如那些已经被深入探索过的东西好,而我们现在只是在已知有效的东西周围做温和的探索,也许真正有效的东西在另一个方向上。很多时候,只需要适量的实验证据,哪怕规模很小,就能证明另一个想法是一个真正有意思的方向。我认为这是一个重要的方向。
另外,我倾向于不用「大语言模型」这个词,因为我认为我们正在走向一个多模态的世界。而且多模态不会只限于你想到的那些人类模态,比如视觉、听觉和语言,还会包括世界上其他重要的模态,比如医疗应用里心率传感器数据那样的时间序列。你想处理的数据模态,大概有五十到一百种。
Jeff Dean 回顾机器学习十年来的三条主线——规模化、专用硬件、多模态基础模型,并以 Gemini 为例说明它们如何叠加,同时强调数据质量、提示方法和负责任部署是接下来最关键的方向。

微信公众号