整理|李梅
编辑|陈彩娴
自年AlphaGo在围棋中击败人类以来,DeepMind的科学家一直致力于探索强大的通用人工智能算法,OriolVinyals就是其中之一。
Vinyals于年加入DeepMind,目前任首席科学家,领导深度学习小组。此前他曾在GoogleBrain工作。他的博士就读于加州大学伯克利分校,曾获得年MITTR35创新者奖。他在seq2seq、知识蒸馏以及TensorFlow方面的研究成果,已经被应用于谷歌翻译、文转到语音和语音识别等产品中。他的文章被引用超过16万次。
最近,OriolVinyals做客LexFridman的播客节目,谈论了他对深度学习、通才智能体Gato、元学习、神经网络、AI意识等方向的一些看法。Vinyals认为:
扩大模型规模能够增强智能体多模态之间的协同作用,模块化的模型则是有效扩大模型规模的一种方式,通过权重复用可以不必从头训练模型;
未来的元学习将更注重智能体与环境的交互学习;
Transformer内置的归纳性注意偏差使得它比其他神经网络架构更强大;
通用的、大规模的模型或智能体在技术上的成功关键是:数据工程、部署工程和建立基准。
现有的AI模型离产生意识还很遥远,生物大脑远比计算大脑更复杂,人类的思维运作方式可以启发算法层面的研究;
未来AI系统有可能具备与人类同等水平的智能,但是否能超越人类水平并不确定。
下面AI科技评论对访谈内容作了不改变原意的编辑整理:
1通用算法
Fridman:在我们有生之年能否建立一个AI系统、在这次谈话中取代我们作为采访者或被采访者?
Vinyals:我想问的是,我们想要实现那样的愿望吗?我很开心看到我们正在使用非常强大的模型,并觉得它们跟我们越来越接近,但问题是,如果没有了谈话中人性化的一面,它还会是一个有趣的人工制品吗?可能不会。例如,在星际争霸中,我们可以创建智能体来玩游戏、自我对抗,但最终人们关心的是,当竞争对手是人类时,智能体要如何做。
所以毫无疑问,有了AI,我们会更强大。比如你可以从AI系统中筛选出一些非常有趣的问题,在语言领域,我们有时将其称为“TerryPicking”。同样,如果我现在有这样的工具,你问一个有趣的问题,特定系统会选择一些单词来组成答案,但这并不是很让我兴奋。
Fridman:如果引起人的兴奋本身就是这个系统的目标函数的一部分呢?
Vinyals:在游戏中,当你设计算法时,你可以将获胜作为目标写入奖励函数。但如果你能衡量它并针对它进行优化,那还有什么令人兴奋的呢?这可能就是我们玩电子游戏、上网互动、观看猫咪视频的原因。的确,对强化学习中使用的那些明显的奖励函数之外的奖励进行建模,是非常有趣的。
另外,AI在特定方面确实取得了一些关键进展,例如,我们可以根据互联网上的接受度来评估对话或信息是否可信。然后,如果可以自动化地学习一个函数,你就能更轻松地进行优化,然后进行对话以优化一些不太显眼的信息,如兴奋度。构建一个至少一方面完全由兴奋奖励函数驱动的系统会很有趣。
但显然,系统仍然包含很多来自系统构建者的人性元素,而且为兴奋度打上的标签是来自于我们,很难去计算兴奋度。据我了解,还没有人做这样的事情。
Fridman:也许系统还需要有强烈的身份认同感。它会有记忆,能够讲述它过去的故事。它可以从有争议的观点中学习,因为互联网上有很多关于人们持有什么观点的数据,以及与某种观点相关联的兴奋度。系统可以从中创建一些东西,不再是优化语法和真实度,而是优化句子在人性上的一致性。
Vinyals:从神经网络、人工智能的构建者角度来看,通常你会尝试将你讨论过的许多有趣的主题映射到基准测试中,然后也映射到关于这些系统当前如何被构建、如何学习、从什么数据中学习、学习什么的实际架构中,这里我们要谈的是数学函数的权重。
就当前游戏的发展状态而言,我们需要什么才能达到这些人生体验,比如恐惧?在语言方面,目前我们几乎看不到进步,因为我们现在做的是,获取大量的在线人类互动,然后提取序列,包括一连串的单词、字母、图像、声音、模态,接着再试着学习一个函数,通过神经网络来将看到这些序列的可能性加以最大化。
我们目前训练这些模型的一些方式,有希望能够发展出你所说的那种能力。其中之一是智能体或者模型的生命周期,模型从离线数据中学习到这些,所以它只是被动地进行观察和最大化。就像在一个山地景观中,在到处都是人类交互数据的地方,提高权重;在没有数据的地方,降低权重。模型通常不会体验到自身,它们只是数据的被动观察者。然后,我们让它们在我们与之交互时生成数据,但这极大地限制了它们可能正在优化或进一步优化权重时实际经历到的体验。但我们甚至还没有到达这样的阶段。
在AlphaGo、SlphaStar中,我们部署模型,让它与人类比赛,或与人类互动(比如语言模型),以此来训练模型。它们并不是持续训练的,它们没有根据从数据中学到的权重来学习,它们不会持续改进自身。
但如果你考虑一下神经网络,这是可以理解的,它们可能无法从严格意义上的权重变化中学习,这与神经元如何互连以及我们在一生中如何学习有关。但是,当你与这些系统交谈时,对话的上下文确实存在于它们的内存中。这就像你启动一台电脑,它的硬盘里有很多信息,您也可以访问包含所有信息的互联网。同时也有内存,我们把它看作是智能体的指望所在。
目前存储非常有限,我们现在谈论的是我们所拥有的大约2,个单词,超出这个数字后,我们就开始遗忘我们所见到,所以一些短期的连贯性是存在的。如果智能体具有连贯性,那么如果你问「你的名字是什么」,它就可以记住这句话,但它可能会遗忘超出2,个单词的上下文。
所以从技术上讲,人们对于深度学习的期望有这样一种限制。但我们希望基准测试和技术能够拥有不断积累的记忆体验,离线学习的方式显然很强大。我们已经取得了很大的进展,我们已经再次看到了这些模仿的力量或者让这些关于世界的基本知识被纳入权重的互联网规模,但是经验是很缺乏的。
事实上,当我们与系统交谈时,我们甚至都不训练它们,除非它们的内存受到影响。这是动态的部分,但它们的学习方式与你我从出生就开始的学习方式不同。所以关于你的问题,我这里提到的一点就是,记忆和体验与仅仅观察和学习世界的知识不同。
我看到的第二个问题是,我们是从头开始训练所有这些模型。好像我们不从头开始训练模型、从最开始的地方找到灵感,就会有什么东西缺失了一样。每隔几个月,就应该有某种方式可以让我们像培养一个物种一样训练模型,而宇宙中的许多其他元素都是从以前的迭代中构建的。从纯粹的神经网络的角度来看,很难不丢弃以前的权重,我们是从数据中学习并更新这些权重。所以感觉好像少了点什么,我们最终可能会找到它,但它会是什么样子还不是很清楚。
Fridman:从头开始训练似乎是一种浪费,每次我们解决围棋和国际象棋、星际争霸、蛋白质折叠问题时,肯定有一些方法可以重复使用权重,因为我们扩展了巨大的新神经网络数据库。所以我们如何重复使用权重?如何学习提取什么是可泛化的以及如何摒弃其他无用的东西?如何更好地初始化权重?
Vinyals:深度学习的核心有一个绝妙的想法,那就是单个算法解决所有任务。随着越来越多的基准的出现,这个基本原则已经被证明是不可能的事情。也就是说,你有一个空白的计算大脑一样的初始化神经网络,然后你在监督学习中喂给它更多东西。
理想情况是,输入什么样的期望,输出就应该什么样。比如图像分类,可能是从1个类别中选出一个,这就是图像网络。许多问题都可以通过这种方式映射出来。还应该有一种通用的办法,对于任何给定的任务,你都可以不做很多改变、不加思考就能使用,我认为这是深度学习研究的核心。
我们还没有找到这个办法,但如果人们能发现更少的技巧(一种通用算法)来解决重要问题,那将很令人兴奋。在算法层面上,我们已经有了一些通用的东西,就是在大量数据上训练出非常强大的神经网络模型的公式。
而在很多情况下,你需要考虑一些实际问题的特殊性。蛋白质折叠问题很重要,已经有一些基本的方法,比如Transformer模型、图神经网络、来自NLP的见解(如BERT),以及知识蒸馏。在这个公式中,我们还需要找到一些蛋白质折叠问题所特有的东西,这非常重要,我们应该解决它,有可能在这个问题中学到的知识将应用到深度学习研究者的下一个迭代中。
也许在过去的23年里,在元学习这个领域,通用算法已经有了一些进展,主要是产生自语言领域的GPT-3。这个模型只训练一次,而且它并不局限于翻译语言或只知道根系一个句子的情感,这些实际上可以通过提示来教给它,提示本质上是给它们展示更多例子。我们是通过语言来进行提示的,语言本身是我们互相学习的很自然的方式。也许它会先问我一些问题,然后我告诉它应该做这个新任务。你不需要从头开始重新训练它。我们已经通过小样本学习看到了一些神奇的时刻,在只有语言的模态中用语言进行提示。
在过去两年里,我们看到这扩展到语言之外的其他模态,添加了视觉、行动和游戏,并取得了很大的进步。这可能是实现单一模型的一个方式。问题是这种模型很难增加权重或容量,但它的确很强大。
目前的进展出现在基于文本的任务或者视觉风格分类的任务中,但应该有更多的突破。我们有一个很好的基线,我们想要基准向通用人工智能发展,整个社区正在向这个方向靠拢,这很好。让我兴奋的是,深度学习的下一步是如何让这些模型更强大?如何训练它们?如果它们必须进化,如何「培育」它们?当你教它任务时,它们应该改变权重吗?还有很多问题需要回答。
2通才智能体Gato
Fridman:你能解释一下你这条推特中的“Meow”和猫的表情吗?以及Gato是什么?它是如何工作的?涉及的是哪种神经网络?如何训练?
Vinyals:首先,Gato这个名字跟其他DeepMind发布的一系列模型一样,是以动物的名字命名。大序列模型刚开始只有语言,但我们正在扩展到其他模态。Gopher(囊地鼠)、Chinchilla(南美栗鼠/龙猫)这些都是纯语言模型,最近我们还发布了涵盖视觉的Flamingo(火烈鸟)。Gato则添加了视觉和动作模态,像上、下、左、右这样的离散动作,可以很自然由词语、映射到强大的语言序列模型中。
在发布Gato之前,我们讨论了我们应该选择哪种动物来命名,我想主要考虑的是generalagent(通用智能体),这是Gato所特有的属性,“gato”在西班牙语中是“猫”的意思。
Gato的基本原理与许多其他工作并没有什么不同。它是一个Transformer模型,一种循环的神经网络,涵盖多种模态,包括视觉、语言、动作。训练时的目标是它能够预测序列中的下一个是什么,如果用来训练的是动作序列,那么就是预测下一个动作是什么。字符序列、图像序列也是类似。我们把它们都看作是字节,模型的任务是预测下一个字节是什么,然后你可以将这个字节理解为一个动作,并在游戏中使用这个动作;你也可以将其理解为一个词,并在与系统的对话中把这个词写下来。
Gato的输入包括图像、文本、视频、动作,以及一些来自机器人的感知传感器,因为机器人也是训练内容之一。它输出的是文字和动作,它不输出图像,我们目前是设计了这样的输出形式,所以我说Gato是一个开始,因为还有更多的工作要做。本质上,Gato是这样一个大脑,你给它任何序列的观察和模态,它会输出序列的下一步。然后你开始你进入下一个并继续预测下一个,以此类推。
现在它不仅仅是一个语言模型,你可以像和Chinchilla、Flamingo聊天一样跟Gato聊天,但它同时是个智能体,它在各种各样的数据集上被训练成是通用的,而不只是擅长星际争霸、雅达利游戏或者围棋。
Fridman:在动作模态上,什么样的模型能称之为「智能体」?
Vinyals:在我看来,智能体实际上是在一个环境中采取行动的能力。它对环境给出一个动作的反应,环境会返回一个新的观察,然后它会产生下一个动作。
我们训练Gato的方法是提取观察数据集,是一种大规模的模仿学习算法,比如训练它预测数据集中的下一个词是什么。我们有人们在网页上的文字和聊天数据集。
DeepMind对强化学习和在不同环境中工作的学习智能体很感兴趣。我们开发了一个数据集,记录智能体的经验轨迹。我们训练的其他智能体都是为了一个单一的目标,比如控制一个三维游戏环境和导航迷宫,我们会把一个智能体与环境的交互所获得的经验加入到数据集里。
训练Gato时,我们把单词、智能体与环境的交互等数据都混合在一起进行训练,这是Gato的「通用」之所在,对于不同的模态和任务,它都只有单个的「大脑」,而且与近年来大部分神经网络相比,它并没有那么大,只有10亿参数。
尽管规模小,但它的训练数据集非常有挑战性和多样化,不仅包含互联网数据,还包含智能体与不同环境的交互经验。
原则上,Gato能够控制任何环境,尤其是被训练过的电子游戏、各种机器人任务等环境。但它不会做得比教它的老师更好,规模仍然是很重要的,Gato的规模相对还比较小,所以它是个开始,扩大规模可能会增强各种模态之间的协同作用。而且我相信会有一些新的研究或准备数据的方法,比如我们需要让模型清楚它在玩雅达利游戏时不只是考虑上和下的动作,在看到屏幕开始玩游戏之前,智能体需要一定的背景,可以用文字告诉它「我给你展示的是一整个序列,你要开始玩这个游戏了」。所以文字可能是增强数据的一个办法。
Fridman:如何对文本、图像、游戏动作、机器人任务做tokenization?
Vinyals:好问题。tokenization是让所有数据成为序列的一个起点,这就像我们把所有东西都分解成这些拼图块,然后就可以模拟出拼图的样子。当你把它们排成一行时,就成了一个序列。Gato使用的是目前标准的文本tokenization技术,我们通过常用的子字符串来对文本进行tokenization,比如“ing”是英语中一个常用的子字符串,所以它可以作为一个token。
Fridman:一个单词需要多少个token?
Vinyals:对于一个英语单词,目前的tokenization粒度一般是2~5个符号,比字母大,比单词小。
Fridman:你尝试过对emojis做tokenization吗?
Vinyals:emojis实际上只是字母的序列。
Fridman:emojis是图像还是文本?
Vinyals:实际上可以将emojis映射为字符序列,所以你可以给模型输入emojis,它也会输出emojis。在Gato中,我们处理图像的方式是把图像压缩为不同强度的像素,从而获得一个非常长的像素序列。
Fridman:所以这里面不涉及语义?你不需要理解关于图像的任何东西?
Vinyals:对,在这里只使用了压缩的概念。在tokenization层面,我们做的就是找到共同的模式来压缩图像。
Fridman:视觉信息比如颜色确实能捕捉到图像意义方面的东西,而不只是一些统计数据。
Vinyals:在机器学习中,处理图像的方法更多是由数据驱动的。我们只是使用图像的统计数据,然后对它们进行量化。常见的子字符串被定位成一个token,图像也是类似,但它们之间没有联系。如果把token看作是整数,假设文本有10个token,从1到10,它们代表了我们会看到的所有语言和单词。
图像是另一个整数集合,从11到20,二者是完全独立的。连接它们的是数据,在数据集中,图片的标题会告诉图像内容。模型需要预测从文本到像素,二者之间的关联随着算法的学习而发生。除了单词、图像,我们还可以把整数分配给动作,将其离散化,用类似的想法把动作压缩成token。
这就是我们现在把所有空间类型映射到整数序列的方法,它们各自占据的空间不同,连接它们的是学习算法。
Fridman:你之前提到过,很难扩大规模,这是什么意思?有些涌现是有规模上的门槛的,为什么很难扩大类似于Gato这样的网络?
Vinyals:如果你对Gato网络进行再训练,扩大规模并不难。关键是我们现在有10亿个参数,我们是否可以使用同样的权重来把它扩展成一个更大的大脑?这是非常困难的。所以在软件工程中有模块化的概念,已经有一些利用模块化的研究。Flamingo不处理动作,但它处理图像很强大,这些项目之间的任务是不同的、模块化的。
我们在Flamingo模型中完美地实现了模块化,我们采用了纯语言模型Chinchilla的权重,然后冻结这些权重,在模型的正确位置接上一些新的神经网络。你需要研究如何在不破坏其他功能的情况下添加别的功能。
我们创建了一个小的子网络,它不是随机初始化的,而是通过自我监督来学习。然后我们用数据集把视觉和语言这两种模态联系起来。我们冻结了网络中最大的部分,然后从头在训练顶部添加了一些参数。然后Flamingo就出现了,它输入的是文本和图像,输出的是文本。你可以教它新的视觉任务,它所做的事情超出了数据集本身提供的功能,但它利用了许多从Chinchilla那里获得的语言知识。
这种模块化的关键思想是,我们取一个冻结的大脑,给它添加一个新的功能。在某种程度上,你可以看到,即使是在DeepMind,我们也有Flamingo这种折衷主义,它可以更合理地利用规模,而不需要从头再训练一个系统。
而Gato尽管也使用了相同的数据集,但它是从头训练的。所以我想社区面临的一个大问题是,我们应该从头开始训练,还是应该接受模块化?作为一种扩大规模的方式,模块化非常有效。
3元学习将包含更多交互
Fridman:Gato出现之后,我们能否重新定义「元学习」这个术语?你认为元学习是什么?5年或10年之后,元学习会是扩展后的Gato的样子吗?
Vinyals:也许向后看而不是向前看能提供一个好视角。当我们在年谈论元学习时,它的含义主要是经历了GPT-3革命而改变的。当时的基准测试是关于学习对象身份的能力,所以非常适用于视觉和物体分类。我们学习的不仅仅是ImageNet告诉我们要学习的1个类别,我们还要学习在与模型交互时可以被定义的对象类别。
模型的进化过程很有趣。刚开始,我们有一个特殊的语言,它是一个小的数据集,我们提示模型有一个新的分类任务。有了机器学习数据集的形式的提示,就得到了一个系统,可以预测或分类我们定义的物体。最后,语言模型成为了一个学习者。GPT-3表明,我们可以