ChatGPT工作原理:是什么真正让 ChatGPT 工作?

人类的语言 —— 以及产生语言的思维过程 —— 似乎一直代表着一种复杂性的顶峰。事实上,人类的大脑 —— “仅” 有 1000 亿个左右的神经元网络(也许还有 100 万亿个连接) —— 能够负责这项工作,似乎有些了不起。也许,人们可能会想象,大脑除了神经元网络之外还有其他东西,就像一些未被发现的物理学新层。

但现在通过 ChatGPT,我们得到了一个重要的新信息:我们知道,一个纯粹的人工神经网络,其连接数与大脑的神经元一样多,能够很好地生成人类语言,令人惊讶。

而且,是的,这仍然是一个庞大而复杂的系统 —— 其神经网络的权重与目前世界上的文字一样多。但在某种程度上,似乎仍然很难相信,语言的所有丰富性和它可以谈论的东西可以被封装在这样一个有限的系统中。

这其中的部分原因无疑是反映了一个无处不在的现象(这在第 30 条规则的例子中首次变得很明显),即计算过程实际上可以大大放大系统的表面复杂性,即使其基本规则很简单。但是,实际上,正如我们上面所讨论的,ChatGPT 中所使用的那种神经网络往往是专门用来限制这种现象的影响以及与之相关的计算的不可重复性的,以便使其训练更容易进行。

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

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

但是,好吧,那么这些法律可能是什么样的?最终,它们必须给我们提供某种语言 —— 以及我们用它说的东西 —— 如何组合的处方。稍后我们将讨论 “观察 ChatGPT” 如何能够给我们一些这方面的提示,以及我们从构建计算语言中了解到的情况如何提示我们前进的道路。但首先让我们来讨论两个长期以来为人所知的相当于 “语言法则” 的例子 —— 以及它们与 ChatGPT 的运作有何关系。

第一个是语言的语法。语言并不只是一个随机的词语组合。相反,对于不同种类的单词如何放在一起,有(相当)明确的语法规则:例如,在英语中,名词前面可以有形容词,后面可以有动词,但通常两个名词不能紧挨着。这样的语法结构可以(至少是近似地)被一套规则所捕获,这些规则定义了如何将相当于 “解析树” 的东西放在一起:

图片

ChatGPT 对这种规则没有任何明确的 “知识”。但在训练中,它隐含地 “发现” 了这些规则,然后似乎很擅长遵循这些规则。那么,它是如何工作的呢?在一个 “大画面” 的层面上,这并不清楚。但是为了得到一些启示,看看一个更简单的例子也许会有启发。

考虑一种由()和()序列组成的 “语言”,其语法规定括号应该总是平衡的,如解析树所表示的那样:

图片

我们能否训练一个神经网络来产生 “语法上正确的” 小括号序列?在神经网络中处理序列有多种方法,但让我们使用变换器网络,就像 ChatGPT 那样。给定一个简单的变换器网络,我们可以开始给它提供语法正确的小括号序列作为训练实例。

一个微妙之处(实际上也出现在 ChatGPT 的人类语言生成中)是,除了我们的 “内容标记”(这里是 “(” 和 “)”),我们还必须包括一个 “结束” 标记,它的生成表明输出不应该再继续下去(即对于 ChatGPT 来说,我们已经到达了 “故事的终点”)。

如果我们只用一个有 8 个头的注意块和长度为 128 的特征向量来设置一个转换网(ChatGPT 也使用长度为 128 的特征向量,但有 96 个注意块,每个注意块有 96 个头),那么似乎不可能让它学会很多小括号语言。但是,如果有 2 个注意力头,学习过程似乎会收敛 —— 至少在给出 1000 万个左右的例子之后(而且,正如转化器网络所常见的那样,显示更多的例子似乎会降低其性能)。

因此,对于这个网络,我们可以做 ChatGPT 的类似工作,并询问下一个标记应该是什么的概率 —— 在一个括号序列中:

图片

在第一种情况下,网络 “非常确定” 序列不能在这里结束 —— 这很好,因为如果它结束了,小括号就会留下不平衡。然而,在第二种情况下,它 “正确地认识到” 序列可以在这里结束,尽管它也 “指出” 有可能 “重新开始”,放下一个 “(”,估计后面还有一个 “)”。但是,哎呀,即使它有 40 万个左右经过艰苦训练的权重,它也说有 15% 的概率将 “)” 作为下一个标记 —— 这是不对的,因为这必然会导致一个不平衡的括号。

如果我们要求网络为逐渐变长的()序列提供最高概率的完成度,我们会得到以下结果:

图片

是的,在一定长度内,网络做得很好。但随后它就开始失败了。这是在神经网络(或一般的机器学习)的这种 “精确” 情况下看到的非常典型的事情。人类 “一眼就能解决” 的情况,神经网络也能解决。但是需要做一些 “更多的算法”(例如明确地计算括号是否封闭)的情况,神经网络往往在某种程度上是 “计算上太浅”,无法可靠地做到。(顺便说一句,即使是目前完整的 ChatGPT 也很难正确匹配长序列中的括号)。

那么,这对像 ChatGPT 和像英语这样的语言的语法意味着什么呢?小括号语言是 “朴素的” —— 而且更像是一个 “算法的故事”。但在英语中,能够在局部选词和其他提示的基础上 “猜测” 什么是符合语法的,则要现实得多。

而且,是的,神经网络在这方面要好得多 —— 尽管它可能会错过一些 “形式上正确” 的情况,而人类也可能错过。但主要的一点是,语言有一个整体的句法结构这一事实 —— 以及它所暗示的所有规律性 —— 在某种意义上限制了神经网络要学习的 “程度”。一个关键的 “类似自然科学” 的观察是,像 ChatGPT 中的神经网络的转化器架构似乎能够成功地学习所有人类语言中似乎都存在(至少在某种程度上是近似的)的那种嵌套树状的句法结构。

句法提供了对语言的一种约束。但显然还有更多。像 “好奇的电子吃鱼的蓝色理论” 这样的句子在语法上是正确的,但并不是人们通常期望说的东西,而且如果 ChatGPT 生成它,也不会被认为是成功的 —— 因为,嗯,以其中单词的正常含义,它基本上没有意义。

但是,是否有一个一般的方法来判断一个句子是否有意义?这方面没有传统的整体理论。但是,我们可以认为 ChatGPT 在接受了来自网络的数十亿(可能是有意义的)句子的训练之后,已经隐含地 “发展了一套理论”。

这个理论可能是什么样的呢?好吧,有一个小小的角落,基本上两千年来一直为人所知,那就是逻辑。当然,在亚里士多德发现的 Syllogistic 形式中,逻辑基本上是一种说法,即遵循某些模式的句子是合理的,而其他的则不是。

因此,例如,说 “所有的 X 都是 Y,这不是 Y,所以它不是 X” 是合理的(正如 “所有的鱼都是蓝色的,这不是蓝色,所以它不是鱼”)。就像人们可以有点异想天开地想象亚里士多德通过(“机器学习式”)大量的修辞学例子来发现对偶逻辑一样,人们也可以想象在 ChatGPT 的训练中,它将能够通过查看网络上的大量文本等来 “发现对偶逻辑”。

(是的,虽然我们可以期待 ChatGPT 产生包含 “正确推论” 的文本,比如基于对偶逻辑,但当它涉及到更复杂的形式逻辑时,情况就完全不同了 —— 我认为我们可以期待它在这里失败,原因与它在小括号匹配中失败的原因相同)。

但除了逻辑这个狭隘的例子之外,对于如何系统地构建(或识别)甚至是合理的有意义的文本,又能说些什么呢?是的,有一些东西,如《疯狂的自由》,使用非常具体的 “短语模板”。但不知何故,ChatGPT 隐含着一种更普遍的方法。也许除了 “当你有 1750 亿个神经网络权重时,它就会以某种方式发生” 之外,对如何做到这一点没有什么可说的。但我强烈怀疑有一个更简单、更有力的故事。

THE END