分享

ChatGPT 的工作原理以及它为何能够产生连贯且多样化的对话3


ChatGPT 的工作原理以及它为何能够产生连贯且多样化的对话2
https://www.aboutyun.com/forum.php?mod=viewthread&tid=35212



内部聊天GPT
好的,我们终于准备好讨论 ChatGPT 的内容了。而且,是的,最终,它是一个巨大的神经网络——目前是所谓的 GPT-3 网络的一个版本,具有 1750 亿个权重。在许多方面,这是一个与我们讨论过的其他网络非常相似的神经网络。但它是一个专门为处理语言而设置的神经网络。它最显着的特征是一种称为“变压器”的神经网络架构。

在我们上面讨论的第一个神经网络中,任何给定层的每个神经元基本上都连接(至少有一些权重)到之前层上的每个神经元。但是,如果一个人正在处理具有特定已知结构的数据,那么这种完全连接的网络(大概)是矫枉过正的。因此,例如,在处理图像的早期阶段,通常使用所谓的 卷积神经网络 (“convnets”),其中神经元有效地布置在类似于图像中的像素的网格上 - 并连接仅适用于网格上附近的神经元。

转换器的想法是对构成一段文本的标记序列做一些至少有点相似的事情。但是,Transformer 不是仅仅在序列中定义一个固定的区域,在该区域上可以有连接,而是引入了“注意力”的概念——以及“关注”序列的某些部分而不是其他部分的想法。也许有一天,开始一个通用的神经网络并通过训练进行所有定制会变得有意义。但至少就目前而言,“模块化”事物在实践中似乎很关键——就像变形金刚所做的那样,可能就像我们的大脑所做的那样。

好的,那么 ChatGPT(或者更确切地说,它所基于的 GPT-3 网络)实际上做了什么?回想一下,它的总体目标是以一种“合理”的方式继续文本,基于它从它所接受的培训中看到的内容(包括从网络上查看数十亿页的文本等)所以在任何给定的时间点,它有一定数量的文本——它的目标是为下一个要添加的标记提出一个合适的选择。

它分三个基本阶段运作。首先,它采用到目前为止对应于文本的标记序列,并找到表示这些标记的嵌入(即数字数组)。然后,它以“标准神经网络方式”对该嵌入进行操作,值“波及”网络中的连续层——以生成新的嵌入(即新的数字数组)。然后它获取该数组的最后一部分,并从中生成一个包含大约 50,000 个值的数组,这些值变成不同可能的下一个标记的概率。(而且,是的,碰巧使用的标记数量与英语中常用单词的数量大致相同,尽管只有大约 3000 个标记是完整的单词,其余的都是片段。)

一个关键点是该管道的每个部分都由神经网络实现,其权重由网络的端到端训练确定。换句话说,除了整体架构之外,实际上没有任何东西是“明确设计的”;一切都只是从训练数据中“学到”的。

然而,架构的设置方式有很多细节——反映了各种经验和神经网络知识。而且——尽管这肯定会成为杂草——我认为讨论其中一些细节很有用,尤其是了解构建像 ChatGPT 这样的东西需要什么。

首先是嵌入模块。这是 GPT-2 的 Wolfram 语言示意图:


1.png

输入是一个 包含n 个 标记的向量  (与上一节中一样,用 1 到大约 50,000 之间的整数表示)。这些标记中的每一个都被(通过 单层神经网络)转换成一个嵌入向量(GPT-2 的长度为 768,ChatGPT 的 GPT-3 的长度为 12,288)。同时,有一个“二级路径”,它采用  标记的(整数)位置序列,并从这些整数创建另一个嵌入向量。最后,将来自标记值和标记位置的嵌入向量相加 ——以生成来自嵌入模块的嵌入向量的最终序列。

为什么只是将令牌值和令牌位置嵌入向量加在一起?我不认为这有什么特别的科学。只是已经尝试了各种不同的东西,而这似乎是可行的。这是神经网络知识的一部分——在某种意义上——只要设置“大致正确”,通常只需进行足够的训练就可以了解细节,而无需真正“理解”工程水平”相当神经网络最终如何配置自己。

这是嵌入模块所做的,对字符串 hello hello hello hello hello hello hello hello hello hello bye bye bye bye bye bye bye bye bye bye bye bye进行操作:


1.png

每个标记的嵌入向量的元素显示在页面下方,在整个页面中,我们首先看到一系列“ hello ”嵌入,然后是一系列“ bye ”嵌入。上面的第二个数组是位置嵌入——其看起来有点随机的结构正是“碰巧学到的”(在本例中为 GPT-2)。

好的,在嵌入模块之后是转换器的“主要事件”:一系列所谓的“注意力块”(GPT-2 为 12 个,ChatGPT 的 GPT-3 为 96 个)。这一切都非常复杂——让人想起典型的大型难以理解的工程系统,或者就此而言,生物系统。但无论如何,这是单个“注意力块”(针对 GPT-2)的示意图:


1.png

在每个这样的注意力块中,都有一组“注意力头”(GPT-2 有 12 个,ChatGPT 的 GPT-3 有 96 个)——每个注意力头都独立地对嵌入向量中的不同值块进行操作。(而且,是的,我们不知道为什么拆分嵌入向量是个好主意的任何特定原因,或者它的不同部分“意味着”什么;这只是那些“被发现有效”的事情之一.)

好的,注意力头是做什么的?基本上,它们是一种在记号序列中“回头看”的方法(即在目前生成的文本中),并以一种有助于查找下一个记号的形式“打包过去”。 在上面的第一部分中, 我们讨论了使用 2-gram 概率根据其直接前身来选择单词。变形金刚中的“注意”机制所做的是允许“注意”甚至更早的单词——因此可能捕捉到动词可以引用在句子中出现在它们之前的许多单词的名词的方式。

在更详细的层面上,注意力头所做的是重新组合与不同标记相关联的嵌入向量中的块,具有一定的权重。因此,例如,第一个注意力块(在 GPT-2 中)中的 12 个注意力头具有以下内容(“look-back-all-the-way-to-the-beginning-of-the-sequence-of- tokens)上面的“ hello,  bye ”字符串的“重组权重”模式:


1.png

经过注意力头处理后,生成的“重新加权嵌入向量”(GPT-2 的长度为 768,ChatGPT 的 GPT-3 的长度为 12,288)通过标准的“全连接”神经网络 层。很难掌握这一层在做什么。但这是它使用的 768×768 权重矩阵的图(此处为 GPT-2):


1.png

采用 64×64 移动平均线,一些(随机游走式)结构开始出现:


1.png

什么决定了这个结构?最终它可能是人类语言特征的某种“神经网络编码”。但截至目前,这些功能可能是什么还不得而知。实际上,我们正在“打开 ChatGPT(或至少是 GPT-2)的大脑”并发现,是的,它很复杂,而且我们不理解它——尽管最终它产生了可识别的人类语言.

好的,所以在经过一个注意力块之后,我们得到了一个新的嵌入向量——然后它连续地通过额外的注意力块(GPT-2 总共有 12 个;GPT-3 有 96 个)。每个注意力块都有自己特定的“注意力”和“完全连接”权重模式。对于 GPT-2,这里是第一个注意力头的“你好,再见”输入的注意力权重序列:


1.png


以下是全连接层的(移动平均)“矩阵”:


1.png

奇怪的是,尽管不同注意力块中的这些“权重矩阵”看起来非常相似,但权重大小的分布可能有些不同(并不总是高斯分布):


1.png

那么在经历了所有这些注意力块之后,变压器的净效应是什么?本质上,它是将标记序列的原始嵌入集合转换为最终集合。ChatGPT 的特殊工作方式是选取该集合中的最后一个嵌入,并将其“解码”以生成下一个应该出现的令牌的概率列表。

这就是 ChatGPT 内部的概述。它可能看起来很复杂(尤其是因为它有许多不可避免地有些武断的“工程选择”),但实际上涉及的最终元素非常简单。因为最终我们要处理的只是一个由“人工神经元”组成的神经网络,每个神经元都进行简单的操作,即获取一组数字输入,然后将它们与一定的权重组合起来。

ChatGPT 的原始输入是一个数字数组(到目前为止标记的嵌入向量),当 ChatGPT “运行”以生成新标记时发生的只是这些数字“波及”神经网络的各个层,每个神经元“做它的事情”并将结果传递给下一层的神经元。没有循环或“返回”。一切都只是通过网络“前馈”。

它与典型的计算系统(如图灵机)的设置截然不同, 在图灵机中,结果由相同的计算元素反复“重新处理”。在这里——至少在生成给定的输出标记时——每个计算元素(即神经元)只使用一次。

但在某种意义上,即使在 ChatGPT 中,仍然存在重用计算元素的“外循环”。因为当 ChatGPT 要生成一个新的令牌时,它总是“读取”(即作为输入)在它之前的整个令牌序列,包括 ChatGPT 本身先前“写入”的令牌。我们可以认为这种设置意味着 ChatGPT 确实——至少在其最外层——涉及一个“反馈循环”,尽管在这个循环中,每次迭代都明确可见,作为它生成的文本中出现的标记。

但是,让我们回到 ChatGPT 的核心:重复用于生成每个令牌的神经网络。在某种程度上,它非常简单:一整套相同的人工神经元。网络的某些部分仅由(“完全连接的”)神经元层组成,其中给定层上的每个神经元都连接(具有一定权重)到前一层上的每个神经元。但特别是在其 transformer 架构中,ChatGPT 的部分结构更加复杂,其中仅连接不同层上的特定神经元。(当然,我们仍然可以说“所有神经元都是相连的”——但有些只是权重为零。)

此外,ChatGPT 中神经网络的某些方面并非最自然地被认为仅由“同质”层组成。例如——正如上面的标志性摘要所示——在一个注意力块内,有一些地方对输入数据进行“多份复制”,然后每一份都经过不同的“处理路径”,可能涉及不同数量的层,并且只后来重组。但是,尽管这可能是对正在发生的事情的一种方便表示,但至少在原则上总是可以考虑“密集填充”层,但只是让一些权重为零。

如果看通过 ChatGPT 的最长路径,大约涉及 400 个(核心)层——在某些方面并不是一个很大的数字。但是有数百万个神经元——总共有 1750 亿个连接,因此有 1750 亿个权重。需要意识到的一件事是,每次 ChatGPT 生成一个新令牌时,它都必须对这些权重中的每一个进行计算。在实现上,这些计算可以在某种程度上“按层”组织成高度并行的数组操作,这些操作可以方便地在 GPU 上完成。但是对于生成的每个令牌,仍然需要完成 1750 亿次计算(最后会更多)——因此,是的,使用 ChatGPT 生成长文本可能需要一段时间也就不足为奇了。

但最终,值得注意的是,所有这些操作——单独来看都很简单——可以以某种方式共同完成如此出色的“类人”文本生成工作。必须再次强调的是(至少就我们所知)没有“最终的理论原因”为什么这样的事情应该有效。事实上,正如我们将要讨论的那样,我认为我们必须将此视为一个可能令人惊讶的科学发现:在某种程度上,在像 ChatGPT 这样的神经网络中,有可能捕捉到人类大脑在生成语言时所做的事情的本质.


ChatGPT的训练

好的,我们现在已经概述了 ChatGPT 设置后的工作方式。但是它是如何设置的呢?它的神经网络中的所有 1750 亿个权重是如何确定的?基本上,它们是非常大规模训练的结果,基于大量的文本语料库——在网络上,在书籍中,等等——由人类编写。正如我们所说,即使提供了所有训练数据,神经网络能否成功生成“类人”文本当然也不是显而易见的。而且,再一次,似乎需要详细的工程来实现这一点。但 ChatGPT 的最大惊喜和发现是它完全有可能。而且——实际上——一个“只有”1750 亿个权重的神经网络可以为人类书写的文本建立一个“合理的模型”。

在现代,有很多人类编写的文本以数字形式存在。公共网络至少有数十亿个人工编写的页面,总共可能有一万亿个单词的文本。如果其中包含非公开网页,则该数字可能至少要大 100 倍。到目前为止,已经提供了超过 500 万本数字化图书(在已经出版的大约 1 亿本图书中),提供了另外 1000 亿左右的文字。而且这甚至还没有提到从视频等中的语音中提取的文本(作为个人比较, 我一生中发表的材料总产量 略低于 300 万字,在 过去的 30 年里我写了 大约 1500 万字的电子邮件,总共输入了大约 5000 万字——而在过去的几年里,我在直播中说了超过 1000 万 字。而且,是的,我会用所有这些来训练一个机器人。)

但是,好的,给定所有这些数据,如何从中训练神经网络?基本过程与我们在上面的简单示例中讨论的非常相似。您提供了一批示例,然后调整网络中的权重以最小化网络在这些示例上产生的错误(“损失”)。从错误“反向传播”的主要代价是每次执行此操作时,网络中的每个权重通常至少会发生一点点变化,并且只有很多权重需要处理。(实际的“反向计算”通常只比正向计算难一个小的常数因子。)

使用现代 GPU 硬件,可以直接从数千个示例的批次中并行计算结果。但是当涉及到实际更新神经网络中的权重时,当前的方法基本上需要一个批次地执行此操作。(而且,是的,这可能是真正的大脑——结合计算和记忆元素——目前至少具有架构优势的地方。)

即使在我们之前讨论过的看似简单的学习数值函数的案例中,我们发现我们通常必须使用数百万个示例才能成功训练网络,至少是从头开始。那么这意味着我们需要多少示例才能训练“类人语言”模型?似乎没有任何基本的“理论”方法可以知道。但在实践中,ChatGPT 成功地训练了数千亿字的文本。

有些文本被输入了几次,有些只被输入了一次。但不知何故,它从它看到的文本中“得到了它需要的东西”。但是考虑到要学习的文本量,“学好”需要多大的网络?同样,我们还没有一个基本的理论方法可以说。最终——正如我们将在下面进一步讨论的那样——人类语言和人们通常用它说的话大概有某种“总算法内容”。但下一个问题是神经网络在实现基于该算法内容的模型时的效率如何。同样,我们也不知道——尽管 ChatGPT 的成功表明它相当高效。

最后我们可以注意到,ChatGPT 使用几千亿个权重来完成它所做的事情——在数量上与给定的训练数据的单词(或标记)总数相当。在某些方面,似乎运行良好的“网络规模”与“训练数据的规模”如此可比,这也许令人惊讶(尽管在更小的 ChatGPT 类似物中也进行了经验观察)。毕竟,肯定不是以某种方式“在 ChatGPT 内部”所有来自网络和书籍等的文本都“直接存储”了。因为 ChatGPT 内部实际上是一堆数字——精度略低于 10 位——它们是所有文本聚合结构的某种分布式编码。

换句话说,我们可能会问人类语言的“有效信息内容”是什么,通常用它来表达什么。有语言示例的原始语料库。然后是 ChatGPT 神经网络中的表示。该表示很可能与“算法最小”表示相去甚远(我们将在下面讨论)。但这是一种很容易被神经网络使用的表示。在这种表示中,训练数据似乎最终“压缩”得很少;平均而言,似乎基本上只需要不到一个神经网络权重就可以承载训练数据单词的“信息内容”。

当我们运行 ChatGPT 来生成文本时,我们基本上必须使用每个权重一次。因此,如果有 n 个 权重,我们就有 n 个 计算步骤要做——尽管在实践中,其中许多通常可以在 GPU 中并行完成。但是,如果我们需要大约 n 个 单词的训练数据来设置这些权重,那么根据我们上面所说的,我们可以得出结论,我们将需要大约 1.png 个 计算步骤来进行网络训练——这就是为什么,目前的方法,最终需要谈论数十亿美元的培训工作。



超越基础训练

训练 ChatGPT 的大部分工作都花在“展示”来自网络、书籍等的大量现有文本上。但事实证明,还有另一个——显然相当重要的——部分。

一旦它从显示的原始文本语料库完成“原始训练”,ChatGPT 内的神经网络就准备好开始生成自己的文本,从提示继续等。但是,虽然由此产生的结果通常看起来是合理的,它们往往——尤其是对于较长的文本——以通常非常不像人类的方式“游荡”。这不是人们可以通过对文本进行传统统计而轻易检测到的东西。但这是真正阅读文本的人很容易注意到的东西。

构建 ChatGPT 的一个  关键想法是在“被动阅读”诸如网络之类的东西之后再迈出一步:让真实的人主动与 ChatGPT 互动,看看它产生了什么,并实际上给它反馈“如何成为一个好的聊天机器人”。但是神经网络如何使用该反馈呢?第一步只是让人类对神经网络的结果进行评分。但随后建立了另一个神经网络模型,试图预测这些评级。但现在这个预测模型可以在原始网络上运行——本质上就像一个损失函数,实际上允许该网络根据给出的人类反馈“调整”。而实践中的结果似乎对系统能否成功产生“类人”输出有很大影响。

总的来说,有趣的是,“最初训练的”网络似乎只需要很少的“戳”就可以有效地朝着特定的方向前进。人们可能认为,要让网络表现得好像它“学到了一些新东西”,就必须进入并运行训练算法、调整权重等。

但事实并非如此。相反,基本上告诉 ChatGPT 一次就足够了——作为你给出的提示的一部分——然后它可以在生成文本时成功地利用你告诉它的内容。再一次,我认为,这个有效的事实是理解 ChatGPT “真正在做什么”以及它与人类语言和思维结构的关系的重要线索。

它肯定有一些很像人类的东西:至少一旦它接受了所有的预训练,你可以只告诉它一次,它就可以“记住它”——至少“足够长”以使用它生成一段文本. 那么在这样的情况下发生了什么?可能是“您可能告诉它的所有内容都已经存在于某处”——而您只是将其引导至正确的位置。但这似乎不太合理。相反,似乎更有可能的是,是的,元素已经存在,但细节是由诸如“这些元素之间的轨迹”之类的东西定义的,这就是你在告诉它一些东西时要引入的东西。

事实上,就像人类一样,如果你告诉它一些完全不符合它所知道的框架的奇怪和意想不到的东西,它似乎无法成功地“整合”它。只有当它基本上以一种相当简单的方式在它已有的框架之上运行时,它才能“集成”它。

还值得再次指出的是,神经网络可以“拾取”的内容不可避免地存在“算法限制”。告诉它“这个到那个”等形式的“浅层”规则,神经网络很可能能够很好地表示和重现这些——实际上,它从语言中“已经知道”的东西会给它一个立即遵循的模式。但是尝试为涉及许多潜在的计算上不可简化的步骤的实际“深度”计算提供规则,它就是行不通的。(请记住,在每一步中,它始终只是在其网络中“向前馈送数据”,除非生成新令牌,否则从不循环。)

当然,网络可以学习特定“不可约”计算的答案。但是一旦存在组合数的可能性,这种“查表式”的方法就不会奏效了。所以,是的,就像人类一样,现在是神经网络“伸出援手”并使用实际计算工具的时候了。(而且,是的,  Wolfram|Alpha 和 Wolfram Language 是 独一无二的,因为它们被构建为“谈论世界上的事物”,就像语言模型神经网络一样。)


真正让 ChatGPT 发挥作用的是什么?

人类语言——以及产生它的思维过程——似乎总是代表着一种复杂性的顶峰。事实上,人类大脑——“仅仅”有 1000 亿左右的神经元(可能还有 100 万亿个连接)的网络可能对此负责,这似乎有些不同寻常。也许,人们可能会想,除了神经元网络之外,大脑还有更多的东西——比如一些新的未被发现的物理学层。但现在通过 ChatGPT,我们获得了一条重要的新信息:我们知道,一个纯粹的人工神经网络具有与大脑神经元一样多的连接,能够出色地生成人类语言。

而且,是的,这仍然是一个庞大而复杂的系统——神经净权重与世界上目前可用的文本单词一样多。但在某种程度上,似乎仍然很难相信语言的所有丰富性和它可以谈论的事物都可以封装在这样一个有限的系统中。部分正在发生的事情无疑反映了普遍存在的现象(这首先在 规则 30 的例子中变得明显) 计算过程实际上可以大大放大系统的表面复杂性,即使它们的基本规则很简单。但是,实际上,正如我们上面所讨论的,ChatGPT 中使用的那种神经网络往往是专门构建来限制这种现象的影响——以及与之相关的计算不可约性——以使它们的训练更容易获得。

那么,像 ChatGPT 这样的东西是如何在语言方面走得这么远的呢?我认为,基本的答案是语言在基本层面上比看起来要简单得多。这意味着 ChatGPT——即使具有最终简单的神经网络结构——也能够成功地“捕捉到”人类语言的本质及其背后的思想。此外,在其训练中,ChatGPT 以某种方式“隐含地发现”了语言(和思维)中的任何规律性使这成为可能。

我认为,ChatGPT 的成功为我们提供了一项基础且重要的科学证据:它表明我们可以期待新的主要“语言法则”——以及有效的“思想法则”——在那里可以发现. 在 ChatGPT 中——作为神经网络构建——这些法则充其量是隐含的。但是,如果我们能以某种方式使法律明确,就有可能以更直接、高效和透明的方式做 ChatGPT 所做的事情。

但是,好吧,那么这些法律可能是什么样的呢?最终,他们必须为我们提供某种关于语言——以及我们用它说的话——是如何组合在一起的处方。稍后我们将讨论“深入了解 ChatGPT”如何能够给我们一些关于此的提示,以及我们从构建计算语言中所了解的知识如何提示前进的道路。但首先让我们讨论两个众所周知的例子,说明什么是“语言法则”——以及它们与 ChatGPT 的操作有何关系。

首先是语言的句法。语言不仅仅是随机的单词组合。 相反,对于如何将不同种类的词放在一起有(相当)明确的语法规则:例如,在英语中,名词可以放在形容词之前,后面可以跟动词,但通常两个名词不能紧挨着每个 名词其他。这种语法结构可以(至少近似地)通过一组规则来捕获,这些规则定义了如何将 “解析树”放在一起:


1.png

ChatGPT 对此类规则没有任何明确的“了解”。但在训练过程中,它以某种方式隐含地“发现”了它们——然后似乎很擅长跟随它们。那么这是如何工作的呢?在“大局”层面上还不清楚。但是为了获得一些洞察力,看一个更简单的例子可能会有所启发。

考虑一种由 ('s 和 )'s 序列形成的“语言”,其语法 指定 括号应始终平衡,如解析树所示:


1.png

我们能否训练神经网络生成“语法正确”的括号序列?有多种方法可以处理神经网络中的序列,但让我们像 ChatGPT 一样使用 transformer 网络。给定一个简单的 transformer 网络,我们可以开始将语法正确的括号序列作为训练示例。一个微妙之处(实际上也出现在 ChatGPT 生成的人类语言中)是,除了我们的“内容标记”(此处为“(”和“)”)之外,我们还必须包含一个“结束”标记,它的生成是为了表明输出不应该再继续(即对于 ChatGPT,那个已经到达“故事的结尾”)。

如果我们建立一个只有一个注意力块的变压器网络,它有 8 个头和长度为 128 的特征向量(ChatGPT 也使用长度为 128 的特征向量,但有 96 个注意力块,每个有 96 个头)那么它似乎不可能得到它来学习更多关于括号语言的知识。但是有了 2 个注意力块,学习过程似乎收敛了——至少在给出了 1000 万左右的例子之后(而且,正如 transformer 网络常见的那样,展示更多的例子似乎只会降低其性能)。

因此,通过这个网络,我们可以模拟 ChatGPT 所做的事情,并在括号序列中询问下一个标记应该是什么的概率:


1.png

在第一种情况下,网络“非常确定”序列不能在此处结束——这很好,因为如果结束了,括号就会变得不平衡。然而,在第二种情况下,它“正确识别”序列可以在这里结束,尽管它也“指出”可以“重新开始”,在后面放一个“(”,大概是一个“)” . 但是,哎呀,即使有大约 400,000 个经过艰苦训练的权重,它仍然说有 15% 的概率将“)”作为下一个标记——这是不对的,因为这必然会导致括号不平衡。

如果我们要求网络为逐渐变长的 ('s:


1.png

而且,是的,网络达到一定长度就可以正常工作。但随后它开始失败。在神经网络(或一般的机器学习)这样的“精确”情况下,这是非常典型的事情。人类“一眼就能解决”的情况,神经网络也能解决。但是需要做一些“更多算法”的事情(例如显式计算括号以查看它们是否闭合)的情况下,神经网络往往“计算量太浅”而无法可靠地完成。(顺便说一句,即使是完整的当前 ChatGPT 也很难正确匹配长序列中的括号。)

那么这对于 ChatGPT 和英语等语言的语法意味着什么呢?括号中的语言是“朴素的”——更像是一个“算法故事”。但是在英语中,能够根据当地的单词选择和其他提示“猜测”语法上适合的内容要现实得多。而且,是的,神经网络在这方面做得更好——尽管它可能会错过一些“形式上正确”的案例,嗯,人类也可能会错过。但要点是,语言的整体句法结构这一事实——以及所有暗示的规律性——在某种意义上限制了神经网络必须学习的“多少”。

句法对语言提供了一种约束。但显然还有更多。像“Inquisitive electrons eat blue theory for fish”这样的句子在语法上是正确的,但不是人们通常期望说的话,如果 ChatGPT 生成它也不会被认为是成功的——因为,好吧,对于里面的话,基本没什么意思。

但是有没有一种通用的方法来判断一个句子是否有意义?没有传统的整体理论。但人们可以将 ChatGPT 视为在用来自网络等的数十亿(可能有意义的)句子进行训练后隐含地“开发了一种理论”。

这个理论可能是什么样的?好吧,有一个小角落基本上已经为人所知两千年了,这是合乎 逻辑的. 当然,在亚里士多德发现它的三段论形式中,逻辑基本上是一种说法,即遵循某些模式的句子是合理的,而其他则不是。因此,例如,说“所有的 X 都是 Y。这不是 Y,所以它不是 X”是合理的(如“所有的鱼都是蓝色的。这不是蓝色的,所以它不是鱼。”)。正如人们可以有点异想天开地想象亚里士多德通过大量修辞示例(“机器学习风格”)发现了三段论逻辑一样,我们也可以想象在 ChatGPT 的训练中它能够“发现三段论逻辑”通过查看网络上的大量文本等。(而且,是的,虽然人们因此可以期望 ChatGPT 生成包含基于诸如三段论逻辑之类的东西的“正确推论”的文本,

但是,除了逻辑的狭隘例子之外,关于如何系统地构建(或识别)甚至看似有意义的文本还能说些什么呢?是的,像 Mad Libs这样的东西 使用非常具体的“短语模板”。但不知何故,ChatGPT 隐含了一种更通用的方法来做到这一点。也许除了“当你有 1750 亿个神经网络权重时它会以某种方式发生”之外,关于如何完成它可能没有什么可说的了。但我强烈怀疑还有一个更简单、更强大的故事。


意义空间和语义运动定律

我们在上面讨论过,在 ChatGPT 中,任何一段文本都可以有效地由一组数字表示,我们可以将这些数字视为某种“语言特征空间”中的一个点的坐标。因此,当 ChatGPT 继续一段文本时,这对应于在语言特征空间中描绘出一条轨迹。但是现在我们可以问是什么让这个轨迹对应于我们认为有意义的文本。是否可能存在某种“语义运动定律”来定义(或至少限制)语言特征空间中的点如何在保持“意义”的同时四处移动?

那么这个语言特征空间是什么样的呢?下面是一个示例,说明如果我们将这样的特征空间投影到 2D,单个单词(这里是普通名词)可能会如何布局:


1.jpg

我们在上面看到了另一个基于代表植物和动物的词的例子。但这两种情况的要点是“语义相似的词”被放置在附近。

再举一个例子,下面是对应于不同词性的词是如何排列的:


1.png

当然,一个给定的词通常并不只有“一个意思”(或者必然只对应一个词性)。通过查看包含一个词的句子如何在特征空间中布局,人们通常可以“梳理”不同的含义——就像这里的例子中的单词“crane”(鸟还是机器?):


1.png

好的,所以我们可以将这个特征空间视为将“意义附近的词”放在这个空间的附近,这至少是合理的。但是我们可以在这个空间中识别出什么样的附加结构呢?例如,是否存在某种可以反映空间“平坦度”的“平行传输”概念?解决这个问题的一种方法是看类比:


1.png

而且,是的,即使我们向下投影到 2D,也经常至少有一点“平坦的迹象”,尽管这肯定不是普遍存在的。

那么轨迹呢?我们可以查看 ChatGPT 提示在特征空间中遵循的轨迹——然后我们可以看到 ChatGPT 如何继续:


1.png

这里肯定没有“几何上明显”的运动定律。这一点也不奇怪;我们完全希望这是一个 相当复杂的故事。而且,例如,即使找到了“运动的语义定律”,它最自然地会在哪种嵌入(或实际上是什么“变量”)中被陈述,这远非显而易见。

在上图中,我们展示了“轨迹”中的几个步骤——在每个步骤中,我们都选择了 ChatGPT 认为最有可能的词(“零温度”情况)。但我们也可以问,在给定的时间点,哪些词可以“下一个”出现,概率是多少:


1.png

我们在这种情况下看到的是,有一个高概率词的“扇形”似乎在特征空间中或多或少地朝着确定的方向移动。如果我们走得更远会发生什么?以下是我们“沿着”轨迹“移动”时出现的连续“扇形”:


1.png

这是一个 3D 表示,总共需要 40 个步骤:


1.png

而且,是的,这看起来一团糟——并且没有做任何事情来特别鼓励人们可以期望通过实证研究“ChatGPT 在内部做什么”来识别“类数学物理”“语义运动定律”的想法. 但也许我们只是在查看“错误的变量”(或错误的坐标系),如果我们只查看正确的变量,我们会立即看到 ChatGPT 正在做一些“数学-物理-简单”的事情,比如遵循测地线。但截至目前,我们还没有准备好从其“内部行为”“经验解码”ChatGPT“发现”的关于人类语言如何“组合”的内容。

语义语法和计算语言的力量
产生“有意义的人类语言”需要什么?在过去,我们可能会认为它可能就是人脑。但是现在我们知道它可以通过 ChatGPT 的神经网络来完成。尽管如此,也许这就是我们所能达到的极限,没有比这更简单——或更易于理解——的方法了。但我强烈怀疑 ChatGPT 的成功隐含地揭示了一个重要的“科学”事实:有意义的人类语言实际上比我们所知道的结构和简单性要多得多——而且最终甚至可能有相当简单的规则描述如何将这种语言组合在一起。

正如我们上面提到的,句法语法给出了如何将对应于不同词类的词用人类语言组合在一起的规则。但要处理意义,我们需要走得更远。如何做到这一点的一个版本是不仅要考虑语言的句法语法,还要考虑语义语法。

为了句法的目的,我们识别名词和动词之类的东西。但出于语义的目的,我们需要“更精细的渐变”。因此,例如,我们可能会识别“移动”的概念,以及“保持其身份独立于位置”的“对象”的概念。这些“语义概念”中的每一个都有无穷无尽的具体例子。但是为了我们的语义语法的目的,我们只是有一些通用的规则,基本上说“对象”可以“移动”。关于这一切如何运作,有很多话要说(其中一些我之前已经说过)。但我将满足于在这里仅指出一些潜在的前进道路的一些评论。

值得一提的是,即使一个句子按照语义语法完全OK,也不代表它在实践中已经实现(甚至可以实现)。“大象到月球旅行”无疑会“通过”我们的语义语法,但它在我们的现实世界中肯定还没有实现(至少现在)——尽管对于一个虚构的世界来说这绝对是公平的游戏。

当我们开始谈论“语义语法”时,我们很快就会问“它的背后是什么?” 它假设了什么样的“世界模型”?句法语法实际上只是关于从单词构建语言。但是语义语法必然涉及某种“世界模型”——充当“骨架”的东西,在其上可以叠加由实际单词构成的语言。

直到最近,我们可能还认为(人类)语言是描述我们的“世界模型”的唯一通用方式。几个世纪前就开始对特定种类的事物进行形式化,特别是基于数学。但现在有一种更通用的形式化方法: 计算语言。

而且,是的,这一直是我四十多年来的一个大项目(现在体现在 Wolfram 语言中 ):开发一种精确的符号表示,可以尽可能广泛地谈论世界上的事物,以及抽象的我们关心的事情。因此,例如,我们有 城市 、 分子 、 图像 和 神经网络的符号表示,我们有关于如何计算这些东西的内置知识。

而且,经过几十年的工作,我们已经以这种方式涵盖了很多领域。但在过去,我们并没有专门处理“日常话语”。在“我买了两磅苹果”中,我们可以 很容易地表示 (并对其进行营养和其他计算)“两磅苹果”。但我们(目前还)没有“我买了”的符号表示。

这一切都与语义语法的想法有关——以及拥有一个通用的概念符号“构建工具包”的目标,这将为我们提供规则,说明什么可以与什么相匹配,从而为我们可能转向的“流程”提供规则成人类语言。

但是假设我们有这种“符号话语语言”。我们会用它做什么?我们可以开始做一些事情,比如生成“本地有意义的文本”。但最终我们可能想要更多“具有全球意义”的结果——这意味着“计算”更多关于世界上实际存在或发生的事情(或者可能在某个一致的虚构世界中)。

现在,在 Wolfram 语言中,我们拥有大量关于各种事物的内置计算知识。但是对于一个完整的符号话语语言,我们必须构建关于世界上一般事物的额外“计算”:如果一个对象从 A 移动到 B,从 B 移动到 C,那么它就从 A 移动到 C,等等。

给定一种符号话语语言,我们可以用它来做出“独立陈述”。但我们也可以用它来询问有关世界的问题,“Wolfram|Alpha 风格”。或者我们可以用它来陈述我们“想要这样做”的事情,大概是通过某种外部驱动机制。或者我们可以用它来做出断言——也许是关于现实世界,或者是关于我们正在考虑的某个特定世界,无论是虚构的还是其他的。

人类语言从根本上来说是不精确的,尤其是因为它没有“束缚”到特定的计算实现,而且它的含义基本上只是由用户之间的“社会契约”来定义。但计算语言,就其本质而言,具有一定的基本精度——因为最终它指定的内容总是可以“在计算机上明确执行”。人类语言通常可以带有一定的模糊性。(当我们说“行星”时,它是否包括系外行星,等等?)但是在计算语言中,我们必须准确和清楚我们所做的所有区分。

利用普通的人类语言以计算语言编写名称通常很方便。但它们在计算语言中的含义必然是精确的——并且可能涵盖也可能不涵盖典型人类语言用法中的某些特定含义。

应该如何找出适用于一般符号话语语言的基本“本体论”?好吧,这并不容易。这也许就是为什么自从亚里士多德两千年前的原始开端以来,在这些方面几乎没有做过什么。但这真的很有帮助,今天我们现在对如何通过计算思考世界了解得如此之多(而且从我们的物理项目 和 ruliad 的想法中获得“基础形而上学”并没有什么坏处 )。

但是,在 ChatGPT 的背景下,这一切意味着什么?通过其培训,ChatGPT 有效地“拼凑”了一定数量(相当令人印象深刻)的语义语法。但它的成功让我们有理由认为,以计算语言形式构建更完整的东西是可行的。而且,与我们迄今为止对 ChatGPT 内部结构的了解不同,我们可以期望设计出易于人类理解的计算语言。

当我们谈论语义语法时,我们可以类比三段论逻辑。起初,三段论逻辑本质上是关于用人类语言表达的陈述的规则集合。但是(是的,两千年后) 当形式逻辑被开发出来时,三段论逻辑的原始基本构造现在可用于构建巨大的“形式塔”,其中包括现代数字电路的操作。因此,我们可以预期,它将具有更一般的语义语法。起初,它可能只能处理简单的模式,比如以文本形式表达。但是一旦它的整个计算语言框架建立起来,我们可以期待它能够被用来竖起“广义语义逻辑”的高塔,让我们能够以精确和形式化的方式处理各种具有我们以前从未接触过,除了通过人类语言在“底层”,以及它的所有模糊性。

我们可以将计算语言和语义语法的构造视为表示事物表示的一种最终压缩。因为它使我们能够谈论可能发生的事情的本质,而无需处理普通人类语言中存在的所有“短语转换”等问题。我们可以将 ChatGPT 的强大之处视为有点类似的东西:因为它在某种意义上也已经“钻透”到它可以“以语义上有意义的方式将语言组合在一起”的程度,而不用担心不同的可能转向短语。

那么如果我们将 ChatGPT 应用于底层计算语言会发生什么?计算语言可以描述什么是可能的。但仍然可以添加的是一种“流行”的感觉——例如基于阅读网络上的所有内容。但是,从根本上说,使用计算语言进行操作意味着像 ChatGPT 这样的东西可以直接和基本地访问相当于使用潜在不可简化计算的终极工具。这使得它成为一个系统,不仅可以“生成合理的文本”,而且可以期望解决任何可以解决的问题,即该文本是否实际上对世界做出了“正确”的陈述——或者它应该谈论的任何内容。


那么……ChatGPT 在做什么,它为什么起作用?

ChatGPT 的基本概念在某种程度上相当简单。从来自网络、书籍等的大量人工文本样本开始。然后训练神经网络生成“像这样”的文本。特别是,让它能够从“提示”开始,然后继续使用“就像它被训练的那样”的文本。

正如我们所见,ChatGPT 中的实际神经网络由非常简单的元素组成——尽管有数十亿个。并且神经网络的基本操作也非常简单,主要包括为每个新单词(或单词的一部分)“一次通过其元素”(没有任何循环等)传递从它生成的文本派生的输入) 它生成的。

但值得注意的是——也是出乎意料的——这个过程可以产生成功地“像”网络上、书籍中等地方的文本。它不仅是连贯的人类语言,而且“说的东西”“遵循”它的提示”利用它“阅读”的内容。它并不总是说“全局有意义”(或对应于正确的计算)——因为(例如,没有 访问 Wolfram|Alpha 的“计算能力”)它只是说“听起来正确”的事情基于培训材料中“听起来像”什么东西。

ChatGPT 的特定工程使其非常引人注目。但最终(至少在它可以使用外部工具之前)ChatGPT“只是”从它积累的“传统智慧的统计数据”中提取一些“连贯的文本线索”。但令人惊奇的是,结果如此像人类。正如我所讨论的,这暗示了一些至少在科学上非常重要的东西:人类语言(及其背后的思维模式)在某种程度上比我们想象的更简单,在结构上更“像法律”。ChatGPT 隐含地发现了它。但是我们可以通过语义语法、计算语言等显式地公开它。

ChatGPT 在生成文本方面所做的工作令人印象深刻——结果通常与我们人类产生的结果非常相似。那么这是否意味着 ChatGPT 像大脑一样工作?它的底层人工神经网络结构最终以大脑的理想化为模型。当我们人类生成语言时,似乎很可能发生的事情的许多方面都非常相似。

当涉及到训练(又名学习)时,大脑和当前计算机的不同“硬件”(以及可能还有一些未开发的算法思想)迫使 ChatGPT 使用可能相当不同的策略(并且在某些方面更少)高效)比大脑。还有其他一些东西:与典型的算法计算不同,ChatGPT 内部没有“循环”或“重新计算数据”。这不可避免地限制了它的计算能力——即使是对当前的计算机而言,但绝对是对大脑而言。

目前尚不清楚如何“解决这个问题”并仍然保持以合理效率训练系统的能力。但这样做可能会让未来的 ChatGPT 做更多“类似大脑的事情”。当然,大脑在很多事情上做得并不好——尤其是涉及不可简化的计算。对于这些,大脑和 ChatGPT 之类的东西都必须寻求“外部工具”——比如 Wolfram 语言。

但就目前而言,看到 ChatGPT 已经能够做到的事情令人兴奋。在某种程度上,这是基本科学事实的一个很好的例子,即大量简单的计算元素可以做出非凡和意想不到的事情。但它也可能为我们提供了 2000 年来最好的动力,让我们更好地理解人类状况的核心特征(即人类语言及其背后的思维过程)的基本特征和原则可能是什么。




------------------我的底线------------------------
中文版ChatGPT
https://chat.aboutyun.com/

加微信赠送Chat GPT教程:



获取更多资源:
领取100本书+1T资源
http://www.aboutyun.com/forum.php?mod=viewthread&tid=26480

大数据5个项目视频
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25235

名企资源、名企面试题、最新BAT面试题、专题面试题等资源汇总
https://www.aboutyun.com/forum.php?mod=viewthread&tid=27732
加微信w3aboutyun,可拉入技术爱好者群

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条