Zero 人工智能产业链union
作者:史蒂芬·沃尔弗拉姆(Stephen Wolfram)英、美籍 计算机科学家, 物理学家。他是 Mathematica 的首席设计师,《一种新科学》一书的作者。
ChatGPT 能够自动生成一些读起来表面上甚至像人写的文字的东西,这非常了不起,而且出乎意料。但它是如何做到的?为什么它能发挥作用?我在这里的目的是大致介绍一下 ChatGPT 内部的情况,然后探讨一下为什么它能很好地生成我们认为是有意义的文本。
我首先要说明一下,我将把重点放在正在发生的事情的大的方向上,虽然我会提到一些工程细节,但我不会深入研究它们。(我所说的实质内容也同样适用于目前其他的 “大型语言模型” LLM 和 ChatGPT)。
首先要解释的是,ChatGPT 从根本上说总是试图对它目前得到的任何文本进行 “合理的延续”,这里的 “合理” 是指 “在看到人们在数十亿个网页上所写的东西之后,人们可能会期望某人写出什么”。
因此,假设我们已经得到了 “人工智能最好的是它能去做 ……” 的文本(“The best thing about AI is its ability to”)。想象一下,扫描数十亿页的人类书写的文本(例如在网络上和数字化书籍中),并找到这个文本的所有实例 —— 然后看到什么词在接下来的时间里出现了多少。
ChatGPT 有效地做了类似的事情,除了(正如我将解释的)它不看字面文本;它寻找在某种意义上 “意义匹配” 的东西。但最终的结果是,它产生了一个可能出现在后面的词的排序列表,以及 “概率”。

值得注意的是,当 ChatGPT 做一些事情,比如写一篇文章时,它所做的基本上只是反复询问 “鉴于到目前为止的文本,下一个词应该是什么?” —— 而且每次都增加一个词。(更准确地说,正如我将解释的那样,它在添加一个 “标记”,这可能只是一个词的一部分,这就是为什么它有时可以 “编造新词”)。
在每一步,它得到一个带有概率的单词列表。但是,它究竟应该选择哪一个来添加到它正在写的文章(或其他什么)中呢?人们可能认为它应该是 “排名最高” 的词(即被分配到最高 “概率” 的那个)。
但是,这时就会有一点巫术开始悄悄出现。因为出于某种原因 —— 也许有一天我们会有一个科学式的理解 —— 如果我们总是挑选排名最高的词,我们通常会得到一篇非常 “平淡” 的文章,似乎从来没有 “显示出任何创造力”(甚至有时一字不差地重复)。但是,如果有时(随机的)我们挑选排名较低的词,我们会得到一篇 “更有趣” 的文章。
这里有随机性的事实意味着,假如我们多次使用同一个提示,我们也很可能每次都得到不同的文章。而且,为了与巫术的想法保持一致,有一个特定的所谓 “温度” 参数(temperature parameter),它决定了以什么样的频率使用排名较低的词,而对于论文的生成,事实证明,0.8 的 “温度” 似乎是最好的。(值得强调的是,这里没有使用任何 “理论”;这只是一个在实践中被发现可行的问题)。例如,“温度” 的概念之所以存在,是因为恰好使用了统计物理学中熟悉的指数分布,但没有 “物理” 联系 —— 至少到目前为止我们如此认为。)
在我们继续之前,我应该解释一下,为了论述的目的,我大多不会使用 ChatGPT 中的完整系统;相反,我通常会使用更简单的 GPT-2 系统,它有一个很好的特点,即它足够小,可以在标准的台式电脑上运行。
因此,对于我展示的所有内容,包括明确的沃尔弗拉姆语言(Wolfram Language)代码,你可以立即在你的计算机上运行。(点击这里的任何图片都可以复制其背后的代码 —— 译者注:请查看文末的 “原文链接”,在其中点击图片获取代码)。
例如,这里是如何获得上述概率表的。首先,我们必须检索底层的 “语言模型” 神经网:

如果重复 “应用模型” —— 在每一步中加入概率最高的词(在此代码中被指定为模型的 “决定”),会发生什么:

但是,如果不总是挑选 “顶级” 词,而是有时随机挑选 “非顶级” 词(“随机性” 对应 “温度” 为 0.8)呢?人们又可以建立起文本:

值得指出的是,即使在第一步,也有很多可能的 “下一个词” 可供选择(温度为 0.8),尽管它们的概率下降得很快(是的,这个对数图上的直线对应于 n-1 的 “幂律” 衰减,这是语言的一般统计的特点):

— 1 —
概率从何而来?
好吧,ChatGPT 总是根据概率来选择下一个词。但是这些概率从何而来?让我们从一个更简单的问题开始。让我们考虑一次生成一个字母(而不是单词)的英语文本。我们怎样才能算出每个字母的概率呢?
我们可以做的一个非常简单的事情就是取一个英语文本的样本,然后计算不同字母在其中出现的频率。因此,举例来说,这是计算维基百科上关于 “猫”(cat) 的文章中的字母:

结果相似,但不一样(“o” 在 “dogs” 文章中无疑更常见,因为毕竟它出现在 “dog” 这个词本身)。尽管如此,如果我们采取足够大的英语文本样本,我们可以期待最终得到至少是相当一致的结果。

下面是我们得到的一个样本,如果我们用这些概率生成一个字母序列:

我们可以通过强迫 “字长” 的分布与英语中的分布相一致,在制造 “单词” 方面做得稍微好一点:

我们在这里没有碰巧得到任何 “实际的词”,但结果看起来稍好一些。不过,要想更进一步,我们需要做的不仅仅是随机地分别挑选每个字母。例如,我们知道,如果我们有一个 “q”,下一个字母基本上必须是 “u”:
这里有一个字母本身的概率图:

这是一个显示典型英语文本中成对字母(“2-grams”)概率的图。可能的第一个字母显示在页面上,第二个字母显示在页面下:

例如,我们在这里看到,除了 “u” 行,“q” 列是空白的(概率为零)。好了,现在我们不再是一次生成一个字母的 “单词”,而是使用这些 “2-gram” 概率,一次看两个字母来生成它们。下面是一个结果的样本 —— 其中恰好包括一些 “实际的词”:

值得理解的是,从来没有一个 “无模型的模型”。你使用的任何模型都有一些特定的基础结构,然后有一组 “你可以转动的旋钮”(即你可以设置的参数)来适应你的数据。而在 ChatGPT 的案例中,使用了很多这样的 “旋钮” —— 实际上,有 1750 亿个。
但令人瞩目的是,ChatGPT 的底层结构 —— “仅仅” 有这么多的参数 —— 足以使一个计算下一个单词概率的模型 “足够好”,从而为我们提供合理的文章长度的文本。
— 3 —
类人的任务模型
我们上面举的例子涉及到为数字数据建立模型,这些数据基本上来自于简单的物理学 —— 几个世纪以来我们都知道 “简单数学适用”。但是对于 ChatGPT 来说,我们必须为人类语言文本建立一个模型,即由人脑产生的那种模型。而对于这样的东西,我们(至少现在)还没有类似 “简单数学” 的东西。那么,它的模型可能是什么样的呢?
在我们谈论语言之前,让我们先谈谈另一项类似人类的任务:识别图像。而作为一个简单的例子,让我们考虑数字的图像(是的,这是一个经典的机器学习例子):

当我们为上面的数字数据建立一个模型时,我们能够取一个给定的数字值 x,然后为特定的 a 和 b 计算 a bx。
因此,如果我们把这里的每个像素的灰度值当作某个变量 xi,是否有一些所有这些变量的函数,在评估时告诉我们这个图像是什么数字?事实证明,有可能构建这样一个函数。不足为奇的是,这并不特别简单。一个典型的例子可能涉及 50 万次数学运算。
但最终的结果是,如果我们把一幅图像的像素值集合输入这个函数,就会得出一个数字,指定我们的图像是哪个数字。稍后,我们将讨论如何构建这样一个函数,以及神经网络的概念。但现在让我们把这个函数当作黑匣子,我们输入例如手写数字的图像(作为像素值的阵列),然后我们得到这些数字对应的数字:

但这里到底发生了什么?比方说,我们逐步模糊一个数字。有一段时间,我们的函数仍然 “识别” 它,在这里是一个 “2”。但很快它就 “失去” 了,并开始给出 “错误” 的结果:

但为什么我们说这是一个 “错误” 的结果呢?在这种情况下,我们知道我们通过模糊一个 “2” 得到所有的图像。但是,如果我们的目标是制作一个人类识别图像的模型,那么真正要问的问题是,如果遇到这些模糊的图像,在不知道其来源的情况下,人类会做什么。
如果我们从我们的功能中得到的结果通常与人类会说的话一致,我们就有一个 “好的模型”。而非微不足道的科学事实是,对于像这样的图像识别任务,我们现在基本上知道如何构建这样的函数。
我们能 “从数学上证明” 它们的作用吗?嗯,不能。因为要做到这一点,我们必须有一个关于我们人类正在做什么的数学理论。以 “2” 图像为例,改变几个像素。我们可以想象,只有几个像素 “不合适”,我们还是应该认为这个图像是 “2”。但这应该到什么程度呢?这是一个关于人类视觉感知的问题。而且,是的,对于蜜蜂或章鱼来说,答案无疑是不同的 —— 对于假定的外星人来说,可能完全不同。
— 3 —
神经网路
好吧,那么我们用于图像识别等任务的典型模型究竟是如何工作的呢?目前最流行、最成功的方法是使用神经网络。在 20 世纪 40 年代,神经网络的发明形式与今天的使用非常接近,它可以被认为是大脑似乎工作方式的简单理想化。
在人类的大脑中,有大约 1000 亿个神经元(神经细胞),每个神经元都能产生电脉冲,每秒可能有一千次。这些神经元在一个复杂的网络中连接起来,每个神经元都有树状的分支,允许它将电信号传递给可能有成千上万的其他神经元。
粗略估计,任何给定的神经元是否在某一时刻产生电脉冲,取决于它从其他神经元那里收到的脉冲 —— 不同的连接有不同的 “权重” 贡献。
当我们 “看到一个图像” 时,所发生的事情是,当图像的光子落在眼睛后面的(“光感受器”)细胞上时,它们在神经细胞中产生电信号。这些神经细胞与其他神经细胞相连,最终信号通过一整层的神经元。而正是在这个过程中,我们 “识别” 了图像,最终 “形成了一个想法”,即我们 “看到了一个 2”(也许最后会做一些事情,如大声说 “2” 这个词)。
上一节中的 “黑盒子” 函数是这样一个神经网络的 “数学化” 版本。它刚好有 11 层(虽然只有 4 个 “核心层”)。

这个神经网并没有什么特别的 “理论推导”;它只是在 1998 年作为一项工程而构建的东西,并且被发现是有效的。(当然,这与我们描述我们的大脑是通过生物进化过程产生的没有什么不同)。
好吧,但是像这样的神经网络是如何 “识别事物” 的?关键在于吸引器的概念。想象一下,我们有 1 和 2 的手写图像:

我们希望所有的 1 都 “被吸引到一个地方”,而所有的 2 都 “被吸引到另一个地方”。或者,换一种方式,如果一个图像在某种程度上 “更接近于 1”,而不是 2,我们希望它最终出现在 “1 的地方”,反之亦然。
作为一个直接的类比,我们假设在平面上有某些位置,用点表示(在现实生活中,它们可能是咖啡店的位置)。那么我们可以想象,从平面上的任何一点开始,我们总是想在最近的点结束(即我们总是去最近的咖啡店)。我们可以通过将平面划分为由理想化的 “分水岭” 分隔的区域(“吸引盆地”)来表示这一点:

我们的目标是获取一个对应于 {x,y} 位置的 “输入”,然后将其 “识别” 为它最接近的三个点中的任何一个。或者,换句话说,我们希望神经网络能够计算出一个类似于 {x,y} 的函数:

ChatGPT 的神经网络也只是对应于这样的一个数学函数 —— 但实际上有数十亿个术语。
但让我们回到单个神经元上。下面是一个有两个输入(代表坐标 x 和 y)的神经元在选择不同的权重和常数(以及 Ramp 作为激活函数)后可以计算的函数的一些例子:

但是,上面那个更大的网络是怎么回事?嗯,这是它的计算结果:

更大的网络通常能更好地逼近我们的目标函数。而在 “每个吸引子盆地的中间”,我们通常会得到我们想要的答案。但在边界 —— 神经网络 “很难下定决心” 的地方 —— 情况可能会更加混乱。
在这个简单的数学风格的 “识别任务” 中,“正确答案” 是什么很清楚。但在识别手写数字的问题上,就不那么清楚了。如果有人把 “2” 写得很糟糕,看起来像 “7”,等等,怎么办?不过,我们还是可以问,神经网络是如何区分数字的 —— 这就给出了一个指示:

但总的来说,我们可以说神经网络正在 “挑选出某些特征”(也许尖尖的耳朵也在其中),并利用这些特征来确定图像是什么。但这些特征是我们有名字的,比如 “尖耳朵”?大多数情况下不是。
我们的大脑在使用类似的特征吗?大多数情况下我们不知道。但值得注意的是,像我们在这里展示的神经网络的前几层似乎可以挑出图像的某些方面(如物体的边缘),这些方面似乎与我们知道的由大脑中第一层视觉处理挑出的特征相似。
但是,假设我们想要一个神经网络的 “猫识别理论”。我们可以说 “看,这个特定的网络做到了” —— 这立即给了我们一些关于 “问题有多难” 的感觉(例如,可能需要多少个神经元或层)。
但至少到现在为止,我们还没有办法对网络正在做的事情进行 “叙述性描述”。也许这是因为它在计算上确实是不可简化的,而且除了明确地追踪每一个步骤之外,没有一般的方法可以找到它在做什么。也可能只是因为我们还没有 “弄清科学”,还没有确定 “自然法则”,使我们能够总结出正在发生的事情。
当我们谈论用 ChatGPT 生成语言时,我们会遇到同样的问题。而且同样不清楚是否有办法 “总结它在做什么”。但是语言的丰富性和细节(以及我们在这方面的经验)可能会让我们比图像走得更远。
— 4 —
机器学习和神经网络的训练
到目前为止,我们一直在谈论那些 “已经知道” 如何完成特定任务的神经网络。但是,神经网络之所以如此有用(估计也是在大脑中),是因为它们不仅在原则上可以完成各种任务,而且可以逐步 “根据实例训练” 来完成这些任务。
当我们制作一个区分猫和狗的神经网络时,我们实际上不需要写一个程序来(比如说)明确地找到胡须;相反,我们只需要展示大量关于什么是猫和什么是狗的例子,然后让网络从这些例子中 “机器学习” 如何去区分它们。
重点是,训练有素的网络从它所展示的特定例子中 “概括” 出来。正如我们在上面看到的,这并不是简单地让网络识别它所看到的猫咪图像的特定像素模式;而是让神经网络以某种方式设法在我们认为是某种 “一般猫性” 的基础上区分图像。
那么,神经网络的训练究竟是如何进行的呢?从本质上讲,我们一直在努力寻找能够使神经网络成功重现我们所给的例子的权重。然后,我们依靠神经网络以 “合理” 的方式在这些例子之间进行 “插值”(或 “概括”)。
让我们看看一个比上面的最近点的问题更简单的问题。让我们只尝试让一个神经网络学习函数:

对于这个任务,我们需要一个只有一个输入和一个输出的网络,比如:

但我们应该使用什么权重等?在每一组可能的权重下,神经网络都会计算出一些函数。例如,这里是它用几组随机选择的权重所做的事情:

在这个 “训练” 的每个阶段,网络中的权重都被逐步调整 —— 我们看到,最终我们得到了一个能成功重现我们想要的功能的网络。那么,我们是如何调整权重的呢?基本的想法是在每个阶段看看我们离得到我们想要的功能 “有多远”,然后以这样的方式更新权重,使之更接近。
为了找出 “我们有多远”,我们计算通常被称为 “损失函数”(或有时称为 “成本函数”)的东西。这里我们使用的是一个简单的(L2)损失函数,它只是我们得到的值与真实值之间的差异的平方之和。
我们看到的是,随着我们训练过程的进展,损失函数逐渐减少(遵循一定的 “学习曲线”,不同的任务是不同的) —— 直到我们达到一个点,网络(至少是一个很好的近似值)成功再现了我们想要的函数:

好了,最后要解释的重要部分是如何调整权重以减少损失函数。正如我们所说,损失函数给我们提供了我们得到的值与真实值之间的 “距离”。但是 “我们得到的值” 在每个阶段都是由当前版本的神经网络和其中的权重决定的。但现在想象一下,这些权重是变量 —— 比如说 wi。我们想找出如何调整这些变量的值,以使取决于这些变量的损失最小。
例如,想象一下(对实践中使用的典型神经网络进行了不可思议的简化),我们只有两个权重 w1 和 w2。那么我们可能有一个损失,作为 w1 和 w2 的函数,看起来像这样:

数值分析提供了各种技术来寻找这样的情况下的最小值。但一个典型的方法是,从之前的 w1、w2 开始,逐步遵循最陡峭的下降路径:

但每一个这样的 “不同的解决方案” 至少会有轻微的不同行为。如果我们要求,比如说,在我们提供训练实例的区域之外进行 “外推”,我们可以得到极大的不同结果:

而我们的情况是,如果网太小,它就不能再现我们想要的功能。但如果超过一定的规模,它就没有问题了 —— 至少如果一个人用足够长的时间和足够多的例子训练它。顺便说一下,这些图片说明了一个神经网络的传说:如果中间有一个 “挤压”,迫使所有东西都通过一个较小的中间神经元数量,那么我们往往可以用一个较小的网络。
(值得一提的是,“无中间层” —— 或所谓的 “感知器” —— 网络只能学习本质上的线性函数 —— 但只要有一个中间层,原则上就可以任意很好地近似任何函数,至少如果有足够的神经元,尽管为了使其可行地训练,通常需要某种正则化或规范化)。
好吧,让我们假设我们已经确定了某种神经网络架构。现在有一个问题,就是如何获得数据来训练网络。围绕神经网络和一般机器学习的许多实际挑战都集中在获取或准备必要的训练数据上。在许多情况下(“监督学习”),人们希望获得明确的输入和期望的输出的例子。
因此,举例来说,人们可能希望通过图像中的内容或一些其他属性来标记图像。也许我们必须明确地去做 —— 通常是费尽心机地去做标记。但是很多时候,我们可以借助已经完成的工作,或者将其作为某种代理。
因此,举例来说,我们可以使用网络上已经提供的图片的 alt 标签。或者,在另一个领域,我们可以使用为视频创建的封闭式字幕。或者在语言翻译训练中,可以使用不同语言的网页或其他文件的平行版本。
你需要向神经网络展示多少数据来训练它完成一项特定任务?同样,这很难从第一原理上估计。当然,通过使用 “转移学习” 来 “转移” 诸如已经在另一个网络中学习过的重要特征列表的东西,可以大大降低要求。
但一般来说,神经网络需要 “看到大量的例子” 才能训练好。而至少对于某些任务来说,神经网络的一个重要传说是,这些例子可能是非常重复的。事实上,向神经网络展示所有的例子是一个标准的策略,一遍又一遍。在每个 “训练回合”(或 “epochs”)中,神经网络至少会处于一个稍微不同的状态,而以某种方式 “提醒” 它某个特定的例子对于让它 “记住那个例子” 是很有用的。(是的,也许这类似于人类记忆中的重复的有用性)。
但往往只是反复重复同一个例子是不够的。还需要向神经网络展示这个例子的变化。而神经网络理论的一个特点是,这些 “数据增强” 的变化不一定要复杂才有用。只要用基本的图像处理方法稍微修改一下图像,就可以使它们在神经网络训练中基本上 “像新的一样好”。同样,当人们没有实际的视频等来训练自动驾驶汽车时,人们可以继续从模拟的视频游戏环境中获得数据,而不需要实际的真实世界场景的所有细节。
像 ChatGPT 这样的东西如何呢?嗯,它有一个很好的特点,那就是它可以进行 “无监督学习”,这使得它更容易得到用于训练的例子。回顾一下,ChatGPT 的基本任务是找出如何继续它所给的一段文字。因此,为了获得 “训练实例”,我们所要做的就是获得一段文本,并将其结尾遮盖起来,然后将其作为 “训练的输入” —— “输出” 是完整的、未被遮盖的文本。我们稍后会详细讨论这个问题,但主要的一点是,与学习图片中的内容不同,不需要 “明确的标签”;ChatGPT 实际上可以直接从它所得到的任何文本例子中学习。
好吧,那么神经网络的实际学习过程是怎样的呢?归根结底,这都是为了确定什么权重能够最好地捕捉所给的训练实例。有各种详细的选择和 “超参数设置”(之所以被称为超参数,是因为可以把权重看作是 “参数”),可以用来调整如何完成这一过程。
有不同的损失函数选择(平方之和、绝对值之和,等等)。有不同的方法来进行损失最小化(每一步要在权重空间中移动多远,等等)。然后还有一些问题,比如要展示多大的 “一批” 例子来获得每一个试图最小化的损失的连续估计。而且,是的,人们可以应用机器学习(例如,我们在 Wolfram 语言中所做的)来实现机器学习的自动化 —— 自动设置超参数等东西。
但最终,整个训练过程的特点是看到损失是如何逐渐减少的(如这个 Wolfram Language 的小型训练的进度监视器):

输入是一个由 n 个标记组成的向量(如上一节所述,由 1 到 50,000 的整数表示)。这些标记中的每一个都被(通过单层神经网络)转换成一个嵌入向量(GPT-2 的长度为 768,ChatGPT 的 GPT-3 为 12,288)。同时,还有一个 “二级路径”,它将标记的(整数)位置序列,并从这些整数中创建另一个嵌入向量。最后,来自令牌值和令牌位置的嵌入向量被加在一起 —— 产生嵌入模块的最终嵌入向量序列。
为什么只是把令牌值和令牌位置的嵌入向量加在一起?我不认为这有什么特别的科学依据。只是各种不同的东西都被尝试过,而这是一个似乎有效的方法。这也是神经网络传说的一部分,从某种意义上说,只要你的设置是 “大致正确的”,通常就可以通过做充分的训练来确定细节,而不需要真正 “在工程层面上理解” 神经网络最终是如何配置它的。
下面是嵌入模块所做的工作,对字符串 “hello hello hello hello hello bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye 2”:

采用 64×64 的移动平均数,一些(随机漫步式的)结构开始出现:

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

我们在上面看到的另一个例子是基于代表植物和动物的词。但这两种情况下的重点是,“语义相似的词” 被放在附近。
作为另一个例子,这里是对应于不同语音部分的词是如何布置的:

而且,是的,即使当我们投射到二维时,往往至少有一个 “平坦性的暗示”,尽管它肯定不是普遍可见的。
那么,轨迹呢?我们可以看看 ChatGPT 的提示在特征空间中的轨迹 —— 然后我们可以看看 ChatGPT 是如何延续这个轨迹的:

这是一个三维表示,总共走了 40 步:

而且,是的,这似乎是一团糟 —— 并没有做任何事情来特别鼓励这样的想法,即我们可以期望通过经验性地研究 “ChatGPT 在里面做什么” 来确定 “类似数学物理学的”“运动语义法则”。但也许我们只是看了 “错误的变量”(或错误的坐标系),只要我们看了正确的变量,我们就会立即看到 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研究局,版权属于原作者,仅用于学术分享
相关文章









猜你喜欢
成员 网址收录40418 企业收录2986 印章生成263660 电子证书1157 电子名片68 自媒体105939