其他
ChatGPT的工作原理,这篇文章说清楚了
— 1 —
概率从何而来?好吧,ChatGPT 总是根据概率来选择下一个词。但是这些概率从何而来?让我们从一个更简单的问题开始。让我们考虑一次生成一个字母(而不是单词)的英语文本。我们怎样才能算出每个字母的概率呢?我们可以做的一个非常简单的事情就是取一个英语文本的样本,然后计算不同字母在其中出现的频率。因此,举例来说,这是计算维基百科上关于 “猫”(cat) 的文章中的字母:
— 2 —什么是模型?假设你想知道(就像伽利略在 15 世纪末所做的那样),从比萨塔的每一层落下的炮弹要多长时间才能落地。那么,你可以在每一种情况下测量它,并将结果制成表格。或者你可以做理论科学的精髓:建立一个模型,给出某种计算答案的程序,而不是仅仅测量和记住每个案例。让我们想象一下,我们有(有点理想化的)数据,说明炮弹从不同楼层落下需要多长时间。
— 3 —
类人的任务模型我们上面举的例子涉及到为数字数据建立模型,这些数据基本上来自于简单的物理学 —— 几个世纪以来我们都知道 “简单数学适用”。但是对于 ChatGPT 来说,我们必须为人类语言文本建立一个模型,即由人脑产生的那种模型。而对于这样的东西,我们(至少现在)还没有类似 “简单数学” 的东西。那么,它的模型可能是什么样的呢?在我们谈论语言之前,让我们先谈谈另一项类似人类的任务:识别图像。而作为一个简单的例子,让我们考虑数字的图像(是的,这是一个经典的机器学习例子):
— 3 —
神经网路好吧,那么我们用于图像识别等任务的典型模型究竟是如何工作的呢?目前最流行、最成功的方法是使用神经网络。在 20 世纪 40 年代,神经网络的发明形式与今天的使用非常接近,它可以被认为是大脑似乎工作方式的简单理想化。在人类的大脑中,有大约 1000 亿个神经元(神经细胞),每个神经元都能产生电脉冲,每秒可能有一千次。这些神经元在一个复杂的网络中连接起来,每个神经元都有树状的分支,允许它将电信号传递给可能有成千上万的其他神经元。粗略估计,任何给定的神经元是否在某一时刻产生电脉冲,取决于它从其他神经元那里收到的脉冲 —— 不同的连接有不同的 “权重” 贡献。当我们 “看到一个图像” 时,所发生的事情是,当图像的光子落在眼睛后面的(“光感受器”)细胞上时,它们在神经细胞中产生电信号。这些神经细胞与其他神经细胞相连,最终信号通过一整层的神经元。而正是在这个过程中,我们 “识别” 了图像,最终 “形成了一个想法”,即我们 “看到了一个 2”(也许最后会做一些事情,如大声说 “2” 这个词)。上一节中的 “黑盒子” 函数是这样一个神经网络的 “数学化” 版本。它刚好有 11 层(虽然只有 4 个 “核心层”)。
机器学习和神经网络的训练到目前为止,我们一直在谈论那些 “已经知道” 如何完成特定任务的神经网络。但是,神经网络之所以如此有用(估计也是在大脑中),是因为它们不仅在原则上可以完成各种任务,而且可以逐步 “根据实例训练” 来完成这些任务。当我们制作一个区分猫和狗的神经网络时,我们实际上不需要写一个程序来(比如说)明确地找到胡须;相反,我们只需要展示大量关于什么是猫和什么是狗的例子,然后让网络从这些例子中 “机器学习” 如何去区分它们。重点是,训练有素的网络从它所展示的特定例子中 “概括” 出来。正如我们在上面看到的,这并不是简单地让网络识别它所看到的猫咪图像的特定像素模式;而是让神经网络以某种方式设法在我们认为是某种 “一般猫性” 的基础上区分图像。那么,神经网络的训练究竟是如何进行的呢?从本质上讲,我们一直在努力寻找能够使神经网络成功重现我们所给的例子的权重。然后,我们依靠神经网络以 “合理” 的方式在这些例子之间进行 “插值”(或 “概括”)。让我们看看一个比上面的最近点的问题更简单的问题。让我们只尝试让一个神经网络学习函数:
— 5 —
神经网络训练的实践与理论特别是在过去的十年里,在训练神经网络的艺术方面取得了许多进展。而且,是的,这基本上是一门艺术。有时,特别是在回顾中,人们至少可以看到正在做的事情有一丝 “科学解释” 的影子。但大多数情况下,事情都是通过试验和错误发现的,增加了一些想法和技巧,逐步建立了一个关于如何使用神经网络的重要传说。有几个关键部分。首先,对于一个特定的任务,应该使用什么架构的神经网络。然后,还有一个关键问题,即如何获得训练神经网络的数据。而且,人们越来越多地不是在处理从头开始训练一个网络的问题:相反,一个新的网络可以直接纳入另一个已经训练好的网络,或者至少可以使用该网络为自己产生更多的训练实例。人们可能认为,对于每一种特定的任务,人们都需要一个不同的神经网络结构。但人们发现,即使是对于明显不同的任务,相同的架构似乎也能发挥作用。在某种程度上,这让人想起了通用计算的想法(以及我的计算等价原则),但是,正如我将在后面讨论的那样,我认为这更多地反映了这样一个事实,即我们通常试图让神经网络做的任务是 “类似人类” 的,而神经网络可以捕获相当普遍的 “类似人类的过程”。在早期的神经网络中,人们倾向于认为应该 “让神经网络尽可能地少做”。例如,在将语音转换为文本时,人们认为应该首先分析语音的音频,将其分解为音素,等等。但人们发现,至少对于 “类似人类的任务” 来说,通常更好的做法是尝试在 “端到端问题” 上训练神经网络,让它自己 “发现” 必要的中间特征、编码等。还有一个想法是,我们应该在神经网络中引入复杂的单独组件,让它实际上 “明确地实现特定的算法想法”。但是,这又一次被证明是不值得的;相反,最好只是处理非常简单的组件,让它们 “自我组织”(尽管通常是以我们无法理解的方式)来实现(大概)那些算法想法的等价物。这并不是说没有与神经网络相关的 “结构化思想”。因此,例如,具有局部连接的二维神经元阵列似乎至少在处理图像的早期阶段非常有用。而拥有专注于 “回顾序列” 的连接模式似乎很有用 —— 我们将在后面看到 —— 在处理人类语言等事物时,例如在 ChatGPT 中。但神经网络的一个重要特点是,像一般的计算机一样,它们最终只是在处理数据。而目前的神经网络 —— 目前的神经网络训练方法 —— 是专门处理数字阵列的。但在处理过程中,这些数组可以被完全重新排列和重塑。举个例子,我们上面用来识别数字的网络从一个二维的 “图像” 阵列开始,迅速 “增厚” 到许多通道,但随后 “浓缩” 成一个一维阵列,最终将包含代表不同可能输出数字的元素:
— 6 —
嵌入的概念神经网络 —— 至少在它们目前的设置中 —— 从根本上说是基于数字的。因此,如果我们要用它们来处理像文本这样的东西,我们就需要一种方法来用数字表示我们的文本。当然,我们可以开始(基本上就像 ChatGPT 那样)为字典中的每个词分配一个数字。但是,有一个重要的想法 —— 例如,它是 ChatGPT 的核心 —— 超出了这个范围。这就是 “嵌入” 的概念。我们可以把嵌入看作是一种尝试用数字阵列来表示事物 “本质” 的方式 —— 其特性是 “附近的事物” 由附近的数字来表示。因此,举例来说,我们可以把一个词的嵌入看作是试图在一种 “意义空间” 中排列词语,在这个空间中,以某种方式 “在意义上接近” 的词语在嵌入中出现。实际使用的嵌入 —— 例如在 ChatGPT 中 —— 往往涉及大量的数字列表。但是如果我们把它投射到二维空间,我们就可以显示出嵌入的单词是如何排列的例子:
— 7 —
ChatGPT 内部好了,我们终于准备好讨论 ChatGPT 内部的内容了。是的,最终,它是一个巨大的神经网络 —— 目前是所谓的 GPT-3 网络的一个版本,有 1750 亿个权重。在许多方面,这是一个非常像我们讨论过的其他神经网络。但它是一个特别为处理语言问题而设置的神经网络。它最显著的特征是一个叫做 “转化器” 的神经网络架构。在我们上面讨论的第一个神经网络中,任何给定层的每个神经元基本上都与前一层的每个神经元相连(至少有一些权重)。但是,如果一个人在处理具有特殊的、已知的结构的数据时,这种全连接的网络(大概)是过剩的。因此,例如,在处理图像的早期阶段,典型的做法是使用所谓的卷积神经网络(“convnets”),其中的神经元被有效地布置在一个类似于图像中的像素的网格上 —— 并且只与网格上附近的神经元相连。变换器的想法是为构成一段文本的标记序列做一些至少有点类似的事情。但是,转化器并不只是在序列中定义一个可以有连接的固定区域,而是引入了 “注意” 的概念 —— 以及对序列的某些部分比其他部分更 “注意” 的概念。也许有一天,仅仅启动一个通用的神经网络并通过训练进行所有的定制是有意义的。但至少到现在为止,将事情 “模块化” 在实践中似乎是至关重要的,就像变压器那样,可能也像我们的大脑那样。好吧,那么 ChatGPT(或者说,它所基于的 GPT-3 网络)实际上是做什么的?回想一下,它的总体目标是以 “合理” 的方式延续文本,基于它所看到的训练(包括从网络上查看数十亿页的文本等),所以在任何时候,它都有一定数量的文本,它的目标是为下一个要添加的标记提出适当的选择。它的操作分为三个基本阶段:首先,它获取与迄今为止的文本相对应的标记序列,并找到代表这些标记的嵌入(即一个数字阵列)。其次,它以 “标准的神经网络方式” 对这一嵌入进行操作,数值 “通过” 网络中的连续层,产生一个新的嵌入(即一个新的数字阵列)。然后,它从这个数组的最后一部分,生成一个大约 50,000 个值的数组,这些值变成了不同的可能的下一个标记的概率。(而且,是的,恰好使用的标记的数量与英语中的常用词的数量相同,尽管只有大约 3000 个标记是整个单词,其余的是片段。)关键的一点是,这个管道的每一部分都是由一个神经网络实现的,其权重是由网络的端到端训练决定的。换句话说,实际上,除了整体架构之外,没有任何东西是 “明确设计的”;所有东西都是从训练数据中 “学习” 的。然而,在架构的设置方式上有很多细节,反映了各种经验和神经网络的传说。而且,尽管这肯定是进入了杂草丛中,但我认为谈论其中的一些细节是有用的,尤其是为了了解建立像 ChatGPT 这样的东西所需要的东西。首先是嵌入模块。下面是 GPT-2 的 Wolfram 语言示意图:
— 8 —
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 个字的训练数据来设置这些权重,那么从我们上面所说的,我们可以得出结论,我们需要大约 n2 个计算步骤来进行网络训练 —— 这就是为什么,用目前的方法,人们最终需要谈论数十亿美元的训练工作。
— 9 —
基本训练之上训练 ChatGPT 的大部分工作是向它 “展示” 大量来自网络、书籍等的现有文本。但事实证明,还有一个明显相当重要的部分。一旦它完成了对所展示的原始语料库的 “原始训练”,ChatGPT 内的神经网络就可以开始生成自己的文本,继续提示等。但是,虽然这样做的结果往往看起来很合理,但它们往往 —— 特别是对于较长的文本 —— 以往往相当非人类的方式 “游离”。这不是人们可以轻易发现的,比如说,通过对文本做传统的统计。但这是实际阅读文本的人很容易注意到的东西。构建 ChatGPT 的一个关键想法是,在 “被动地阅读” 网络等事物之后,还有一个步骤:让实际的人类主动与 ChatGPT 互动,看看它产生了什么,并在实际上给它反馈 “如何成为一个好的聊天机器人”。但神经网络如何使用这种反馈呢?第一步只是让人类对神经网络的结果进行评价。但随后又建立了另一个神经网络模型,试图预测这些评分。但现在这个预测模型可以在原始网络上运行 —— 基本上就像一个损失函数,实际上是让该网络通过人类的反馈来 “调高”。而实践中的结果似乎对系统成功产生 “类似人类” 的输出有很大影响。总的来说,有趣的是,“最初训练的” 网络似乎只需要很少的 “戳” 就能让它向特定的方向有用地发展。人们可能会认为,要让网络表现得像 “学到了新东西”,就必须运行训练算法,调整权重,等等。但事实并非如此。相反,基本上只需要告诉 ChatGPT 一些东西,作为你所给的提示的一部分,然后它就可以在生成文本时成功地利用你告诉它的东西。我认为,这一点再次成为理解 ChatGPT “真正在做什么” 以及它与人类语言和思维结构的关系的一个重要线索。这当然有一些类似于人类的东西:至少在它接受了所有的预训练之后,你可以告诉它一些东西,而它可以 “记住它” —— 至少 “足够长的时间” 来使用它生成一段文本。那么,在这样的情况下发生了什么?可能是 “你可能告诉它的一切都已经在那里了” —— 你只是把它引向正确的地方。但这似乎并不靠谱。相反,似乎更有可能的是,是的,这些元素已经在那里了,但具体细节是由 “这些元素之间的轨迹” 这样的东西来定义的,这就是你告诉它的东西。事实上,就像人类一样,如果你告诉它一些奇怪的、出乎意料的、完全不适合它所知道的框架的东西,它似乎并不能成功地 “整合” 这个。只有当它基本上以一种相当简单的方式骑在它已经拥有的框架之上时,它才能 “整合” 它。还值得再次指出的是,对于神经网络能够 “接收” 的东西,不可避免地存在 “算法限制”。告诉它 “浅层” 的规则,如 “这个到那个”,神经网络很可能能够很好地表示和再现这些规则 —— 事实上,它从语言中 “已经知道” 的东西会给它一个直接的模式来遵循。但是,如果试图给它制定一个实际的 “深度” 计算规则,涉及许多潜在的不可简化的计算步骤,它就无法工作了。(记住,在每一步,它总是在其网络中 “向前输送数据”;除了生成新的标记外,从不循环。)当然,网络可以学习特定的 “不可简化的” 计算的答案。但只要有组合数的可能性,这种 “查表式” 的方法就不会奏效。因此,是的,就像人类一样,现在是时候让神经网络 “伸出手来”,使用实际的计算工具了。(是的,Wolfram|Alpha 和 Wolfram 语言是唯一合适的,因为它们是为了 “谈论世界上的事物” 而建立的,就像语言模型的神经网络一样)。
— 10 —
是什么真正让 ChatGPT 工作?人类的语言 —— 以及产生语言的思维过程 —— 似乎一直代表着一种复杂性的顶峰。事实上,人类的大脑 —— “仅” 有 1000 亿个左右的神经元网络(也许还有 100 万亿个连接) —— 能够负责这项工作,似乎有些了不起。也许,人们可能会想象,大脑除了神经元网络之外还有其他东西,就像一些未被发现的物理学新层。但现在通过 ChatGPT,我们得到了一个重要的新信息:我们知道,一个纯粹的人工神经网络,其连接数与大脑的神经元一样多,能够很好地生成人类语言,令人惊讶。而且,是的,这仍然是一个庞大而复杂的系统 —— 其神经网络的权重与目前世界上的文字一样多。但在某种程度上,似乎仍然很难相信,语言的所有丰富性和它可以谈论的东西可以被封装在这样一个有限的系统中。这其中的部分原因无疑是反映了一个无处不在的现象(这在第 30 条规则的例子中首次变得很明显),即计算过程实际上可以大大放大系统的表面复杂性,即使其基本规则很简单。但是,实际上,正如我们上面所讨论的,ChatGPT 中所使用的那种神经网络往往是专门用来限制这种现象的影响以及与之相关的计算的不可重复性的,以便使其训练更容易进行。那么,像 ChatGPT 这样的东西是如何在语言方面走得如此之远的呢?我想,基本的答案是,语言在根本层面上比它看起来要简单得多。这意味着 ChatGPT —— 即使它的神经网络结构最终是简单的 —— 能够成功地 “捕捉” 人类语言的本质和背后的思维。此外,在其训练中,ChatGPT 以某种方式 “隐含地发现” 了语言(和思维)中的任何规律性,使其成为可能。我认为,ChatGPT 的成功为我们提供了一个基本的和重要的科学证据:它表明我们可以期待有重大的新 “语言法则” —— 以及有效的 “思维法则” —— 在那里被发现。在 ChatGPT 中,作为一个神经网络,这些规律充其量是隐含的。但是,如果我们能以某种方式使这些定律明确化,就有可能以更直接、更有效和更透明的方式完成 ChatGPT 所做的各种事情。但是,好吧,那么这些法律可能是什么样的?最终,它们必须给我们提供某种语言 —— 以及我们用它说的东西 —— 如何组合的处方。稍后我们将讨论 “观察 ChatGPT” 如何能够给我们一些这方面的提示,以及我们从构建计算语言中了解到的情况如何提示我们前进的道路。但首先让我们来讨论两个长期以来为人所知的相当于 “语言法则” 的例子 —— 以及它们与 ChatGPT 的运作有何关系。第一个是语言的语法。语言并不只是一个随机的词语组合。相反,对于不同种类的单词如何放在一起,有(相当)明确的语法规则:例如,在英语中,名词前面可以有形容词,后面可以有动词,但通常两个名词不能紧挨着。这样的语法结构可以(至少是近似地)被一套规则所捕获,这些规则定义了如何将相当于 “解析树” 的东西放在一起:
— 11 —
意义空间和语义运动法则我们在上面讨论过,在 ChatGPT 中,任何一段文本都有效地由一个数字阵列来表示,我们可以将其视为某种 “语言特征空间” 中的一个点的坐标。因此,当 ChatGPT 继续一个文本时,这相当于在语言特征空间中追踪一个轨迹。但现在我们可以问,是什么让这个轨迹对应于我们认为有意义的文本。也许会有某种 “语义运动法则” 来定义 —— 或者至少是约束 —— 语言特征空间中的点如何移动,同时保留 “有意义”?那么,这个语言学特征空间是什么样子的呢?下面是一个例子,说明如果我们把这样一个特征空间投射到二维空间,单个词(这里是指普通名词)是如何布局的:
— 12 —
语义语法和计算语言的力量产生 “有意义的人类语言” 需要什么?在过去,我们可能会认为这不可能是一个人的大脑。但现在我们知道,ChatGPT 的神经网络可以很好地完成这一任务。不过,也许这已经是我们能走的最远的路了,没有什么比这更简单 —— 或者更容易被人类理解 —— 的东西会起作用。但我强烈怀疑的是,ChatGPT 的成功隐含地揭示了一个重要的 “科学” 事实:有意义的人类语言的结构和简单性实际上比我们所知道的要多得多,而且最终甚至可能有相当简单的规则来描述这种语言如何被组合起来。正如我们上面提到的,句法语法给出了人类语言中对应于不同语篇的词语如何组合的规则。但是为了处理意义,我们需要更进一步。而如何做到这一点的一个版本是,不仅要考虑语言的句法语法,还要考虑语义语法。为了语法的目的,我们确定名词和动词等事物。但为了语义学的目的,我们需要 “更精细的等级”。因此,例如,我们可以确定 “移动” 的概念,以及 “保持独立于位置的身份” 的 “物体” 的概念。这些 “语义概念” 中的每一个都有无尽的具体例子。但是,为了我们的语义语法的目的,我们将只是有某种一般性的规则,基本上说 “物体” 可以 “移动”。关于这一切如何运作,有很多东西可以说(其中一些我以前说过)。但我在这里只想说几句,指出一些潜在的发展道路。值得一提的是,即使一个句子根据语义语法是完全可以的,也不意味着它在实践中已经实现(甚至可以实现)。“大象去了月球” 无疑会 “通过” 我们的语义语法,但是它肯定没有在我们的实际世界中实现(至少还没有) —— 尽管对于一个虚构的世界来说,这绝对是公平的游戏。当我们开始谈论 “语义语法” 时,我们很快就会问:“它的下面是什么?” 它假设的是什么 “世界模型”?句法语法实际上只是关于从词语中构建语言的问题。但是,语义学语法必然涉及某种 “世界模型” —— 作为 “骨架” 的东西,由实际词语构成的语言可以在上面分层。直到最近,我们可能会想象,(人类)语言将是描述我们 “世界模型” 的唯一一般方式。早在几个世纪前,就已经开始有了对特定种类事物的形式化,特别是以数学为基础。但现在有一种更普遍的形式化方法:计算语言。是的,这是我四十多年来的一个大项目(现在体现在沃尔弗拉姆语言中):开发一个精确的符号表示,可以尽可能广泛地谈论世界上的事物,以及我们关心的抽象事物。因此,例如,我们有城市、分子、图像和神经网络的符号表示,而且我们有关于如何计算这些事物的内在知识。而且,经过几十年的工作,我们已经用这种方式覆盖了很多领域。但是在过去,我们并没有特别处理 “日常话语”。在 “我买了两磅苹果” 中,我们可以轻易地表示(并对其进行营养和其他计算)“两磅苹果”。但是我们(还没有)对 “我买了” 有一个符号表示。这一切都与语义语法的想法有关 —— 目标是为概念提供一个通用的符号 “构造套件”,这将为我们提供什么可以与什么结合的规则,从而为我们可能转化为人类语言的 “流程” 提供规则。但是,假设我们有了这种 “符号话语语言”。我们会用它做什么呢?我们可以开始做一些事情,比如生成 “本地有意义的文本”。但最终我们可能想要更多 “全局意义” 的结果 —— 这意味着 “计算” 更多关于世界上实际存在或发生的事情(或许是在某个一致的虚构世界)。现在在 Wolfram 语言中,我们有大量的关于许多种类的事物的内置计算知识。但对于一个完整的符号话语语言,我们必须建立关于世界上一般事物的额外 “计算”:如果一个物体从 A 地移动到 B 地,又从 B 地移动到 C 地,那么它就从 A 地移动到 C 地,等等。给定一个符号化的话语语言,我们可以用它来做 “独立的陈述”。但我们也可以用它来问关于世界的问题,“Wolfram|Alpha 风格”。或者我们可以用它来陈述我们 “想让它变成这样” 的事情,大概是用一些外部的执行机制。或者我们可以用它来做断言 —— 也许是关于真实的世界,也许是关于我们正在考虑的某个特定世界,不管是虚构的还是其他的。人类语言从根本上说是不精确的,这不仅仅是因为它没有 “拴” 在一个具体的计算实现上,而且它的意义基本上只是由其使用者之间的 “社会契约” 来定义。但是计算语言,就其性质而言,具有某种基本的精确性 —— 因为最终它所指定的东西总是可以 “毫不含糊地在计算机上执行”。人类语言通常可以摆脱某种模糊性。(当我们说 “行星” 时,它是否包括系外行星,等等。)但是在计算语言中,我们必须对我们所做的所有区分精确而清楚。在计算语言中,利用普通人类语言来编造名字往往很方便。但它们在计算语言中的含义必然是精确的,而且可能涵盖也可能不涵盖典型人类语言用法中的某些特定内涵。我们应该如何找出适合一般符号话语语言的基本 “本体”?嗯,这并不容易。这也许就是为什么自亚里士多德两千多年前的原始开始以来,在这些方面做得很少。但是,今天我们对如何以计算方式思考世界了解得如此之多,这确实有帮助(而且,从我们的物理学项目和 ragiad 的想法中得到 “基本形而上学” 也无伤大雅)。但是这一切在 ChatGPT 的背景下意味着什么?从它的训练来看,ChatGPT 已经有效地 “拼凑” 了一定数量的相当于语义语法的东西(相当令人印象深刻)。但是它的成功让我们有理由认为,以计算语言的形式构建更完整的东西将是可行的。而且,与我们迄今为止对 ChatGPT 内部的理解不同的是,我们可以期待将计算语言设计得让人类容易理解。当我们谈论语义语法的时候,我们可以将其与对偶逻辑相类比。起初,对偶逻辑本质上是用人类语言表达的语句规则的集合。但是(是的,两千年后)当形式逻辑被开发出来时,音节逻辑最初的基本构造现在可以用来建造巨大的 “形式塔”,包括例如现代数字电路的运作。而且,我们可以预期,更一般的语义语法也会如此。起初,它可能只是能够处理简单的模式,例如以文本形式表达。但是,一旦它的整个计算语言框架建立起来,我们可以预期它将能够被用来竖起 “广义语义逻辑” 的高塔,使我们能够以精确和正式的方式处理各种我们以前从未接触过的东西,而只是在 “底层” 通过人类语言,以其所有的模糊性。我们可以认为计算语言的构造 —— 以及语义语法 —— 代表了一种对事物的终极压缩。因为它允许我们谈论什么是可能的本质,而不需要,例如,处理存在于普通人类语言中的所有 “转折性的措辞”。我们可以把 ChatGPT 的巨大优势看作是有点类似的东西:因为它在某种意义上也已经 “钻研” 到可以 “把语言以一种有语义的方式组合在一起”,而不关心不同的可能的措辞。那么,如果我们把 ChatGPT 应用于底层计算语言,会发生什么呢?计算语言可以描述什么是可能的。但仍然可以添加的是对 “什么是流行的” 的感觉 —— 例如基于对网络上所有内容的阅读。但是,在下面,用计算语言操作意味着像 ChatGPT 这样的东西可以立即和基本地接触到相当于利用潜在的不可还原的计算的终极工具。这使得它成为一个不仅可以 “生成合理文本” 的系统,而且可以期望解决任何可以解决的问题,即这些文本是否真的对世界 —— 或者它应该谈论的东西做出了 “正确” 的陈述。
— 13 —
那么ChatGPT 在做什么,为什么它能发挥作用?ChatGPT 的基本概念在某种程度上相当简单。从网络、书籍等人类创造的大量文本样本开始。然后训练一个神经网络来生成 “像这样” 的文本。特别是,让它能够从一个 “提示” 开始,然后继续生成 “像它被训练过的那样” 的文本。正如我们所看到的,ChatGPT 中的实际神经网络是由非常简单的元素组成的,尽管有数十亿个元素。神经网络的基本操作也非常简单,主要是对它所生成的每一个新词(或词的一部分),通过其元素 “传递一次输入”(没有任何循环,等等)。但出乎意料的是,这个过程可以产生成功地 “像” 网络上、书本上的文字。而且,它不仅是连贯的人类语言,它还 “说了些什么”,“按照它的提示” 利用它 “读” 到的内容。它并不总是说 “全局有意义”(或对应于正确的计算)的事情 —— 因为(例如,在没有获得 Wolfram|Alpha 的 “计算超能力” 的情况下),它只是根据训练材料中的事情 “听起来像” 说了一些话。ChatGPT 的具体工程使它相当引人注目。但最终(至少在它能够使用外部工具之前),ChatGPT“只是” 从它所积累的 “传统智慧的统计数据” 中抽出一些 “连贯的文本线索”。但令人惊讶的是,其结果是如此的像人。正如我所讨论的,这表明了一些至少在科学上非常重要的东西:人类语言(以及它背后的思维模式)在某种程度上比我们想象的更简单,更 “像法律”。ChatGPT 已经隐晦地发现了这一点。但我们有可能通过语义语法、计算语言等明确地暴露它。ChatGPT 在生成文本方面所做的工作令人印象深刻,而且其结果通常非常像我们人类会产生的东西。那么,这是否意味着 ChatGPT 的工作方式就像一个大脑?它的底层人工神经网络结构最终是以大脑的理想化为模型的。而且,当我们人类产生语言时,似乎很有可能发生的许多方面都很相似。当涉及到训练(又称学习)时,大脑和当前计算机的不同 “硬件”(以及,也许,一些未开发的算法想法)迫使 ChatGPT 使用一种可能与大脑相当不同(在某些方面效率低得多)的策略。还有一点:即使与典型的算法计算不同,ChatGPT 内部也没有 “循环” 或 “对数据进行重新计算”。而这不可避免地限制了它的计算能力 —— 即使与目前的计算机相比也是如此,但与大脑相比肯定是如此。目前还不清楚如何 “解决这个问题”,并且仍然保持以合理效率训练系统的能力。但这样做大概会让未来的 ChatGPT 做更多 “类似大脑的事情”。当然,有很多事情是大脑做得不好的 —— 特别是涉及到相当于不可简化的计算。对于这些,大脑和像 ChatGPT 这样的东西都必须寻求 “外部工具” —— 比如 Wolfram 语言。但就目前而言,看到 ChatGPT 已经能够做到的事情是令人兴奋的。在某种程度上,它是基本科学事实的一个很好的例子,即大量简单的计算元素可以做非凡和意想不到的事情。但它也为我们提供了两千年来最好的动力,以更好地理解人类条件的核心特征,即人类语言及其背后的思维过程的基本特征和原则。
转自AI研究局,编辑:AI小助理
AIhackathon 历史文章:
Prompt中文指南(一)结构与编写原则Prompt中文指南(二)思维链(CoT)技巧触发了模型思考能力Prompt中文指南(三)ChatGPT中的3种角色Prompt中文指南(四)self-ask让模型学会自我提问Prompt中文指南(五)ReAct让模型循环思考行动ChatGPT到底改变了什么?一文看懂最火的AutoGPT、HuggingGPT、Visual ChatGPT到底是什么逻辑?ChatGPT终于出官方App,Plus订阅更方便了