关于人工智能:一文读懂大语言模型

46次阅读

共计 16336 个字符,预计需要花费 41 分钟才能阅读完成。

以 ChatGPT 为代表的大语言模型被很多人认为是新一轮科技反动的终点,本文旨在通过概念性介绍,让普通人可能尽可能了解人工智能以及大语言模型的基本概念,从而理解这些技术能做以及不能做什么。原文: A Very Gentle Introduction to Large Language Models without the Hype

0. 简介

本文旨在让没有计算机科学背景的人对 ChatGPT 和相似的人工智能零碎 (GPT-3、GPT-4、Bing Chat、Bard 等) 的工作原理有一些理解。ChatGPT 是一种基于 大语言模型(Large Language Model) 的对话式 AI 聊天机器人。这些词汇以后还比拟生疏,但咱们将逐渐拆解,探讨它们背地的外围概念。这篇文章不须要任何技术或数学背景,咱们通过大量比喻来阐明这些概念,探讨外围概念的工作形式,以及 ChatGPT 这样的大语言模型能够或不能够做什么。

这就是本文要做的,在没有任何术语的状况下缓缓解说与大语言模型和 ChatGPT 相干的术语,对于必要术语,我将用常见词汇来拆解解释。咱们从 ” 什么是人工智能 ” 开始,逐渐深刻。我会尽可能多的应用反复呈现的比喻,从咱们应该冀望 AI 能做什么或不能做什么来议论这些技术的含意。

登程!

1. 什么是人工智能(Artificial Intelligence)?

咱们先从一些可能常常听到的根本术语开始。什么是 人工智能(artificial intelligence)

  • 人工智能 : 如果一个实体的行为和人类相似,这个实体可能会被称之为智能。

“ 智能 ” 的定义并没有达成统一,因而用 ” 智能 ” 这个词来定义人工智能有点问题,不过我感觉这依然相当不错。基本上能够认为,如果看一些人工的货色,做一些吸引人的、有用的、让人惊叹的事件,就能够称之为智能。例如,咱们常常将 ”AI” 一词归因于电脑游戏中由电脑管制的角色,这些机器人大多是简略的 if-then-else 代码(例如: 例如,” 如果玩家在射程内,那么射击,而后挪动到……”)。但如果工作会让咱们放弃投入和兴奋,而不是做那些显著的傻事,咱们可能会认为这些工作更简单。

咱们一旦理解了某些货色是如何工作的,可能并不会留下太粗浅的印象,而且会冀望在幕后看到更简单的货色,这齐全取决于你对幕后产生事件理解多少。

重点是,人工智能不是魔法。因为不是魔法,所以能够解释。

让咱们开始吧。

2. 什么是机器学习(Machine Learning)?

你常常听到的另一个与人工智能相干的术语是 机器学习(machine learning)

  • 机器学习: 一种通过获取数据,造成模型,而后执行模型来创立行为的办法。

有时候,手动创立一堆 if-then-else 语句来捕获简单的景象 (比方语言) 十分艰难。在这种状况下,咱们试图找到一堆数据,并用能够在数据中找到的模式来建模的算法。

但什么是模型呢?模型是对一些简单景象的简化。例如,模型汽车是一辆真正汽车的更小、更简略版本,它有许多属性,但并不意味着齐全取代原来的汽车。一辆模型车可能看起来很实在,有时候很有用,但不能开它去购物。

就像咱们能造出更小更简略的汽车一样,咱们也能造出更小更简略的人类语言。咱们用术语 ”大语言模型(large language models)“,因为思考到它们须要多少内存,这些模型十分大。生产中最大的模型,如 ChatGPT、GPT- 3 和 GPT-4,大到须要在数据中心服务器上运行大型超级计算机来创立和运行。

3. 什么是神经网络(Neural Network)?

有许多从数据中学习模型的办法,神经网络就是其中之一。该技术大抵模拟人类大脑通过神经元相互连接的脑细胞网络而组成,这些神经元来回传递电信号,以某种形式使人类可能实现各种工作。20 世纪 40 年代提出了神经网络的基本概念,但直到 20 世纪 80 年代才创造了训练神经网络的基本概念。神经网络效率十分低下,直到 2017 年左右,因为计算机硬件的倒退,才让大规模应用神经网络成为可能。

不过,绝对于大脑,我更喜爱用电路来比喻神经网络。即便你不是电气工程师,也应该晓得电是通过电线流动的,而有种叫做电阻的货色,能够妨碍电流通过电路的某些局部。

假如你想做一辆能在高速公路上行驶的主动驾驶汽车,汽车的前部、后部和侧面都装备了间隔传感器,当有什么货色十分靠近时,传感器报告数值为 1.0,而当左近没有任何货色时,报告数值为 0.0。

你还调整了汽车的管制,使自动装置能够转动方向盘、踩刹车、踩油门。当加速器接管到值 1.0 时,示意用最大的加速度,0.0 示意不减速。同样,发送给制动安装的值 1.0 示意猛踩刹车,0.0 示意不刹车。发送给转向安装的值为 -1.0 到 +1.0,负值示意向左转向,正值示意向右转向,0.0 示意放弃直线。

你还得记录驾驶数据。以后方路线畅通时,就减速。后面有车时,要加速。当一辆车从右边靠得太近时,就向右转,扭转车道(除非左边也有一辆车)。这是一个简单的过程,波及基于不同传感器信息的不同动作组合(向左转向,向右转向,减速或加速,刹车)。

当初要把传感器和自动装置连接起来。该怎么做?目前还不分明。所以你把每个传感器和每个自动装置驱动器连接起来。

就这样开车上路的话会产生什么?电流从所有传感器流向所有执行器,汽车同时向左、向右转向、减速和刹车,一团糟。

这可不行。所以我想在电路的不同局部放上电阻,这样电流就只能在某些传感器和某些执行器之间流动。例如,我心愿电流只从后方间隔传感器流向刹车,而不是流向方向盘。此外,我还放了一些叫做门的货色,能够阻止电流流动,直到电力积攒到足够翻转开关(只有以后方间隔传感器和前方间隔传感器报告的数字比拟高时才容许电流流动),或者只有在输出电流强度低时才流动(以后方间隔传感器报告数值较低时向加速器发送更多电流)。

但把这些电阻和门放在哪里呢?不晓得。一开始我把它们随便放在各个中央,而后再试一次。兴许这次车开得更好了,它在数据显示应该刹车的时候刹车,应该转向的时候转向,等等。但并不是每件事都做对了,有些事件做得更糟(数据显示须要刹车的时候它却减速了),所以我始终随机尝试电阻和门的不同组合。最终,我偶尔发现一种成果足够好的组合,胜利了。兴许看起来像这样:

(咱们在事实中不能减少或缩小门,它们总是存在的,但能够批改门,使它们以更少或更多的电流激活。纯正的机器学习主义者可能会对这种形容感到恶心。不过从技术上说,这是通过调整门的 偏置(bias) 来实现的,通常不会在图表中显示,但就电路比喻而言,能够将其视为直接插入电源的门的导线,而后能够像其余导线一样进行批改。)

让咱们试驾一下吧!

随机尝试是种很蹩脚的形式,有一种被称为 反向流传(back propagation) 的算法在猜想如何扭转电路的配置方面相当杰出。算法细节并不重要,只须要晓得算法会对电路进行渺小调整,让电路的行为更靠近数据的倡议,通过数百万次调整,最终使电路与数据统一。

咱们把电阻和门称为参数,但实际上参数无所不在,反向流传算法会申明每个电阻的强弱,因而一旦晓得了电路的布局和参数,就能够复制到其余汽车上。

4. 什么是深度学习(Deep Learning)?

深度学习能够让咱们在电路中退出除了电阻和门之外的其余货色。例如,能够在电路中进行数学计算,在输入电流之前进行相加或相乘。深度学习依然应用一样根本增量技术猜想参数。

5. 什么是语言模型(Language Model)?

在汽车的例子里,咱们试图让神经网络的行为与数据统一,从而发明出一种可能操纵汽车机械安装的电路,模仿司机的行为。咱们能够用同样的形式看待语言,看看人类写的文本,并尝试电路是否能产生与人类产生的单词序列十分类似的单词序列。当初,当传感器看到单词时就会启动,输入的也是单词。

咱们要做什么?尝试创立一个电路,在给定一堆输出单词的状况下,猜想输入单词。例如:

“Once upon a ___”

看上去空格里填 ”time” 比 ”armadillo” 更适合。

咱们偏向于从概率角度来探讨语言模型,上述例子的数学模式为:

如果不相熟这个符号,别放心,这只是一个数学术语,意思是 ”time” 这个词在给定 (| 符号的意思示意 给定 ) 一堆单词 ”once”、”upon” 和 ”a” 条件下呈现的概率(P)。咱们冀望好的语言模型输入 ”time” 这个词的概率比 ”armadillo” 这个词的概率高。

能够将其概括为:

意思是计算序列中第 n 个单词在给定在它之前所有单词 (从地位 1 到 n - 1 的单词) 的条件下呈现的概率。

不过当初退一步,想想老式打字机,就是那种有撞针的打字机。

除了每个字母都有不同的撞针,咱们给每个单词都装上一个撞针,如果英语有 5 万个单词,那么这会是一台微小的打字机!

构想一个与汽车网络不同但相似的网络,电路顶部有 5 万个输入连贯到撞针上,每个单词一个。相应的,有 5 万个传感器,每个传感器检测不同输出单词。最终抉择一个能失去最高电流信号的撞针,对应的单词就会呈现在空白纸上。

当初的状况是,如果想做一个简略的电路,输出一个单词并产生一个单词,就必须做一个有 5 万个传感器 (每个单词一个) 和 5 万个输入 (每个撞针一个) 的电路。只需将传感器连贯到撞针上,总共 50000 × 50000 = 25 亿根电线。

这是个很大的网络!

更糟的是,如果我想以 ”Once upon a _ “ 为例,须要感知三个输出地位都是哪个单词,将会须要 50000 × 3 = 150,000 个传感器,连贯到 5 万个撞针,失去 15 万 × 5 万 = 75 亿个电线。截至 2023 年,大多数大型语言模型能够接管 4000 个单词,最大的能够接管 3.2 万个单词。我要哭了。

须要一些技巧来解决这种状况,咱们将分阶段进行。

5.1 编码器(Encoders)

第一件事是把电路分成两个电路,一个叫 编码器 (encoder),一个叫 解码器(decoder)。因为许多单词的意思大致相同,比方以下短语:

The king sat on the _

The queen sat on the _

The princess sat on the _

The regent sat on the _

对于下面所有空格,一个正当的猜想是 ”throne”(或者 ”toilet”)。也就是说,可能不须要在 ”king” 和 ”throne” 之间、”queen” 和 ”throne” 之间进行辨别,相同,如果有一些近似意味着 ”royalty” 的货色,每次看到 ”king” 或 ”queen”,就能够用这个货色来代替。而后就只须要关怀哪些单词的意思大致相同,而后该怎么做(向 ”throne” 发送大量电流)。

这就是咱们要做的。设置一个电路,有 5 万个单词的传感器,并映射到一些较小的输入汇合(比方 256 个而不是 5 万个)。同时不是只能触发一个撞针,而是能够一次触发一堆。每种可能的撞针组合都能够代表不同的概念(如 ”royalty” 或 ”armored mammals”)。这 256 个输入使咱们可能示意 $2^{256} = 1.15 × 10^{78}$ 个概念,而在事实中甚至更多。就像在汽车的例子中,能够踩下局部刹车,这 256 个输入的每一个都处于 1.0 和 0.0 之间。兴许更贴切的比喻是 256 只撞针都向下击打,但每只力度不同。

好吧,以前一个单词须要 5 万个传感器中的某一个来激活,当初咱们把一个激活的传感器和 49999 个敞开的传感器稀释成 256 个数字。所以 ”king” 可能是 [0.1, 0.0, 0.9, …, 0.4],”queen” 可能是[0.1, 0.1, 0.9, …, 0.4],简直一样。这些数字列表被称为encodings(因为历史起因也称为 暗藏状态 hidden state,但我不想解释这个,所以咱们将保持应用 encoding)。把 5 万个传感器压缩成 256 个输入的电路被称为encoder,看上去是这样的:

5.2 解码器(Decoders)

但编码器不会通知咱们下一个单词应该是哪个,所以咱们将编码器与解码器网络配对。解码器是另一个电路,采纳 256 个数字形成编码,并激活原始的 5 万个撞针,每个单词一个,而后抉择输入电量最高的单词,看起来是这样的:

5.3 编码器和解码器的组合

编码器和解码器一起工作,造成一个大神经网络:

顺便说一下,通过编码实现单个单词输出单个单词输入只须要(50000 × 256) × 2 = 2560 万个参数,看起来好多了。

这个例子是一个单词输出并产生一个单词输入,所以如果想要读取 n 个单词,将有 50000 × n 个输出,编码后将有 256 × n 个输出。

为什么会这样?通过将 5 万个单词都压缩到一个小的数字汇合中,咱们迫使网络做出斗争,并将可能触发雷同输入单词的输出单词分组在一起。这很像文件压缩,压缩文本文档时,咱们会失去一个较小的不可读的文档。但能够解压缩文档并复原原始可读文本。因为 zip 程序用符号替换了某些单词模式,解压缩时晓得要将哪些文本替换符号。编码器和解码器电路学习了某种电阻和门的配置,能够用来压缩和解压缩单词。

5.4 自监督(Self-Supervision)

怎么能力晓得每个单词的最佳编码方式?换句话说,怎么晓得 ”king” 的编码应该与 ”queen” 的编码类似,而不是 ”armadillo”?

作为思维试验,思考一个编码器 - 解码器网络,接管一个单词 (5 万个传感器) 并产生完全相同的单词作为输入。这是件蠢事,但对接下来的事件很有启发意义。

输出 ”king”,一个传感器通过编码器发送电信号,并在两头局部关上编码中的 256 个值。如果编码正确,那么解码器将向同一个单词 ”king” 发送最高的电信号。容易对不对?先别下结论。很有可能会看到带有 ”armadillo” 字样的撞针具备最高的电能,假如 ”king” 的撞针失去 0.051 的电信号,”armadillo” 的撞针失去 0.23 的电信号。而实际上咱们基本不在乎 ”armadillo” 的值是多少,能够只看 ”king” 的输入能量,就晓得它不是 1.0。1.0 和 0.051 之间的差别是误差 (也称为 损耗),能够用反向流传对解码器和编码器进行一些更改,以便下次看到单词 ”king” 时的编码略微不同。

咱们对所有单词都这样做,而编码器将不得不斗争,因为 256 比 50000 小得多。也就是说,有些词必须应用雷同的能量组合。因而抉择时,会心愿 ”king” 和 ”queen” 的编码简直雷同,而 ”armadillo” 的编码则十分不同,这将使解码器通过查看 256 个编码值来更好的猜想单词。如果解码器看到 256 个值的特定组合,并猜想 ”king” 为 0.43,”queen” 为 0.42,只有 ”king” 和 ”queen” 失去最高的电信号,并且其余 49998 个撞针都失去较小的数字,就能够承受。另一种说法是,咱们可能更容易接受网络混同 king 和 queen,而不是混同 king 和 armadillo。

咱们说神经网络是 自我监督(self-supervised) 的,因为与汽车的例子不同,不须要独自收集数据来测试输入,而只须要比拟输入和输出(不须要为输出和输入独自提供数据)。

5.5 掩码语言模型(Masked Language Models)

下面的思维试验看起来很傻,然而所谓的 掩码语言模型 的基石,其思维是接管一个单词序列并生成一个单词序列,但覆盖输出和输入中的一个单词。

The [MASK] sat on the throne.

网络会猜想所有单词,咱们只关怀网络对掩蔽词的猜想。也就是说,对于输入的每个单词,有 5 万个撞针,咱们来看看这 5 万个掩蔽词的撞针。

能够挪动掩码,让网络在不同的中央猜想不同的单词。

一种非凡类型的掩码语言模型只在开端有掩码,这被称为生成模型,因为猜想的掩码总是序列中的下一个单词,相当于生成下一个单词,看上去是这样的:

The [MASK]

The queen [MASK]

The queen sat [MASK]

The queen sat on [MASK]

The queen sat on the [MASK]

咱们也称其为 自回归 (auto-regressive) 模型。 回归 (regressive) 这个词听起来不太好,但只是意味着试图了解事物之间的关系,比方曾经输出的单词和应该输入的单词。Auto 的意思是 ” 自我 ”,自回归模型是自我预测的,预测下一个单词,而后这个单词又被用来预测下一个单词,以此类推。其中有些乏味的含意,稍后会讲到。

6. 什么是转移模型(Transformer)?

咱们听过很多对于 GPT-3、GPT- 4 和 ChatGPT 的货色。GPT 是 OpenAI 公司开发的一种大语言模型的特定品牌。GPT 代表 生成式预训练转移模型(Generative Pre-trained Transformer)。咱们来剖析一下:

  • 生成式(Generative)。该模型可能生成所提供输出的连续,也就是说,给定一些文本,模型试图猜想接下来呈现的单词。
  • 预训练(Pre-trained)。该模型是在一个十分大的通用文本语料库上进行训练的,只需训练一次,就可用于许多不同场景,而不须要从头开始训练。

该模型是在一个十分大的通用文本语料库上进行训练的,涵盖了大量能够想到的主题。这或多或少意味着 ” 从互联网上抓取 ”,而不是从一些专门的文本库中获取。通过对个别文本进行训练,语言模型绝对基于十分特定类型的文本 (如来自医疗文档的文本) 上训练的语言模型更有能力响应宽泛的输出。在通用语料库上训练的语言模型实践上能够正当响应互联网上文档中可能呈现的任何内容,但可能对医学文本响应个别。只在医疗文档上训练的语言模型可能对与医疗上下文相干的输出响应得很好,但在响应闲聊或食谱等其余输出时就很差了。

要么模型在很多事件上都足够好,以至于人们不须要训练本人的模型,要么能够做一些所谓的 微调 (fine-tuning),即采纳事后训练好的模型并对其进行一些更新,使其在特定工作(如医疗) 上能更好的工作。

接下来是转移模型…

  • 转移模型(Transformer)。一种非凡类型的自监督编码器 - 解码器深度学习模型,具备一些十分乏味的属性,使其善于语言建模。

Transformer是一种非凡类型的深度学习模型,以一种非凡形式转换编码,使其更容易猜出空白的单词,最早是由 Vaswani 等人在 2017 年发表的一篇名为 Attention is All You Need 的论文中介绍的。Transformer 的外围是经典的编码器 - 解码器网络,编码器执行十分规范的编码过程,你会诧异于它的一般,但它还减少了另一种叫做 自关注(self-attention) 的货色。

6.1 自关注(Self-Attention)

这是自关注的概念: 序列中的某些单词与序列中的其余单词相干。想想这个句子:”The alien landed on earth because it needed to hide on a planet.” 如果咱们覆盖第二个单词 ”alien”,并让神经网络猜想,它会通过 ”landing” 和 ”earth” 这样的单词更容易的猜出来。同样的,如果咱们把 ”it” 遮住,让神经网络猜这个词,”alien” 这个词的呈现可能会让神经网络更偏向于抉择 ”it”,而不是 ”he” 或 ”she”。

咱们晓得,一个序列中的单词会与其余单词相关联,因为它们之间有某种关系,这种关系并不一定为人所知。这种关系能够是解析代词,能够是动词和主语的关系,也能够是与同一个概念相干的两个单词(“earth” 和 ”planet”)。不论是什么,晓得单词之间存在某种分割对预测很有用。

下一节将探讨自关注的数学问题,要点是 Transformer 学习输出序列中哪些单词是相干的,而后为输出序列中的每个地位创立一个新的编码,该编码是所有相干单词的合集。能够把它设想成学习发明一个新词,这个新词是 ”alien”、”landing” 和 ”earth” 的混合体(aliandearth?)。每个单词都被编码为一个数字列表,如果 alien = [0.1, 0.2, 0.3, …, 0.4],landing = [0.5, 0.6, 0.7, …, 0.8],earth = [0.9, 1.0, 1.1, …, 1.2],那么第二个单词地位可能被编码为所有这些编码的总和[1.5, 1.8, 2.1, …, 2.4],它自身不对应任何单词,但却捕捉所有单词的片段。这样,当解码器最终看到这个单词在第二个地位的新编码时,就有了很多对于这个单词在序列中是如何应用的信息,从而更好的猜想掩码。(示例只是将编码加在一起,但实际上比这更简单)。

6.2 自关注是如何起作用的?

自关注是对一般编码器 - 解码器网络的重大改良,如果想理解更多无关其工作原理的信息,请持续浏览,否则能够跳过本节。自关注是数学运算 点积(dot product) 的一个博眼球的名字。

自关注分为三个阶段。

(1) 对输出序列的每个单词进行失常编码。将单词编码复制四份,其中一份称为residual,先保存起来。
(2) 在其余三份上运行第二轮编码(对编码的编码)。每一份都经验不同的编码过程,所以进去的后果不同,一个为查问(q),一个为键(k),一个为值(v)。

思考有一大堆信息存储在哈希表 (在 python 中也称为字典) 中,每一行都有 (惟一标识符)和 (存储在该行中的数据)。要从哈希表中检索信息,能够执行查问,如果查问匹配到键,则提取对应的值。

自关注有点像一个 含糊 的哈希表,提供一个查问,但不是查找与键的准确匹配,而是依据查问和键之间的相似性查找近似匹配。如果没有完满匹配,就返回值的一部分。这只有在查问、键和值都是数值的状况下才有意义,相似这样:

这就是咱们要做的。对于输出的每个单词地位,采纳 q 编码和 k 编码并计算类似度,计算形式是点积,也叫余弦类似度。不过这不重要,要害是每个单词都是 256 个数字的列表 (基于之前示例),能够计算数字列表的相似性并记录在矩阵中。咱们称这个矩阵为 自关注得分(self-attention scores)。如果有三个单词的输出序列,注意力得分可能是这样:

网络将第一个单词视为查问,并与第二个关键字进行匹配 (或者说第一个单词 ” 关注 ” 第二个单词)。如果第二个单词是查问,将与第三个键匹配。如果第三个单词是查问,将与第一个键匹配。在事实中永远不会有这样的 1 和 0,而是会在 0 和 1 之间进行局部匹配,并且每个查问(行) 会对多个键 (列) 进行局部匹配。

持续检索的比喻,把这个矩阵乘以 v 编码,乏味的事件产生了。假如 v 编码像这样:

也就是说,第一个单词被编码为数字列表 0.10…0.19,第二个单词被编码为数字列表 0.20…0.29,第三个单词被编码为数字列表 0.30…0.39。这些数字是为了阐明的目标而编出来的,实际上不会这么参差。

第一个查问匹配第二个键,因而检索第二个编码单词。第二个查问与第三个键匹配,因而检索第三个编码单词。第三个查问匹配第一个键,因而检索第一个编码单词。实际上做的是行替换!

实际中,分数不会是完满的 1 和 0,而是将是每种编码混合在一起的(例如,单词 1 的 97% 加上 1% 或单词 3 加上单词 2 的 2%),但这阐明自关注是一种混合和替换。在这个极其版本中,第一个单词被替换为第二个单词,依此类推。所以兴许 ”earth” 这个词被换成了 ”planet” 这个词。

怎么晓得正确编码了 q、k 和 v?如果整个网络猜想掩码最佳单词的能力进步了,那么就正确编码了 q、k 和 v。如果没有,那就改一下参数,用略微不同的形式编码。

(3) 第三件事是把所有数学运算的后果加到 residual 上。还记得咱们搁置的原始编码的第一个正本吗?没错,当初要把混合替换的版本加进去。当初,”earth” 不仅仅是 ”earth” 的编码,而是某种虚构的词,是 ”earth” 和 ”planet” 的混搭……pearth?ealanet?都不是。无论如何,这是将被发送到解码器的最终转换编码。每个地位都有一个假单词,它实际上编码了两个或更多单词,这更有利于对基于地位的单个单词进行预测。

而后再这样做几次(多层)。

这里省略了很多对于编码器的最终编码如何进入解码器的细节 (另一轮关注,称为 源关注 source-attention,其中编码器每个地位的编码被用作 q 和 k,以利用于另一个不同版本的 v),但当初你只须要晓得个大略。最初,解码器接管编码器的编码,将能量发送给撞针,挑选出能量最强的单词。

7. 为什么大语言模型如此弱小?

这所有意味着什么?包含 ChatGPT、GPT- 4 等在内的大语言模型只做一件事: 接管一堆单词,并尝试猜想下一个单词应该是什么。如果这是 ” 推理 ” 或 ” 思考 ”,那也只是一种十分非凡的模式。

但即便是这种非凡的模式仿佛也十分弱小,因为 ChatGPT 和相似的货色仿佛能够很好的实现很多事件: 写诗、答复无关迷信和技术的问题、总结文档、起草电子邮件,甚至编写代码。为什么会如此无效?

秘诀有两个,第一个曾经探讨过了: Transformer 学习混合单词上下文的形式,从而十分长于猜想下一个单词。其次是如何训练零碎。大语言模型依据从互联网上抓取的大量信息进行训练,包含书籍、博客、新闻网站、维基百科、reddit、社交媒体对话等。在训练过程中,从其中一个起源中输出一段文本,并要求它猜想下一个单词。如果猜错了,就略微调整一下模型,直到猜对为止。想一下 LLM 被训练做什么,其实就是产生能够正当呈现在互联网上的文本。它记不住整个互联网,所以用编码来做出斗争,兴许会有点错,但心愿不要错得太离谱。

重要的是不要低估互联网上文本的多样性。LLM 学习了所有,看了简直所有话题的数十亿次对话。因而,LLM 能够生成看起来像是在与你对话的单词。它曾经看了数十亿首诗歌和歌词,简直能够设想,它能够产生看起来像诗歌的文本。它曾经看了数十亿家庭作业及答案,所以能够对你的家庭作业做出正当的猜想。它看了数以十亿计的标准化考试问题及答案。而往年的 SAT 试题和去年也不会有什么不同。它看过人们议论假期打算,所以能够猜出看起来像假期打算的单词。它曾经看了数十亿代码示例,涵盖各种各样场景。程序员做的很多事件都是将十分典型和容易了解的代码片段组装成更大的代码块,因而 LLM 能够编写这些小而通用的代码片段。它曾经在 stackoverflow.com 上看了数十亿个错误代码的例子和更正,这样它就能针对你的错误代码提出修复倡议。曾经有数十亿人在推特上说,因为摸了热炉子而烧伤了手指,所以 LLM 晓得这些常识。它曾经浏览了大量科学论文,所以能够猜想家喻户晓的迷信事实,即便你还不晓得。它曾经看了数十亿对于如何总结要点的例子,晓得如何使文本更合乎语法,更简洁或更有说服力。

重点是,当你要求 ChatGPT 或其余大语言模型做某些事,并且发现它实现了,很有可能你只是在要求它做一些它曾经见过数十亿个例子的事件。即便你想出了一些十分独特的货色,比方 ” 通知我闪电侠戈登吃了六个墨西哥卷饼后会做什么 ”(我甚至不晓得这是不是独特的),而它曾经看了对于闪电侠戈登的同人小说,看到人们议论吃了太多的墨西哥卷饼,并且能够 (因为自关注) 混合和搭配系统的货色来组合一个听下来正当的回应。

当咱们与大语言模型交互时,第一直觉不应该是 ” 哇,这货色肯定十分聪慧,或者十分有创造力,或者非常容易了解 ”。咱们的第一反馈应该是 ” 我可能曾经要求它做一些它以前见过的货色 ”。不过即便它不是 ” 认真思考 ” 或 ” 做一些非常复杂的推理 ”,依然十分有用。

咱们不须要拟人化的来了解它做了什么来给咱们提供回应。

对于这个主题的最初一点阐明: 因为大语言模型的工作形式和训练形式,它们偏向于提供某种程度上属于两头响应的答案。在询问对于闪电侠戈登的故事后,模型往往会给出平庸的答复,这对我来说仿佛很奇怪。但在一个故事或一首诗的背景下,这些回应能够被认为是许多人 (在互联网上写作) 会想到的。以一个人单独思考的规范来看,这可能相当不错。但你本人写的故事和诗歌可能也很一般(但它们对你来说很特地)。对不起,事实如此。

8. 我应该留神什么?

Transformer 的工作形式和训练形式会产生一些奥妙的影响,以下是一些技术细节。

  1. 大语言模型是在互联网上训练的,这意味着也承受了人类阴暗面的训练。大语言模型可能会被输出种族主义、性别歧视舆论、对各种类型的人的各种羞辱、对别人的刻板假如、阴谋论、政治错误信息等,因而语言模型抉择生成的单词可能会反馈这种语言。
  2. 大语言模型没有 ” 外围信念 ”。他们是在玩填词游戏,试图预测如果同样的句子呈现在互联网上,下一个单词会是什么。因而,能够要求大语言模型写一个反对或拥护同一件事的句子,语言模型将遵循这两种形式。这并不意味着它置信这个或那个,或者扭转信奉,或者一个比另一个更正确。如果训练数据中一个事物的例子比另一个事物多,那么大语言模型将偏向于统一的响应互联网上呈现的更频繁的数据。记住: 该模型力求模拟最常见的反馈。
  3. 大语言模型没有任何对与错的概念。有些事件咱们认为是事实,比方地球是圆的,LLM 也会这么说。但如果换个上下文,它也会说相同的话,因为互联网上的确有对于地球是平的文字。LLM 不能保障提供假相,只是偏向于猜想咱们认为正确的单词,这是最靠近于 LLM” 晓得 ” 假相或对错的形式。
  4. 大语言模型可能会出错。训练数据可能有很多不统一的资料,当咱们问问题时,自关注可能不会关注到咱们想要关注的所有事件。作为填词游戏,它可能会做出谬误的猜想。有时,训练数据看到一个词的次数太多,以至于更喜爱这个词,即便它对输出没有意义。以上导致了一种被称为 ”幻觉(hallucination)“ 的景象,在这种景象中,一个词是猜想进去的,既不是来自输出,也不是 ” 正确的 ”。LLM 偏向于猜想较小的数字,因为较小的数字更常见。LLM 并不善于数学。LLM 更喜爱数字 ”42″,因为人类因为一本特地驰名的书而喜爱这个数字。LLM 更喜爱罕用的名字,所以可能会虚形成作者的名字。
  5. 大语言模型是自回归的。因而,当它们猜到不正确的单词时,这些猜想的单词会被增加到它们本人的输出中,猜想下一个单词。也就是说,谬误会累积。即便只有 1% 的几率出错,自关注也会关注到那个谬误的抉择,并使谬误加倍。即便只犯了一个谬误,之后产生的所有事件也可能与这个谬误无关。而后,语言模型可能会在此基础上产生额定的谬误。Transformer 没有方法 ” 扭转主见 ” 或再试一次或自我纠正, 只能同流合污。
  6. 应该始终验证大语言模型的输入。如果你要求它做一些你本人无奈胜任的事件,那么应该考虑一下是否能够对所犯的谬误采取行动。对于低危险工作(比方写一个短篇故事),这可能没问题。而对于高风险工作(比方决定投资哪些股票),这些谬误可能会导致你做出十分低廉的决定。
  7. 自关注意味着在输出提醒中提供的信息越多,答复就会越业余,因为它会在猜想中混合更多输出的单词。响应的品质与输出提醒的品质成正比,更好的提醒产生更好的后果。尝试几种不同的提醒,看看哪种最适宜。不要假如语言模型 ” 了解 ” 你想要做的事件,并且能在第一次就给出最好的后果。
  8. 你并没有真正与大语言模型 ” 进行对话 ”。大言模型不会 ” 记住 ” 交换中产生的事件。你只是输出并取得输入,LLM 什么都不记得。兴许你感觉初始输出、响应以及对响应的响应看起来像是在记忆,那也只是因为对话日志作为了新的输出。这是一个前端编程技巧,使大语言模型看起来像是在进行对话。因为这个技巧,它可能会围绕主题输入,但不能保障不会与之前的回应相矛盾。此外,能够输出多少单词是有限度的(目前 ChatGPT 容许大概 4000 个单词,而 GPT- 4 容许大概 32000 个单词)。输出能够相当大,所以对话通常会在一段时间内放弃连贯。最终,累积的日志变得越来越大,不得不把一开始的对话删掉,也就是说零碎会 ” 遗记 ” 晚期的内容。
  9. 大语言模型无奈本人解决问题或制订打算,但能够要求他们制订打算并解决问题。这里须要具体解释一下,解决问题 (Problem-solving) 打算 (planning) 是人工智能钻研社区中某些个人的保留术语,用于示意十分具体的货色。具体来说,意味着有一个指标(想在将来实现的事件) 并通过在若干能够靠近指标的备选计划中做出抉择来努力实现指标。大语言模型没有指标,或者说他们只有一个指标,即在给定输出序列的状况下,抉择最有可能呈现在训练数据中的单词,也就是模式匹配。打算通常波及到 前瞻性(look-ahead),人们做打算时,会设想口头后果,并依据指标剖析将来。如果看起来离指标更近了一步,就是一个很好的口头。如果没有,可能会尝试设想另一种行为的后果。理论生存中还有更多货色,但要害是大语言模型没有指标,也没有前瞻性。Transformer 只向后看,自关注只能利用于曾经呈现的输出词。当初,大语言模型能够生成看起来像打算的输入,只是因为在训练数据中看了很多打算,晓得打算是什么样的,也晓得对于某些主题的打算应该呈现什么,因此对打算能够做出很好的猜想。它们做出打算可能会疏忽特定细节,而偏向于最个别的打算。大语言模型当然没有 ” 思考各种抉择 ”,也没有尝试一件事,而后又退回去尝试另一件事。在 Transformer 外部,没有机制能够让它对将来进行这样的思考。因而在要求它给出打算时,肯定要验证其输入。

9. 是什么让 ChatGPT 如此特地?

“ 所以我据说 RLHF 是 ChatGPT 真正聪慧的中央。”

“ChatGPT 应用强化学习,所以它这么聪慧。”

不一而足……

当初人们对 RLHF(基于人类反馈的强化学习,Reinforcement Learning with Human Feedback)感到十分兴奋。业界在训练 ChatGPT(以及其余越来越多的大语言模型)方面做了很多事件,这些并非是全新的技术,然而在 ChatGPT 公布时,这些技术的宽泛引入产生了很好的成果。

ChatGPT 是基于 Transformer 的大语言模型,因其十分善于生成对输出提醒的响应以及回绝答复某些可能被认为是无害或回心转意的问题而博得了名誉。它所做的与下面介绍的没有什么不同,事实上它很一般,但在训练过程中有点不一样。ChatGPT 的训练形式和失常的一样,从互联网上抓取大量信息,提取文本片段,而后让零碎预测下一个单词,这就产生了一个根本模型,曾经是十分弱小的单词预测器 (相当于 GPT-3),但还有两个额定的训练步骤: 指令调优 (Instruction tuning) 基于人类反馈的强化学习(reinforcement learning with human feedback)

9.1. 指令调优(Instruction Tuning)

大语言模型有个特地的问题: 它们只承受输出单词序列并生成后续单词。大多数时候,这正是人们想要的,但并非总是如此。思考以下输出提醒:

“ 写一篇对于亚历山大·汉密尔顿的文章。”

你认为答复应该是什么?可能会想到:” 亚历山大·汉密尔顿于 1757 年出世在尼维斯。他是政治家、律师、陆军上校和美国第一任财政部长……” 但实际上可能失去:

“ 你的文章应该至多有五页,双倍行距,并包含至多两次援用。”

产生了什么?嗯,语言模型可能曾经看到了很多学生作业的例子,这些作业以 ” 写一篇对于……的文章 ” 结尾,包含详细描述长度和格局的单词。当然,当你写 ” 写一篇文章……” 时,你认为是在给语言模型写指令,就如同它是一个可能了解用意的人。语言模型不了解你的用意或者它们本人的用意,它们只将输出与训练数据中看到的模式相匹配。

为了解决这个问题,能够做一些叫做指令调优的事件。想法相当简略,如果你失去了谬误响应,写下正确的响应应该是什么,并将原始输出和新的、通过修改的输入作为训练数据通过神经网络发送。有了足够多的修改输入的例子,零碎将学会扭转其回路,使新的答案成为首选。

不须要做太花哨的事,只有让很多人与大语言模型交互,并要求它做很多事件,并在它行为不正确时纠正,而后收集所有出错的例子和新的、正确的输入,并进行更多的训练。

这使得大语言模型体现得如同可能了解输出提醒的用意,并体现得如同它在遵循指令。除了试着猜下一个单词,它其实什么也没做。但新的训练数据让它可能更好的猜想对输出更匹配的单词。

9.2. 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback)

下一步是从人类反馈中进行强化学习,这里须要一点解释。

强化学习(Reinforcement learning) 是一种 AI 技术,传统上用于机器人钻研和虚构游戏模仿(想想能够玩国际象棋、围棋或星际争霸的 AI 零碎)。强化学习特地善于弄清楚当它失去所谓的处分时该怎么做。处分只是一个数字,表明它做得有多好(做得十分好 +100,做得很差 -100)。在事实世界和游戏中,通常很少会有处分。在游戏中,可能须要玩很久能力得分,甚至只会在游戏的最初一刻得分。在事实世界中,没有足够的人通知你什么时候做得很好,除非你是一条狗。你惟一须要晓得的是,强化学习零碎试图预测它们将取得多少处分,而后抉择最有可能取得更多处分的行为,这与人们用狗粮来训练狗的形式并没有什么不同。

好吧,先不想这些,思考上面的提醒:

“Mark 是什么方面的专家?”

假如语言模型的输入为:

“Mark 在人工智能、图形学和人机交互方面发表了许多著述。”

这只是局部正确,但我没有在图形学方面发表过论文,所以很想给它一个

,或者 - 1 分。但这里只有 ” 图形学 ” 是错的,如果通知零碎整个句子都是错的,语言模型可能会感觉所有这些单词都应该防止应用,但其实很多词并没什么问题。

这就是强化学习的用武之地。强化学习的工作原理是尝试不同抉择,看看哪种抉择能取得最大回报。假如我要求它对原始提醒生成三个不同的响应。

“Mark 在人工智能、图形学和人机交互方面发表了许多著述。”

“Mark 曾从事人工智能、平安 NLP 零碎和人机交互方面的工作。”

“Mark 钻研过人工智能、游戏 AI 和图形学。”

我能够给第一个相应 -1,给第二个 +1,给第三个 -1。就像玩游戏一样,强化学习算法能够回顾并找出导致 - 1 的一个独特因素是 ” 图形学 ” 这个词。当初,零碎能够锁定这个单词,调整神经网络,使其不与特定的输出提醒一起呈现。

而后让一群人与大语言模型交互,这一次零碎会给出三种 (或更多) 可能的答复。咱们能够通过要求大语言模型提供屡次响应并在响应的抉择中引入一点随机性来做到 (还没遗记吧?) 咱们有时可能会抉择排第二或第三的响应,而不是抉择激活可能性的响应。这就提供了不同的文本回复,人们能够抉择最喜爱的回复,第二喜爱的回复,等等。当初有了抉择,有了权重数字,就能够用强化学习来调整神经网络。

实际上,咱们用 ” 好 ”、” 不好 ” 的反馈来训练第二神经网络来预测人们的反馈。如果这个神经网络可能很好的预测人们会喜爱什么,那么就能够用第二神经网络来猜想语言模型的反馈会失去 ” 好 ” 还是 ” 不好 ”,而后用它来训练语言模型。

强化学习将文本生成视为游戏,每个动作都是一个单词。在序列最初,语言模型被告知是得分了还是丢分了。语言模型并没有像前一节中探讨的那样准确的进行预判,然而在某种意义上,它曾经被训练来预测哪些单词会被点赞。大语言模型还是没有明确指标,但有一个 ” 被点赞 ” 的隐含指标(或者也能够说有一个 ” 满足普通人 ” 的隐含指标),并且曾经学会将特定提醒的特定反馈与取得点赞分割起来。这具备许多打算的个性,但没有明确的前瞻性机制,更像是记住了在很多状况下都无效的取得处分的策略。

那么 RLHF 有没有让 ChatGPT 更智能?它使 ChatGPT 更有可能产生咱们心愿看到的响应,因而看起来更智能,它的输入仿佛传播了一种感觉,即可能了解咱们输出的用意,并有本人的回应用意。其实这是一种错觉,因为它依然只是对文字进行编码和解码。但话说回来,这不就是咱们为啥要写这篇文章么😉。

指令调优和 RLHF 还使 ChatGPT 可能抵制某些类型的滥用,例如产生种族主义、性别歧视或政治内容。还是有可能输入这些内容,而且旧版本的 GPT- 3 总是可能被用来输入这些货色。然而作为收费的面向公众的服务,ChatGPT 针对某些类型的滥用所做的工作传递了一种安全感,并且它还抵制将意见作为事实提供,这也打消了对用户的潜在挫伤。

用强化学习来批改预训练的语言模型并不是什么新鲜事,至多能够追溯到 2016 年,并已被用于使大语言模型更平安。大多数基于强化学习的大语言模型调优都用第二模型来提供处分,这也是用 ChatGPT 实现的。ChatGPT 值得注意的是通过强化学习调整零碎的规模,以及大规模的人类反馈收集工作。


你好,我是俞凡,在 Motorola 做过研发,当初在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓重的趣味,平时喜爱浏览、思考,置信继续学习、一生成长,欢送一起交流学习。微信公众号:DeepNoMind

本文由 mdnice 多平台公布

正文完
 0