神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。
编者按:ChatGPT引爆了大众的热情,但凡觉得自己挺懂的都会言必称语言大模型(LLM)。但你真的知道LLM的工作原理是怎么样的吗?网上倒不乏解释LLM机制的文章视频,但里面那一个个你从没听说过的专业术语只会让你越看越懵圈。本文力图用简单的语言介绍这些复杂模型的核心概念,让你真正了解LLM大概是怎么工作的。文章来自编译。
去年秋天ChatGPT刚推出时,科技行业以及更广阔的世界感受到了一股巨大的冲击波。彼时,机器学习研究人员已经对大型语言模型(LLM)进行了几年的实验,但公众对此并没有太过关注,也没有意识到它们已经变得有多强大。
如今,几乎每个人都听说过LLM,而尝试过的人也有数以千万计。但了解它们是如何工作的人并不是很多。
如果你对这个主题有所了解,你可能听说过LLM接受过“预测下一个单词”的训练,并且这些模型需要大量的文本才能做到这一点。但解释往往就到此为止了。它们如何预测下一个单词的细节通常被看作是一个深奥的谜团。
原因之一是这些系统不同寻常的开发方式。传统软件是由人类程序员开发的,他们向计算机提供明确的一步步执行的指令。相比之下,ChatGPT 是建立在使用了数十亿个普通语言单词进行训练的神经网络之上的。
因此,地球上没人能够完全了解LLM的内部运作方式。研究人员正在努力获得更好的理解,但这是一个缓慢的过程,需要数年甚至数十年才能完成。
尽管如此,仍然有很多专家们对这些系统的工作原理是很了解的。本文的目标是让广大读者能够了解大量此类知识。我们的目标是解释这些模型的内部工作原理,同时不诉诸于那些技术行话或高级数学。
我们会从解释词向量(word vectors)开始,这是语言模型表示和推理语言的方式。然后我们将深入研究transformer,这是 ChatGPT 等系统的基本构建块。最后,我们会解释如何训练这些模型,并探讨为什么好的性能需要那么多的数据。
要了解语言模型的工作原理,你先的了解它们是怎么表示单词的。人类利用了一系列的字母来表示英语单词,比方说 CAT 表示“猫”。语言模型则使用了一长串数字,称为“词向量”。比方说,以下是将猫这个词表示为向量的一种方法:
为什么要使用结构这么复杂的标记系统?这里有个类比。华盛顿特区位于北纬 38.9 度、西经 77 度。我们可以使用向量符号来表示:
这对于推理空间关系很有帮助。你可以看出纽约与华盛顿特区很接近,因为 38.9 与40.7 很接近,77 与74 很接近。同样,巴黎与伦敦很接近。但巴黎距离华盛顿特区很远。
语言模型采用了类似的方法:每个词向量代表虚构的“词空间”里面的一个点,而且含义更相似的词会被放置到更近的位置(从技术上而言,LLM 是对叫做标记token的词片段进行操作,但这里就忽略这一实现细节了,否则的话本文的长度就不可控了)。比方说,向量空间里面与猫最接近的单词包括狗、小猫(kitten)以及宠物。用实数向量(而不是一串字母,如 CAT)表示单词有一个关键优点,那就是数字可以实现字母实现不了的操作。
词太复杂,没法仅用二维表示,因此语言模型要使用数百甚至数千维的向量空间。而人类的思维没法想象一个具有如此多维度的空间,但是计算机完全有能力对它们进行推理并产生出有用的结果。
几十年来,研究人员就一直对词向量进行各种实验,但当谷歌在 2013 年发布了 word2vec 项目时,这个概念才真正开始流行。谷歌分析了从谷歌新闻(Google News)收集的数百万份文档,为的是找出哪些词往往出现在相似的句子之中。随着时间的推移,经过训练,可以预测哪些单词与其他单词会同时出现的神经网络,后来学会了将相似的单词(比方说狗和猫)放在向量空间里面靠近的位置。
谷歌的词向量还有另一个有趣的特性:你可以运用向量算术来“推理”单词。比方说,谷歌研究人员把“最大”的向量,减去“大”的向量,然后加上“小”的向量。得出与结果向量最接近的词是“最小”。
你可以用向量运算来进行类比!在本例情况下,大之于最大犹如小之于最小。谷歌的词向量因此捕捉到许多的其他关系:
Mouse(老鼠单数)之于mice(老鼠复数)就像dollar(美元单数)之于dollars(美元复数)(复数)
由于这些向量是根据人类使用单词的方式构建的,所以到头来也反映了人类语言存在的许多偏见。比方说,在某些词向量模型里面,“医生 - 男人 + 女人”会得出“护士”。减少此类偏见是一个很活跃的研究领域。
尽管如此,词向量是语言模型很有用的构建块,因为它们对单词关系微妙但重要的信息进行编码。如果语言模型了解了关于猫的一些信息(比方说,它有时候要去看兽医),那么同样的事情也可能适用于小猫或狗。如果模型了解了巴黎和法国之间的关系(比方说,这两个都用同一种语言),那么柏林与德国、罗马与意大利之间很可能也是如此。
像这样的简单的词向量方案存在局限性,因为它并不能捕捉到有关自然语言的一个重要事实:单词通常具有多种含义。
比方说,“银行”(bank)这个词既可以指金融机构,也可以是河边的土地。不妨看看以下句子:
这些句子里面的magazine含义相关,但略有不同。约翰拿起的是一本实体的杂志,而苏珊在一家出版实体杂志的组织工作。
一旦某个单词有两个不相关的含义时,比如bank,语言学家就称之为同形同音异义词(homonyms)。当一个词有两个密切相关的含义时,比方说magazine,语言学家就称之为一词多义(polysemy)。
像 ChatGPT 这样的 LLM 能够根据单词出现的上下文,用不同的向量表示同一个单词。银行(bank,金融机构)有一个向量,河边的土地(bank)也有一个向量。杂志(magazine,实体出版物)有一个向量表示,杂志社(magazine,组织)也有一个向量表示。正如你所料,LLM用更类似的向量来表示一词多义,但表示同音异义词的向量之间就没那么相似。
到目前为止,我们还没有谈到语言模型是如何做到这一点——我们很快就会讨论到这一点。但我们现在正在仔细研究这些向量表示,因为它是理解语言模型是如何工作的基础。
传统软件在设计上要对明确的数据进行操作。如果你要求计算机计算“2 + 3”,则 2、+ 或 3 的含义是毫无疑问的。但自然语言太模糊了,存在的歧义远超同音异义词和一词多义:
在“顾客要求修理工修理他的车”这句话里,“他的”是指顾客的还是修理工的?
人们会根据上下文来消除这样的歧义,但是并没有简单或确定的规则来做到这一点。相反,这需要了解这个世界的事实。你需要知道修理工通常会修理顾客的汽车,学生通常会做自己的作业,而水果通常不会飞。
词向量为语言模型提供了一种灵活的方式来表示特定段落上下文中每个词的精确含义。现在让我们看看它们是如何做到的。
GPT-3 是为 ChatGPT 提供支持的语言模型的前身,诞生于2020 年,这个神经网络分为了数十层。每一层都以一系列的向量作为输入(输入文本的每个单词都有一个向量表示),并添加了信息来帮助阐明该单词的含义,从而更好地预测下一个可能出现的单词。
LLM 的每一层都是一个 Transformer,这是 Google 在 2017 年一篇具有里程碑意义的论文里面首次引入的一种神经网络架构。
该transformer发现,wants和cash都是动词(这两个词也可以是名词)。于是我们把这个添加的上下文表示为括号中的红色文本,但实际上,模型会通过人类难以解释的方式修改词向量来存储它。这些新的向量(叫做隐藏状态)会被传递给这个栈的下一个transformer。
第二个transformer添加了另外两个上下文:它说明“bank”指的是金融机构而不是河岸,“his”是指 John 的代词。第二个transformer又产生了一组隐藏状态向量,这些向量反映了模型到目前为止所学到的一切。
上图刻画的是一个纯粹假设的LLM,所以对其中的细节不要太认真。我们很快就会看到对真实的语言模型的研究。真正的LLM往往不止两层。比方说, GPT-3 最强大的版本就有 96 层。
研究表明,神经网络的前几层侧重于理解句子的语法并解决歧义,如我们上面所示。后面的层(我们没有展示这些层是为了让图示保持在可管理的大小)致力于对整个段落形成高级的理解。
比方说,当LLM“通读”一篇短篇小说时,它似乎会跟踪有关故事人物的各种信息:性别和年龄、与其他人物的关系、过去和当前的位置、性格和目标等等。
LLM究竟是如何跟踪这些信息的呢?研究人员并不能确切了解。但从逻辑上讲,模型必须通过修改隐藏状态向量来实现这一点,因为它们是层层传递下去的。因此,在现代LLM当中,这些向量极其庞大。
比方说,最强大的 GPT-3 版本使用了有 12288 个维度的词向量,也就是每个词由 12288 个数字的列表表示。这比谷歌在 2013 年采用的 word2vec 方案大 20 倍。你可以把所有这些额外的维度看作是一种“暂存空间”,GPT-3 可以用它来为自己写下有关每个单词上下文的注释。后面的层可以读取和修改前面层所做的注释,从而让模型逐渐加深对整个段落的理解。
因此,假设我们修改了上图,从而可以描述解释篇幅为 1000 字的故事的,有 96 层的语言模型。第 60 层可能包括有“John”的向量,并带有附加注释,比方说“(主角,男性,与Cheryl结婚,Donald的表弟,来自明尼苏达州,目前在博伊西,试图找到他丢失的钱包)”。同样,所有这些事实(可能还有更多)都会以某种方式编码为与单词 John 相对应的 12288 个数字的列表。或者,其中一些信息可能被编码在Cheryl、Donald、Boise、钱包或故事里面表示其他单词的12288 维的向量中。
该神经网络的第 96 层(也就是最后一层)的目标是输出最终单词的隐藏状态,里面包含有预测下一个单词所需的所有信息。
现在我们来讨论一下每个transformer内部都发生了些什么。transformer有一个两步的过程来更新输入通道里面每个单词的隐藏状态:
在注意力(attention)步骤里,单词会“看看周围”,去寻找具有相关上下文的其他单词并相互共享信息。
在前馈(feed-forward)步骤里,每个单词都会“思考”在之前的注意力步骤里收集的信息,并尝试预测下一个单词。
当然,执行这些步骤的是网络,而不是单个单词。但我们这样表述是为了强调 Transformer 将单词而不是整个句子或段落视为基本的分析单位。这种方法让LLM得以充分利用现代 GPU 芯片大规模的并行处理能力。它还可以帮助LLM扩展到可处理数千字的段落。而早期的语言模型碰到这种规模就一筹莫展了。
你可以把注意力机制想象成单词的匹配服务。每个单词都会生成一份清单(叫做查询向量query vector),这份清单描述的是其正在查找的单词的特征。每个单词还会创建一份描述其自身特征的清单(叫做关键向量key vector)。神经网络会将每个关键向量与每个查询向量进行比较(通过计算点积来比较),以便找到最佳匹配的单词。一旦找到匹配项,它就会将信息从生成关键向量的单词传输给生成查询向量的单词。
比方说,在上一节里,我们展示了一个假设的transformer,它计算出在部分句子“John Want his Bank to cash the”中,“his”指的是 John。幕后的发生的事情是这样的。 “his”的查询向量可能会这样表示:“我正在寻找:描写男性的名词。” “John”的关键向量可能会这么表示:“我是:描述男性的名词。”网络会检测到这两个向量匹配,并将有关“John”向量的信息搬到“his”向量内。
每一个注意力层都有几个“注意力头”(attention head),这意味着这种信息交换过程在每一层都会(并行)发生多次。每个注意力头专注于不同的任务:
第三个注意力头可能会将双单词的短语链接在一起,比如“Joe Biden”。
注意力头经常是按顺序操作,一层注意力操作的结果会变成后续层注意力头的输入。事实上,我们上面列出的每一项任务可能轻易地就需要多个注意力头,而不仅仅是一个。
GPT-3 的最大版本有 96 层,每层有 96 个注意力头,因此 GPT-3 每次预测新的单词时都会执行 9216 (96 x 96)次注意力操作。
GPT-2 预测下一个词是 Mary。研究人员发现,三种类型的注意力头促成了这一预测:
他们称为命名实体移动头(Name Mover Heads)的三个头将信息从 Mary 向量复制到最终输入向量(单词“to”的向量)。 GPT-2 使用最右边向量中的信息来预测下一个单词。
该神经网络如何确定“Mary”是要复制的正确单词呢?通过逆向追溯 GPT-2 的计算过程,科学家们发现了由四个注意力头组成的一个组,他们称之为对象抑制头(Subject Inhibition Heads),该组会对第二个John向量进行标记,从而阻止命名实体移动头复制John这个名字。
对象抑制头怎么知道不应该复制John?进一步向后追溯,该团队又发现了两个注意力头,他们称之为“重复标记头”(Duplicate Token Heads)。他们将第二个John向量标记为第一个John向量的副本,从而帮助对象抑制头做出决定,不应该复制John。
简而言之,这九个注意力头让 GPT-2 得以发现“John 给了一杯饮料给 John”没有意义,并选择“John 给了一杯饮料给Mary”。
我们很喜欢这个例子,因为它说明了完全理解LLM是多么的困难。 Redwood 团队的五名成员发表了一篇 25 页的论文,解释了他们是如何识别和验证这些注意力头的。然而,计算他们完成了所有这些工作,我们距离全面解释为什么 GPT-2 决定将“Mary”作为预测的下一个单词仍然还远得很。
比方说,模型如何知道下一个单词应该是某人的名字而不是其他类型的单词?人们很容易就能想出Mary不会成为很好的预测单词的类似句子。比方说,在“当Mary和John去餐厅时,John把他的钥匙给了”这句话里,合理的下一个单词将是“服务员”。
经过了足够的研究的话,计算机科学家想必是可以发现并解释 GPT-2 推理过程的其他步骤的。最终,他们有可能可以全面理解 GPT-2 是如何确定 Mary 最有可能成为这句话的下一个单词。但光是理解单个单词的预测可能就需要再付出数月甚至数年的努力。PP电子 游戏
ChatGPT 底层的语言模型比 GPT-2 更大、更复杂。它们能够进行的推理比Redwood团队研究的简单句子补全任务要更复杂。因此,充分解释这些系统是如何工作会是一个庞大项目,人类不太可能很快就能完成这个项目。
在注意力头在词向量之间传输完信息之后,会有一个前馈网络“思考”每个词向量并做出预测下一个词的尝试。在这个阶段,单词之间不会交换任何信息:而是由前馈层单独分析每个单词。不过,前馈层确实可以访问先前由注意力头复制的任何信息。以下是最大版本的 GPT-3 的前馈层结构:
其中,绿色和紫色圆圈是神经元,是计算输入加权和的数学函数。(然后得出的总和会传递给一个激活函数。)
前馈层的强大之处在于其拥有的大量连接。我们绘制的这个网络在输出层有 3 个神经元,在隐藏层有 6 个神经元,但 GPT-3 的前馈层要大得多:输出层有 12288 个神经元(对应模型 12288 维的词向量),隐藏层则有 49152 个神经元。
那么,在 GPT-3 的最大版本里,隐藏层有 49152 个神经元,每个神经元有 12288 个输入(因此有 12288 个权重参数)。每个神经元有 12288 个输出神经元,这些输出神经元各有 49152 个输入值(因此有 49152 个权重参数)。这意味着每个前馈层有 49152 * 12288 + 12288 * 49152 = 12 亿个权重参数。鉴于总共有 96 个前馈层,也就是总共有 12 亿 * 96 = 1160 亿个参数!这几乎占到 GPT-3 的1750 亿个参数总数的三分之二。
在 2020 年的一篇论文中,特拉维夫大学的研究人员发现前馈层是通过模式匹配发挥作用的:隐藏层的每个神经元都与输入文本的特定模式匹配。以下是 16 层版本的 GPT-2 中神经元匹配的一些模式:
第1层的神经元匹配以“替代品”(substitutes)结尾的单词序列。
第 6 层的神经元匹配与军事相关,并以“base”或“bases”结尾的序列。
第 13 层的神经元匹配以时间范围结尾的序列,比方说“下午 3 点到 7 点之间”或“从周五晚上 7:00 到”。
第 16 层的神经元匹配与电视节目相关的序列,比方说“原创 NBC 日间版,已存档”或“时移观看令该节目的播放量增加了 57% ” 。
正如你所看到的,越往后面的层模式变得越抽象。前面的层往往是用来匹配特定的单词,而后面的层则会匹配属于更广泛语义类别的短语,比方说电视节目或时间间隔。
这很有趣,因为就像前面所说那样,前馈层每次只检查一个单词。因此,当它将序列“原创 NBC 日间版,存档”归类为与电视相关时,它只能访问“存档”的向量,而不能访问“ NBC ”或“日间”等单词。前馈层大概是可以知道“存档”属于电视相关序列的一部分,因为注意力头之前已将上下文信息搬到“存档”的向量里面。
一旦神经元匹配了其中一个模式,它就会往词向量添加信息。虽然这一信息未必总能易于解释,但在很多情况下,你都可以把它看作是对下一个单词的初步预测。
布朗大学最近的研究披露了一个例子,这个例子优雅地说明了前馈层是如何帮助预测出下一个单词地。我们在前面讨论了谷歌的 word2vec 研究,该研究表明,可以运用向量计算进行类比推理。比方说,柏林 - 德国 + 法国 = 巴黎。
布朗大学的研究人员发现,前馈层有时候会利用这种精确的方法来预测下一个单词。比方说,他们研究了 GPT-2 是如何响应以下提示地:“问:法国的首都在哪里? 答:巴黎。 问:波兰的首都在哪里? 答:”
该团队研究了有 24 层网络的一版 GPT-2 。在每一层之后,布朗大学的科学家都会对模型进行探索,去观察其对下一个标记做出的最佳猜测。前 15 层地时候,最佳猜测是一个看似随机的单词。到了第 16 层与第 19 层之间时,模型开始预测下一个词将是“波兰”——不对,但方向开始接近了。然后到第20 层,最佳猜测变成了华沙(这是正确答案),而且最后四层这个答案仍维持不变。
布朗大学的研究人员发现,到了第 20 前馈层之后,神经网络增加了一个将国家向量映射到相应首都的向量,从而将“波兰”转换为“华沙”。将相同的向量添加到“中国”就会生成“北京”。
同一模型的前馈层利用向量计算将小写单词转换为大写单词,将现在时态的单词转换为过去时态的单词。
到目前为止,我们已经研究了 GPT-2 单词预测的两个现实示例:注意力头帮助预测出 John 把一杯饮料给了 Mary,前馈层则帮助预测出华沙是波兰的首都。
在第一种情况下,“Mary”来自用户提供的提示。但在第二种情况下,提示里面并没有“华沙”。相反,GPT-2 必须“记住”华沙是波兰首都这个事实——它时从训练数据里面学到这个信息的。
当布朗大学的研究人员禁用将波兰转换为华沙的前馈层时,该模型就不再预测华沙时下一个单词了。但有趣的是,如果他们随后在提示的开头添加“波兰的首都是华沙”的线 就又可以正确回答这个问题了。这可能是因为 GPT-2 利用注意力头复制了提示前面的文字里面的名称 “华沙”。
这种分工其实是个普遍规律:注意力头从提示前面的文字的单词中检索信息,而前馈层则是让语言模型能够“记住”提示里面所没有的信息。
事实上,思考前馈层的方式之一是把它看作是模型从训练数据中学到的信息数据库。前面的前馈层更有可能对与特定单词相关的简单事实进行编码,比方说“特朗普经常出现在唐纳德之后”。后面的层侧重对更复杂的关系进行编码,比方说“添加这个向量,将一个国家转换为它的首都”。
许多早期的机器学习算法都需要由人手动去标记训练示例。比方说,训练数据由可能是狗或猫的照片,每张照片上都带有人打上的标签(“狗”或“猫”)。要想训练出强大的模型,就需要足够大的数据集,需要人对数据进行标记导致建立起这样的数据集变得十分困难且成本高昂。
LLM的一个关键创新是它们不需要明确标记的数据。相反,这些模型通过尝试预测普通文本段落的下一个单词来学习。从页面到新闻文章再到计算机代码,几乎所有书面材料都适合训练这些模型。
比方说,LLM可能会收到这样的输入:“我喜欢往咖啡里面加奶油和”,然后预测出“糖”是下一个单词。刚刚初始化的语言模型在这方面会表现得非常糟糕,因为它的每个权重参数( GPT-3 最强大的版本里面有 1750 亿个权重参数)一开始其实都是随机的数字。
但随着模型看到更多的例子(数千亿个单词),这些权重会逐渐调整,从而做出越来越好的预测。
我们可以用一个类比来说明它是如何工作的。假设你要洗澡,你希望水温要刚刚好:不太热也不太冷。你以前从未用过这个,所以你随便旋了一下手柄并感受水温。如果太热,就顺时针转一下;如果太冷,就逆时针转一下。越接近合适的水温,你所做的调整就越小。
现在让我们稍微修改一下这个类比。首先,假设你有 50257 个旋钮,而不是只有一个。每个旋钮对应一个不同的单词,如“the”、“cat”或“bank”。你的目标是让水只能从对应序列的下一个单词的水龙头里流出来。
其次,水龙头后面有一个相互连接在一起的管道迷宫,这些管道上面也有一堆的阀门。因此,如果水从错误的水龙头流出来的话,你不能光靠调节水龙头上的旋钮。你还得派遣一群聪明的松鼠向后跟踪每一条管道,然后相应调整这些松鼠沿途找到的每一个阀门。
情况开始变得很复杂,因为同一根管道常用连接了多个水龙头。因此,你得仔细考虑清楚才能确定哪些阀门需要拧紧,哪些阀门需要松开,以及松开多少。
显然,如果你过于从字面上理解这些话,这个例子很快就会显得很蠢。建立起一个拥有 1750 亿个阀门的管道网络既不现实,也没有用。但由于摩尔定律,计算机能够而且确实是以这样的规模运行的。
到目前为止,我们在本文讨论的关于LLM的一切(前馈层的神经元以及在单词之间转移上下文信息的注意力头),最后都实现为一系列简单的数学函数(主要是矩阵乘法),而它们的行为则是由可调整的权重参数确定的。就像我用来比喻的松鼠通过松开和拧紧阀门来控制水流一样,训练算法也会增加或减少语言模型的权重参数来控制信息在神经网络内部的流动。
训练过程分两步进行。首先是“前向传播”(forward pass),打开总水阀,检查水是不是从正确的水龙头流出来。然后关闭总水阀,这时候开始“反向传播”(backward pass),松鼠们开始赛跑沿着每根管道一路拧紧和松开阀门。在数字神经网络当中,松鼠的角色是由一种叫做反向传播(backpropagation)的算法扮演的,这种算法会在网络里面“倒着走”,用微积分来估计每个权重参数需要调整多少。
完成这个过程(对一个例子进行一次前向传播,然后进行一次反向传播,从而提高网络在该例子上的表现)需要上千亿次的数学运算。训练像 GPT-3 这么大规模的模型需要针对很多例子重复这一过程。 据 OpenAI 估计,训练 GPT-3 需要超过 3000 亿万亿次的浮点计算,这需要数十块高端计算机芯片来说连续跑好几个月。
你可能会惊讶地发现这个训练过程的效果怎么会这么好。 ChatGPT 可以执行各种复杂的任务——撰写论文、进行类比,甚至编写计算机代码。那么如此简单的学习机制是怎么产生出如此强大的模型的呢?
其中一个原因是规模。像 GPT-3 这样的模型看到的例子数量之多再怎么强调都不为过。 GPT-3 用了大约有 5000 亿个单词的语料库进行训练。相比之下,典型的人类儿童在 10 岁的时候大概能接触约 1 亿个单词。
在过去五年的时间里,OpenAI 一直在稳步扩大其语言模型的规模。在2020年一篇被广为传阅的论文里,OpenAI 报告称,其语言模型的准确性“与模型大小、数据集大小以及用于训练的计算量之间呈幂律关系,其中部分趋势相差了七个数量级以上。 ”
他们的模型越大,在牵涉到语言类的任务上的表现就越好。但只有当他们将训练数据量按照类似倍数增加时才会如此。要用更多数据训练更大的模型,你就需要有更多的计算能力。
OpenAI的第一个LLM ,也就是GPT-1,是在2018年发布的。这个模型用了768维的词向量,有12层,总共有1.17亿个参数。几个月后,OpenAI 又发布了 GPT- 2。其最大版本有 1600 维的词向量、有48 层,总共是 15 亿个参数。
2020年,OpenAI发布了GPT-3,其特征为12288维词向量,有96层,总共1750亿个参数。然后到了今年,OpenAI 发布了 GPT-4。这家公司还没有公布该模型任何的架构细节,但大家普遍认为 GPT-4 要比 GPT-3 大得多。下一代的模型不仅比之前的模型学到了更多的事实,而且在需要一定形式的抽象推理的任务上的表现也更好。
有一个袋子,里面装满了爆米花。袋子里没有巧克力。不过袋子的标签上却写着“巧克力”而不是“爆米花”。Sam找到了这个袋子。她以前从未见过这个袋子。她看不到袋子里面装的是什么。她读了上面的标签。
你可能会猜到,Sam会认为袋子里装的是巧克力,然后惊讶地发现里面装的是爆米花。心理学家把这种推断他人心理状态的能力叫做“心理理论”(theory of mind)。大多数人从小学起就具备了这种能力。专家们对于非人类动物(如黑猩猩)是否具有心理理论仍存在分歧,但普遍认为心理理论对人类社会的认知很重要。
今年早些时候,斯坦福大学心理学家Michal Kosinski发表了一项研究,里面探讨了LLM解决心理理论任务的能力。他把类似上面的段落喂给各种语言模型,然后要求这些模型补充完成类似 “她认为袋子里装满了”这样的句子。正确的答案是“巧克力”,但不够娴熟的语言模型可能会说是“爆米花”或其他东西。
GPT-1 和 GPT-2 未能通过这项测试。但 2020 年发布的第一个版的 GPT-3 的正确率几乎达到了 40%——Kosinski 认为其表现相当于 3 岁小孩的水平。去年 11 月发布的最新版的 GPT-3 把这个问题的正确率提高到 90% 左右,与 7 岁儿童的水平相当。 GPT-4 已经可以正确回答约 95% 的心理理论问题。
Kosinski写道:“鉴于既没有迹象表明类似心理理论的能力是被故意设计到这些模型之中的,也没有研究表明科学家知道如何实现这一点,这种类心理理论能力很可能自发、自主出现的,是模型不断增强的语言能力的副产品。”
值得注意的是,不是所有的研究人员都同意这些结果是具备心理理论能力的证据。比方说,错误信念任务的细微变化会导致 GPT-3 的表现差很多,而且在其他衡量心理理论的任务上,GPT-3的表现也各不相同。就像我们当中的一个人(Sean)所写那样,其成功的表现可能要归因于任务存在的混杂因素——属于一种“聪明的汉斯”效应(编者注:指一匹叫做汉斯的马经过训练后似乎能够通过踢踏来回答数学问题,但其实只是它学会了解读训练它的人的细微的身体语言暗示),只不过这种效应出现在语言模型中,而不是马身上。
尽管如此, 在用来测量心理理论的多项任务上,GPT-3竟然取得了接近人类的表现,这在在几年前还是不可想象的,而这与较大的模型通常更擅长需要高级推理的任务的想法是一致的。
这只是语言模型似乎自发地发展出高级推理能力的众多例子之一。今年 4 月,微软的研究人员发表了一篇论文。该论文认为, GPT-4 展现出了诱人地通用人工智能的早期迹象——以复杂的、类似人类的方式去思考的能力。
比方说,一位研究人员要求 GPT-4 用一种晦涩难懂的图形编程语言(叫做TiKZ)画个独角兽。 GPT-4 回复了几行代码,然后研究人员再把代码输入给iKZ软件。生成的图像很粗糙,但这清楚地表明, GPT-4 对独角兽的样子有一定的了解。
研究人员认为 GPT-4 可能是以某种方式记住了训练数据里面绘制独角兽的代码,于是他们又给了它一个后续挑战:他们修改了画独角兽的代码,把独角兽的角给去掉了,还移动了部分其他身体部位。然后他们要求 GPT-4 给独角兽重新安上角。 GPT-4 的回应是把角放在了正确的位置:
即便作者用来测试的版本所用的训练数据完全是基于文本的,GPT-4 也依然能做到这一点。也就是说,它的训练集当中并没有图像。但显然,GPT-4在接受了大量书面文本训练之后,学会了推理出独角兽身体的形状。
目前,我们还没有真正了解LLM是如何实现这样的壮举的。有些人认为这些例子表明模型开始真正理解训练集当中的单词的含义。其他人则坚持认为,语言模型是“随机鹦鹉”,它们只是重复着日益复杂的单词序列,但并没有真正理解它们。
这场争论指向了一个深层次的,无法调解的哲学矛盾。尽管如此,我们认为关注 GPT-3 等模型的实证表现很重要。如果语言模型能够始终如一地得出特定类型问题的正确答案,并且研究人员确信他们已经控制了混杂因素(比方说,确保语言模型在训练期间不会受到这些问题的影响),那这就是一个有趣且重要的结果,模型是否以与人类完全相同的方式理解了语言已经无所谓了。
使用下一个标记预测进行训练之所以如此有效,另一个可能的原因是语言本身是可预测的。语言的规律性常常(尽管并非总是如此)与物理世界的规律性相关。因此,当语言模型了解了单词之间的关系时,它往往也在不经意间了解了这个世界的关系。
此外,预测也许是生物智能与人工智能的基础。在安迪·克拉克(Andy Clark)等哲学家看来,人脑可以看作是一台“预测机器”,其主要工作是对我们的环境进行预测,然后用来成功地在这个环境下导航。直观地说,做出好的预测得益于好的表示——用准确的地图比用不准确的地图更有可能导航成功。这个世界很大而且很复杂,做出预测可以帮助生物体有效地确定方位,适应这种复杂性。
传统上,建立语言模型的主要挑战之一是找出表示不同单词最有用的方式,特别是因为很多单词的含义在很大程度上要取决于上下文。下一个单词预测法让研究人员得以通过将其转化为实证问题来回避这个棘手的理论难题。事实证明,如果我们提供足够的数据和计算能力,语言模型最终只需弄清楚如何最好地预测出下一个单词,就能学到很多关于人类语言工作机制的知识。缺点是我们最终得到了一个其内部运作方式我们并不完全了解的系统。
Copyright © 2019-2023 PP电子「中国」平台网站 版权所有 备案号:鄂ICP备12015236号