下文翻译自Timothy B Lee和Sean Trott花费两个月完成的一篇博客。
“Large language models, explained with a minimum of math and jargon (understandingai.org)”。
语言大模型内部究竟是如何工作的?本文用最少的数学知识和术语进行解释。如今,几乎每个人都听说过LLM,并有数千万人用过它们,但是,了解工作原理的人并不多。你可能听说过,训练LLM是用于“预测下一个词”,而且它们需要大量的文本来实现这一点。但是,解释通常就止步于此。它们如何预测下一个词的细节往往被视为一个深奥的谜题。
其中一个原因是,这些系统的开发方式与众不同。一般的软件是由人类工程师编写,他们为计算机提供明确的、逐步的指令。相比之下,ChatGPT是建立在一个使用数十亿个语言词汇进行训练的神经网络之上。
因此,地球上没有人完全理解LLM的内部工作原理。研究人员正在努力尝试理解这些模型,但这是一个需要数年甚至几十年才能完成的缓慢过程。然而,专家们确实对这些系统的工作原理已有不少了解。本文的目标是将这些知识开放给广大受众。我们将努力解释关于这些模型内部工作原理的已知内容,而不涉及技术术语或高级数学。
我们将从解释词向量(word vector)开始,它是语言模型表示和推理语言的一种令人惊讶的方式。然后,我们将深入探讨构建ChatGPT等模型的基石Transformer。最后,我们将解释这些模型是如何训练的,并探讨为什么要使用庞大的数据量才能获得良好的性能。
Word vectors词向量
要理解语言模型的工作原理,首先需要了解它们如何表示单词。人类用字母序列来表示英语单词,比如用C-A-T来表示"cat"。语言模型使用一个称为词向量的长列表来表示单词。例如,这是一种表示"cat"的向量的方式:
[0.0074, 0.0030, -0.0105, 0.0742, 0.0765, -0.0011, 0.0265, 0.0106, 0.0191, 0.0038, -0.0468, -0.0212, 0.0091, 0.0030, -0.0563, -0.0396, -0.0998, -0.0796, …, 0.0002]
(完整的向量长度为300个数字,要查看完整数字,请访问下面网站,并然后点击Show the raw vector of «cat» )。
http://vectors.nlpl.eu/explore/embeddings/en/MOD_enwiki_upos_skipgram_300_2_2021/cat_NOUN/
为什么要使用这样的复杂表示法呢?这里举个类比。华盛顿特区位于北纬38.9度、西经77度。我们可以使用向量表示法来表示它:
Washington DC is at [38.9, 77]New York is at [40.7, 74]London is at [51.5, 0.1]Paris is at [48.9, -2.4]这对于推理空间关系非常有用。你可以通过38.9接近于40.7以及77接近于74来判断纽约离华盛顿特区很近。同样的道理,巴黎靠近伦敦。但是巴黎离华盛顿特区很远。
语言模型采用类似的方法:每个词向量代表了虚拟的“词空间”中的一个点,具有更相似含义的单词会被放置在彼此更靠近的位置。例如,在词向量空间中,最接近"cat"的词包括"dog"、"kitten"和"pet"。使用实数向量(而不是像"C-A-T"这样的字母序列)来表示单词的一个关键优势是,数字使得可以进行字母无法实现的操作。
单词太复杂,无法仅用二维空间表示,因此语言模型使用具有数百甚至数千维度的向量空间。人类无法想象具有如此多维度的空间,但计算机完全能够对其进行推理并产生有用的结果。
研究人员几十年来一直在尝试使用词向量,但这个概念真正开始流行起来是在2013年,当时谷歌宣布了其word2vec项目。谷歌分析了从Google新闻中获取的数百万份文档,以确定哪些单词倾向于在类似的句子中出现。随着时间的推移,经过训练的神经网络学会了预测哪些单词与其他单词同时出现,并将相似的单词(如"dog"和"cat")放置在向量空间中靠近的位置。
谷歌的词向量还有一个有趣的特性:你可以使用向量算术来“推理”单词。例如,谷歌的研究人员取了"biggest"的向量,减去"big",再加上"small"。与结果向量最接近的词是"smallest"。
你可以使用向量算术来进行类比!在这个例子中,big对应biggest,就像small对应smallest一样。谷歌的词向量捕捉到了许多其他的关系:
Swiss is to Switzerland as Cambodian is to Cambodia. (nationalities)Paris is to France as Berlin is to Germany.(capitals)Unethical is to ethical as possibly is to impossibly. (opposites)Mouse is to mice as dollar is to dollars.(plurals)Man is to woman as king is to queen.(gender roles)由于这些向量是根据人类使用单词的方式构建的,它们反映了存在于人类语言中的许多偏见。例如,在某些词向量模型中,doctor减去man再加上woman的结果是nurse。减轻这种偏见是当前研究的一个领域。
然而,词向量对于语言模型来说是一个有用的构建模块,因为它们编码了关于单词之间关系的微妙但重要的信息。如果语言模型学到了关于猫的某些事情(例如:它有时去看兽医),同样的事情很可能也适用于小猫或狗。如果模型学到了巴黎和法国之间的关系(例如:它们共用一种语言),那么柏林和德国以及罗马和意大利之间也很有可能存在相同的情况。
Word meaning depends on context词义取决于上下文
像这样的简单词向量方案无法捕捉到自然语言的一个重要事实:单词通常具有多个含义。
例如,单词"bank"可以指代金融机构或河边的土地。或者考虑以下句子:
John picks up a magazine.Susan works for a magazine.这些句子中的"杂志"的含义相关但微妙地不同。约翰拿起的是一本实体杂志,而苏珊为一家出版实体杂志的机构工作。
当一个单词具有两个无关的含义时,如"bank",语言学家称之为同音异义词(homonyms)。当一个单词具有两个密切相关的含义时,如"杂志",语言学家称之为多义性(polysemy)。
像ChatGPT这样的语言模型能够根据单词出现的上下文以不同的向量表示相同的单词。有一个针对"bank"(金融机构)的向量,还有一个针对"bank"(河岸)的不同向量。有一个针对"杂志"(实体出版物)的向量,还有一个针对"杂志"(机构)的向量。正如你所预期的,语言模型在多义性含义上使用更相似的向量,而在同音异义词上使用更不相似的向量。
到目前为止,我们还没有讨论语言模型如何做到这一点,我们将很快介绍。但我们一直在详细阐述这些向量表示,因为这是理解语言模型如何工作的基础。
传统软件设计用于处理明确的数据。如果你让计算机计算"2 + 3",对于数字2、加号和数字3的含义没有任何歧义。但自然语言充满了超越同音异义词和多义性的歧义:
在句子"the customer asked the mechanic to fix his car"中,"his "是指顾客还是修理工?
在句子"the professor urged the student to do her homework"中,"her "是指教授还是学生?
在句子"fruit flies like a banana"中,"flies "是动词(指水果在天空中飞翔)还是名词(指喜爱香蕉的昆虫)?
人们根据上下文来解决这样的歧义,但没有简单或确定的规则可以做到这一点。相反,它需要对世界的事实有所了解。你需要知道修理工通常修理顾客的车,学生通常自己做家庭作业,以及水果通常不会飞行。
词向量为语言模型提供了一种灵活的方式,以在特定上下文中表示每个单词的精确含义。现在让我们来看看它们是如何做到这一点的。
Transforming word vectors into word predictions将词向量转化为词语预测
GPT-3,即ChatGPT原始版本背后的模型,由数十个层组成。每个层以一系列向量作为输入,输入文本中每个单词对应一个向量,并添加信息来澄清该单词的含义,并更好地预测接下来可能出现的单词。
让我们从一个简化的例子开始
LLM(语言模型)的每个层都是一个transformer,这是一种神经网络架构,由Google在2017年发表的一篇具有里程碑意义的论文中首次引入。
图中显示的模型输入位于图的底部,是部分句子“John wants his bank to cash the.” 这些单词被表示为word2vec风格的向量,并输入到第一个transformer中。
transformer推断出wants和cash都是动词(这两个词也可以是名词)。我们用括号中的红色文本表示这个额外的上下文,但实际上,模型会通过修改单词向量的方式存储它,这种方式对人类来说很难解释。这些新的向量被称为隐藏状态,传递给堆叠中的下一个transformer。
第二个transformer添加了其他两个上下文信息:它澄清了bank指的是金融机构而不是河岸,还指出his是一个指代John的代词。第二个transformer生成了另一组隐藏状态向量,反映了模型到目前为止学到的所有知识。
上述图表描绘了一个纯粹假设的LLM,所以不要过于认真对待细节。我们很快将研究真实的语言模型。实际的LLM通常有不止两个层。例如,最强大的GPT-3版本有96个层。
研究表明,前几层主要关注理解句子的语法和解决上面所示的歧义。后续的层(我们没有显示在图表中以保持图表的可管理大小)致力于对整个段落进行高层次的理解。
例如,当LLM“阅读”一篇短篇小说时,它似乎会对这个故事的多种信息进行跟踪:性别和年龄、与其他角色的关系、过去和当前的位置、个性和目标等等。
研究人员并不完全理解LLM是如何跟踪这些信息的,但从逻辑上讲,模型必须通过在层与层之间传递时修改隐藏状态向量来实现。对于现代LLM来说,这些向量非常大,这有助于这个过程。
例如,最强大的GPT-3版本使用具有12,288个维度的词向量,也就是说,每个单词由一个包含12,288个数字的列表表示。这比Google在2013年推出的word2vec方案大20倍。你可以将所有这些额外的维度看作是GPT-3可以用来对每个单词的上下文进行记录的一种“临时空间”。早期层次所做的记录可以被后续层次阅读和修改,从而使模型逐渐加深对整个段落的理解。
假设我们将上面的图表改为描述一个96层的语言模型来解释一个1000词的故事。第60层可能包含一个John的向量,带有括号注释,比如“(主角,男性,娶了Cheryl,Donald的表兄,来自明尼苏达州,目前在博伊西,试图找到他遗失的钱包)”。同样,所有这些事实(或许还有更多)都会以一个包含12288个数字的列表的形式编码,这些数字对应于单词John。或者,这些信息的一部分也可能会被编码在Cheryl、Donald、Boise、wallet或故事中的其他单词的12288维向量中。
96层网络的目标是输出一个包含所有必要信息的最终词的隐藏状态,以预测下一个词。
Can I have your attention please我可以吸引你的注意吗?
现在让我们谈谈每个Transformer内部发生的事情。Transformer对于更新输入段落中每个单词的隐藏状态有一个两步的过程:
1.在注意力步骤中,单词会“寻找”与其具有相关上下文的其他单词,并相互共享信息。
2.在前馈步骤中,每个单词会“思考”之前注意力步骤中收集到的信息,并尝试预测下一个单词。
当然,执行这些步骤的是网络,而不是个别单词。但我们以这种方式表述是为了强调Transformer将单词视为分析的基本单位,而不是整个句子或段落。这种方法使得语言模型可以充分利用现代GPU芯片的大规模并行处理能力。它还帮助语言模型在处理数千个单词的段落时进行扩展,这是以前的语言模型所面临的困难之处。
你可以将注意机制看作是单词之间的媒婆服务。每个单词都会创建一个清单(称为查询向量),描述它寻找的单词的特征。每个单词还会创建一个清单(称为键向量),描述它自身的特征。网络会将每个键向量与每个查询向量进行比较(通过计算点积),以找到最佳匹配的单词。一旦找到匹配,它会将信息从产生键向量的单词传递给产生查询向量的单词。
例如,在前面的部分中,我们展示了一个假设的Transformer推断出在部分句子“John wants his bank to cash the”中,his指的是John。以下是在内部可能的实现方式。his的查询向量可能有效地表示“我正在寻找:描述男性的名词”。John的键向量可能有效地表示“我是:描述男性的名词”。网络会检测到这两个向量匹配,并将关于John的向量的信息转移到his的向量中。
每个注意力层都有多个“注意力头”,这意味着这个信息交换过程在每个层次上会多次(并行)发生。每个注意力头专注于不同的任务:
一个注意力头可能会将代词与名词进行匹配,就像我们之前讨论的那样。另一个注意力头可能会处理解决类似“bank”这样的同音异义词的含义。第三个注意力头可能会将“Joe Biden”这样的两个单词短语链接在一起。诸如此类。
注意力头经常按顺序操作,一个层次中的注意力操作的结果成为后续层次中的一个注意力头的输入。实际上,我们刚才列出的每个任务都可能需要多个注意力头,而不仅仅是一个。
最大版本的GPT-3有96层,每层有96个注意力头,因此每次预测一个新单词时,GPT-3执行9,216个注意力操作。
A real-world example一个真实案例
在最后的两个部分中,我们呈现了注意力头的工作方式的简化版本。现在让我们来看看对真实语言模型内部运作的研究。去年,Redwood Research的科学家研究了GPT-2(ChatGPT的前身)如何预测下一个单词的。他们使用了以下句子作为样本:“When Mary and John went to the store, John gave a drink to.”
GPT-2预测下一个单词是Mary。研究人员发现有三种类型的注意力头对此预测起到了作用:
他们称之为“Name Mover Heads”的三个注意力头从Mary的向量中复制信息到最终输入向量(用于表示to这个单词)。GPT-2使用这个最右侧的向量中的信息来预测下一个单词。网络是如何决定复制Mary这个单词的呢?通过逆向分析GPT-2的计算过程,科学家们发现了一组四个注意力头,他们称之为“Subject Inhibition Heads”,它们以一种方式标记了第二个John向量,阻止了“Name Mover Heads”复制名字John。Subject Inhibition Heads是如何知道不应该复制John这个单词的呢?进一步逆向分析,团队发现了两个注意力头,称之为“Duplicate Token Heads”。它们将第二个John向量标记为第一个John向量的重复,这有助于Subject Inhibition Heads决定不应该复制John。简而言之,这九个注意力头使得GPT-2能够推断出“John gave a drink to John”没有意义,而选择了“John gave a drink to Mary”。
我们喜欢这个例子,因为它展示了要完全理解语言模型的困难之处。Redwood团队的五名成员发表了一篇25页的论文,解释了他们如何识别和验证这些注意力头。然而,即使他们完成了所有这些工作,我们仍然远未能全面解释为什么GPT-2决定预测Mary作为下一个单词。
例如,模型是如何知道下一个单词应该是一个人的名字,而不是其他类型的词?我们可以轻松想到类似的句子,其中Mary不会是一个好的下一个单词预测。例如,在句子“当Mary和John去餐厅的时候,John把他的钥匙给了”中,逻辑上下一个单词应该是“the valet”。
可以想象,通过足够的研究,计算机科学家们可以揭示并解释GPT-2推理过程中的其他步骤。最终,他们可能能够全面了解GPT-2为什么决定在这个句子中预测Mary是最可能的下一个单词。但是,即使只是理解一个单词的预测,可能需要额外几个月甚至几年的努力。
ChatGPT背后的语言模型——GPT-3.5和GPT-4比GPT-2要大得多、更复杂。它们能够进行比Redwood团队研究的简单句子完成任务更复杂的推理。因此,要完全解释这些系统的工作原理将是一个巨大的项目,人类很可能在短时间内无法完成。
the feed-forward step前馈步骤
在注意力头之间传递信息后,有一个前馈网络进行思考每个词向量,并尝试预测下一个单词。在这个阶段,词之间不进行信息交换:前馈层独立分析每个单词。然而,前馈层可以访问之前由注意力头复制的任何信息。以下是GPT-3最大版本中前馈层的结构。
绿色和紫色圆圈表示神经元:它们是计算它们输入的加权和的数学函数。
前馈层之所以强大,是因为它具有庞大的连接数。我们在输出层中绘制了三个神经元,在隐藏层中有六个神经元,但是GPT-3的前馈层要大得多:输出层有12,288个神经元(对应模型的12,288维词向量),隐藏层有49,152个神经元。
因此,在GPT-3最大版本中,隐藏层有49,152个神经元,每个神经元有12,288个输入(因此有12,288个权重参数)。每个神经元有49,152个输入值(因此有49,152个权重参数)。这意味着每个前馈层有49,152 * 12,288 + 12,288 * 49,152 = 12亿个权重参数。而且有96个前馈层,总共有12亿 * 96 = 1160亿个参数!这几乎占据了GPT-3总共1750亿个参数的三分之二。
在2020年的一篇论文中,来自以色列特拉维夫大学的研究人员发现,前馈层通过模式匹配工作:隐藏层中的每个神经元匹配输入文本中的特定模式。以下是在GPT-2的16层版本中由神经元匹配的一些模式:
第一层的一个神经元匹配以“substitutes”结尾的词序列。第六层的一个神经元匹配与军事相关并以“base”或“bases”结尾的词序列。第13层的一个神经元匹配以时间范围结尾的词序列,例如“between 3 pm and 7”或“from 7:00 pm Friday until”。第16层的一个神经元匹配与电视节目相关的词序列,例如“the original NBC daytime version, archived”或“time shifting viewing added 57 percent to the episode’s”。正如你所看到的,随着层数的增加,模式变得更加抽象。早期的层倾向于匹配特定的单词,而后期的层匹配的短语则属于更广泛的语义类别,例如电视节目或时间间隔。
这很有趣,因为如前所述,前馈层一次只检查一个单词。因此,当它将序列“the original NBC daytime version, archived”分类为与电视相关时,它只能访问archived的向量,而不能访问NBC或daytime等单词。可以推测,前馈层能够判断archived是与电视相关的序列的一部分,是因为注意力头先前将上下文信息移入了archived向量中。
当神经元匹配这些模式之一时,它会向词向量添加信息。虽然这些信息并不总是容易解释,但在许多情况下,你可以将其视为关于下一个单词的初步预测。
Feed-forward networks reason with vector math前馈网络通过向量运算进行推理
布朗大学的最新研究揭示了前馈层如何帮助预测下一个单词的一个优雅的例子。之前我们讨论过谷歌的word2vec研究表明,可以使用向量运算进行类比推理。例如,Berlin - Germany + France = Paris。
布朗大学的研究人员发现,前馈层有时确实使用这种精确的方法来预测下一个单词。例如,他们研究了GPT-2对以下提示的回应:“Q: 法国的首都是什么?A: 巴黎 Q: 波兰的首都是什么?A:”
团队研究了一个具有24层的GPT-2版本。在每一层之后,布朗大学的科学家们探测模型,观察其对下一个标记的最佳猜测。在前15层中,最高猜测是一个看似随机的单词。从第16层到第19层之间,模型开始预测下一个单词将是波兰-虽然不正确,但越来越接近。然后在第20层,最高猜测变为华沙-正确答案,并且在最后四层保持不变。
布朗大学的研究人员发现,第20个前馈层通过添加一个将国家向量映射到它们相应的首都的向量,将波兰转换为华沙。将相同的向量添加到中国会产生北京。
同一模型中的前馈层使用向量运算将小写单词转换为大写单词,并将现在时单词转换为它们的过去时等效词。
The attention and feed-forward layers have different jobs注意力层和前馈层有不同的任务。
到目前为止,我们已经看了两个GPT-2单词预测的真实案例:注意力头帮助预测John给Mary一杯饮料,而前馈层则帮助预测华沙是波兰的首都。
在第一个案例中,Mary来自用户提供的提示。但在第二个案例中,华沙并不在提示中。相反,GPT-2必须“记住”华沙是波兰的首都-这是它从训练数据中学到的信息。
当布朗大学的研究人员禁用了将波兰转换为华沙的前馈层时,模型不再预测华沙是下一个单词。但有趣的是,如果他们在提示的开头添加句子“波兰的首都是华沙”,那么GPT-2又能够再次回答这个问题。这可能是因为GPT-2使用注意力头从提示中复制了华沙这个名字。
这种分工更普遍地适用:注意力头从提示中的先前单词中检索信息,而前馈层使语言模型能够“记住”不在提示中的信息。
实际上,可以将前馈层视为模型从训练数据中学到的信息的数据库。早期的前馈层更有可能编码与特定单词相关的简单事实,例如“Trump经常在Donald之后出现”。而后期的层则编码了更复杂的关系,比如“添加这个向量以将一个国家转换为它的首都”。
How language models are trained语言模型是如何训练的
许多早期的机器学习算法需要人工标记训练示例。例如,训练数据可能是带有人工标签("狗"或"猫")的狗或猫的照片。人们需要标记数据的需求使得创建足够大的数据集来训练强大的模型变得困难且昂贵。
语言模型的一个关键创新是它们不需要明确标记的数据。相反,它们通过尝试预测普通文本中的下一个单词来进行学习。几乎任何书面材料,从维基百科页面到新闻文章再到计算机代码,都适用于训练这些模型。
例如,一个语言模型可能会给出输入 "我喜欢在咖啡里加奶油和",并预测下一个单词是 "糖"。一个新初始化的语言模型在这方面会非常糟糕,因为它的每个权重参数(在GPT-3的最强版本中有1750亿个)最开始都是一个基本上随机的数。
但随着模型看到更多的例子-数千亿个单词,这些权重逐渐调整以做出更好的预测。
这里有一个类比来说明这是如何工作的。假设你要洗澡,你希望水温刚刚好:不太热,也不太冷。你从未使用过这个水龙头,所以你将旋钮指向一个随机的方向,然后感受水的温度。如果水太热,你就转动它一边;如果水太冷,你就转动它另一边。你越接近合适的温度,你做的调整就越小。
现在让我们对这个类比进行一些修改。首先,想象一下有50257个水龙头,而不只是一个。每个水龙头对应一个不同的单词,比如"the"、"cat"或"bank"。你的目标是只有下一个单词序列对应的水龙头才会冒出水来。
其次,水龙头后面有一堆相互连接的管道迷宫,这些管道上也有许多阀门。因此,如果水从错误的水龙头流出,你不能只调整水龙头上的旋钮。你需要派遣一支智能松鼠的军队追踪每根管道并沿途调整找到的每个阀门。
这变得复杂,因为同一根管道通常会连接到多个水龙头。因此,需要仔细思考哪些阀门应该拧紧,哪些应该松开,以及程度如何。
显然,如果你过于字面地理解这个例子,它很快就会变得荒谬。建造一个拥有1750亿个阀门的管道网络既不现实也没有实际用途。但幸运的是,由于摩尔定律的存在,计算机可以并且确实可以在这种规模上运作。
到目前为止,在本文中讨论的LLM的所有部分-前馈层中的神经元以及在单词之间移动上下文信息的注意力头-都被实现为一系列简单的数学函数(主要是矩阵乘法),其行为由可调节的权重参数确定。正如我故事中的松鼠们通过松紧阀门来控制水流一样,训练算法通过增加或减少语言模型的权重参数来控制信息在神经网络中的流动。
训练过程分为两个步骤。首先是“前向传递”,打开水源并检查水是否从正确的水龙头流出。然后关闭水源,进行“反向传递”,松紧阀门的松鼠们沿着每根管道竞速。在数字神经网络中,松鼠们的角色由一种称为反向传播的算法扮演,该算法通过“向后行走”穿过网络,使用微积分来估计每个权重参数的变化量。
完成这个过程-对一个示例进行前向传递,然后进行反向传递以改善网络在该示例上的性能-需要数千亿次的数学运算。而训练一个像GPT-3这样大的模型需要重复这个过程数十亿次-每个训练数据的单词一次。OpenAI估计,训练GPT-3需要进行超过3000亿万亿次浮点计算-这对于几十块高端计算机芯片来说需要数月的工作时间。
The surprising performance of GPT-3GPT-3的惊人表现
您可能会对训练过程的表现感到惊讶,ChatGPT可以执行各种复杂的任务,如撰写论文、进行类比推理,甚至编写计算机代码。那么为什么这样一个简单的学习机制能够产生如此强大的模型呢?
一个原因是规模。难以言喻的是,像GPT-3这样的模型所见到的例子数量之多。GPT-3是在大约5000亿个单词的语料库上进行训练的。相比之下,一个典型的人类孩子在10岁之前大约接触到1亿个单词。
在过去的五年里,OpenAI逐渐增加了其语言模型的规模。在一篇广为阅读的2020年论文中,OpenAI报告称其语言模型的准确性“与模型规模、数据集规模和用于训练的计算量呈幂律关系,某些趋势跨越了七个数量级以上”。
随着模型越来越大,它们在涉及语言的任务上表现得越好。但前提是他们需要以类似的比例增加训练数据量。而要在更多的数据上训练更大的模型,就需要更多的计算能力。
OpenAI的第一个语言模型GPT-1于2018年发布。它使用了768维的词向量,有12层,总共117万个参数。几个月后,OpenAI发布了GPT-2。最大版本的GPT-2具有1600维的词向量,48层,总共有15亿个参数。
2020年,OpenAI发布了GPT-3,它具有12288维的词向量和96层,总共有1750亿个参数。
最后,今年OpenAI发布了GPT-4。该公司尚未公布任何架构细节,但广泛认为GPT-4比GPT-3要大得多。
每个模型不仅学到了比其较小的前身更多的事实,而且在需要某种形式的抽象推理的任务上表现更好:
例如,考虑以下故事:
这是一个装满爆米花的袋子。袋子里没有巧克力。然而,袋子上的标签却写着“巧克力”而不是“爆米花”。Sam找到了这个袋子。她以前从未见过这个袋子。她无法看到袋子里面的东西。她读了标签。你可能可以猜到Sam相信袋子里有巧克力,当她发现里面是爆米花时会感到惊讶。心理学家将这种关于他人心理状态的推理能力称为"心智理论"。大多数人从小学阶段就具备这种能力。专家们对于是否有非人类动物(如黑猩猩)也具备心智理论存在争议,但普遍认为这对于人类的社会认知非常重要。
今年早些时候,斯坦福大学的心理学家Michal Kosinski发表了一项研究,研究了大型语言模型解决心智理论任务的能力。他给各种语言模型提供了像我们上面引用的那样的段落,然后要求它们完成一个类似于"她相信袋子里装满了"的句子。正确答案是"巧克力",但一个简单的语言模型可能会说"爆米花"或其他东西。
GPT-1和GPT-2在这个测试中失败了。但在2020年发布的第一个版本的GPT-3几乎有40%的准确率,Kosinski将其与三岁儿童的表现水平相比较。去年11月发布的最新版本的GPT-3将准确率提高到了约90%的水平,与七岁儿童相当。而GPT-4则大约有95%的准确率来回答心智理论问题。
"鉴于没有迹象表明类似心智理论的能力是有意地被设计到这些模型中的,也没有研究证明科学家知道如何实现这一点,类似心智理论的能力很可能是随着模型语言能力的增强而自发地、自主地出现的副产品," Kosinski写道。
值得注意的是,并非所有研究人员都认为这些结果表明了心智理论的证据:例如,对错误信念任务的细微改变导致GPT-3的表现大幅下降;而GPT-3在其他衡量心智理论的任务中表现出更多的变异性。正如我们中的一位(Sean)所写,成功的表现可能归因于任务中的混淆效应,这种效应类似于“聪明的汉斯”效应,只是在语言模型而不是马匹中出现。
尽管如此,GPT-3在几个旨在衡量心智理论的任务上表现出近乎人类水平的能力,在几年前还是难以想象的,这与更大的模型通常在需要高级推理的任务上表现更好的观点是一致的。
这只是语言模型表现出自发发展高级推理能力的众多例子之一。今年四月,微软的研究人员发表了一篇论文,认为GPT-4展示了人工通用智能的早期迷人迹象,即以一种复杂、类似于人类的方式进行思考的能力。
例如,一位研究人员要求GPT-4使用一种名为TiKZ的晦涩的图形编程语言绘制一只独角兽。GPT-4回答了几行代码,然后研究人员将这些代码输入到TiKZ软件中。得到的图像虽然粗糙,但清楚地显示出GPT-4对独角兽的外观有一定的理解。
研究人员认为GPT-4可能以某种方式从其训练数据中记住了绘制独角兽的代码,所以他们给它一个后续挑战:他们修改了独角兽的代码,将犄角移除,并移动了其他一些身体部位。然后他们要求GPT-4将犄角放回去。GPT-4的回答是将犄角放在了正确的位置上:
尽管作者测试的GPT-4版本的训练数据完全是基于文本的,没有包含任何图像,但它仍然能够完成这个任务。换句话说,在训练集中没有独角兽的图像。然而,GPT-4显然在大量的书面文本训练后学会了推理关于独角兽身体形状的知识。
目前,我们对于大型语言模型如何实现这样的成就还没有真正的洞察力。有人认为,像这样的例子表明模型开始真正理解训练集中单词的含义。而其他人则坚持认为语言模型只是“随机鹦鹉”,仅仅是重复越来越复杂的词序列,而并非真正理解它们。
这场辩论指向了一种深刻的哲学紧张关系,可能无法解决。尽管如此,我们认为专注于GPT-3等模型的实证表现是很重要的。如果一个语言模型能够在特定类型的问题上始终给出正确答案,并且研究人员确信他们已经控制了混淆因素(例如,在训练过程中确保语言模型没有接触过这些问题),那么这无论它是否以与人类完全相同的方式理解语言,都是一个有趣且重要的结果。
训练模型使用下一个令牌预测的原因之一可能是语言本身是可预测的。语言中的规律通常(虽然不总是)与物理世界中的规律相关。因此,当语言模型学习单词之间的关系时,它通常也在隐含地学习世界中的关系。
此外,预测可能是生物智能和人工智能的基础。在像安迪·克拉克(Andy Clark)这样的哲学家看来,人类大脑可以被看作是一个“预测机器”,其主要任务是对我们的环境进行预测,以便成功地在环境中导航。直觉上,进行良好的预测需要良好的表示方式,准确的地图比不准确的地图更有可能使我们成功导航。世界是庞大而复杂的,进行预测有助于生物体高效地适应和适应这种复杂性。
传统上,建立语言模型的一个重要挑战是找出最有用的表示不同词语的方式,特别是因为许多词语的含义严重依赖于上下文。下一个词语预测方法使研究人员能够通过将其转化为实证问题而绕过这个棘手的理论难题。事实证明,如果我们提供足够的数据和计算能力,语言模型通过找出最佳预测下一个词语的方法,最终学到了很多关于人类语言如何工作的知识。不足之处在于,我们最终得到了一些内部工作机制我们并不完全理解的系统。
Tim Lee是Ars的员工,任职于2017年至2021年。他最近推出了一份名为Understanding AI的新闻简报,探讨了人工智能的工作原理以及它如何改变我们的世界。您可以在这里订阅他的简报。
Sean Trott是加州大学圣地亚哥分校的助理教授,他在人类和大型语言模型的语言理解方面进行研究。他在他的简报The Counterfactual中写到这些话题以及其他话题。
从技术上讲,语言模型(LLMs)是在被称为标记的单词片段Token上运行的,但为了保持文章长度可控,我们将忽略这个实现细节。从技术上讲,ChatGPT的原始版本基于GPT-3.5,这是GPT-3的后继版本,经过了一种称为强化学习与人类反馈(RLHF)的过程。OpenAI尚未公布此模型的所有架构细节,因此在本文中我们将重点关注GPT-3,这是OpenAI详细描述的最新版本。前馈网络也被称为多层感知器。自20世纪60年代以来,计算机科学家一直在研究这种类型的神经网络。从技术上讲,神经元计算其输入的加权总和后,将结果传递给激活函数。我们将忽略这个实现细节,但如果您想要全面了解神经元的工作原理,可以阅读Tim在2018年撰写的解释器。如果你想了解更多关于反向传播的知识,可以查阅Tim在2018年撰写的关于神经网络工作原理的解释器。在实践中,训练通常以批处理的方式进行,以提高计算效率。因此,软件可能会在进行反向传播之前对32,000个标记进行前向传递。参考资料
[1]https://www.understandingai.org/p/large-language-models-explained-with
[2]https://www.youtube.com/watch?v=dIyQl99oxlg&t=1205s