它只是一次添加一个词
ChatGPT可以自动生成一些表面上看起来像人类书写文本的东西,这是非常了不起的,也是出乎意料的。但是它是怎么做到的呢?为什么它有效?我在这里的目的是粗略概述 ChatGPT 内部发生的事情,然后探讨为什么它可以如此出色地生成我们认为有意义的文本。我应该在一开始就说,我将专注于正在发生的事情的大局——虽然我会提到一些工程细节,但我不会深入探讨它们。(我要说的内容的本质同样适用于其他当前的“大型语言模型” [LLM] 以及 ChatGPT。)
首先要解释的是,ChatGPT 一直在从根本上尝试做的是为它目前所获得的任何文本生成一个“合理的延续”,其中“合理”的意思是“人们可能期望某人在看到人们的内容后写下什么”已经在数十亿个网页上写过,等等。”
所以假设我们有文本“关于 AI 的最好的事情是它的能力”。想象一下扫描数十亿页的人工文本(比如在网络上和数字化书籍中)并找到该文本的所有实例——然后在几分之一的时间内查看下一个单词。ChatGPT 有效地做了类似的事情,除了(正如我将解释的)它不看文字文本;它寻找在某种意义上“意义匹配”的事物。但最终结果是它会生成一个可能跟在后面的单词的排名列表,以及“概率”:
值得注意的是,当 ChatGPT 做一些事情(比如写一篇文章)时,它本质上只是一遍又一遍地问“给定目前的文本,下一个词应该是什么?”——每次都添加一个词。(更准确地说,正如我将解释的那样,它添加了一个“标记”,它可能只是单词的一部分,这就是为什么它有时可以“组成新单词”。)
但是,好吧,在每一步它都会得到一个带有概率的单词列表。但是它实际上应该选择哪一个来添加到它正在写的文章(或其他什么)中?人们可能认为它应该是“排名最高”的词(即分配给最高“概率”的词)。但这就是一点巫术开始蔓延的地方。因为某种原因——也许有一天我们会有一种科学风格的理解——如果我们总是选择排名最高的词,我们通常会得到一个非常“平淡”的文章,似乎从不“表现出任何创造力”(甚至有时逐字逐句地重复)。但如果有时(随机)我们选择排名较低的词,我们会得到一篇“更有趣”的文章。
这里存在随机性这一事实意味着,如果我们多次使用相同的提示,我们很可能每次都会得到不同的论文。并且,为了与巫术思想保持一致,有一个特定的所谓“温度”参数决定了低级别单词的使用频率,对于论文生成,事实证明 0.8 的“温度”似乎是最好的。(值得强调的是,这里没有使用“理论”;这只是发现在实践中起作用的问题。例如,“温度”的概念之所以存在,是因为碰巧使用了统计物理学中熟悉的指数分布,但没有“物理”联系——至少就我们所知是这样。)
在我们继续之前,我应该解释一下,出于说明的目的,我主要不会使用ChatGPT 中的完整系统;相反,我通常会使用一个更简单的GPT-2 系统,它具有一个很好的特性,即它足够小,可以在标准台式计算机上运行。因此,对于我展示的所有内容,我都能够包含您可以立即在您的计算机上运行的显式Wolfram 语言代码。(单击此处的任何图片以复制其背后的代码。)
例如,这里是如何获得上面的概率表。首先,我们必须检索底层的“语言模型”神经网络:
稍后,我们将深入了解这个神经网络,并讨论它是如何工作的。但是现在我们可以将这个“网络模型”作为一个黑盒子应用到我们的文本中,并按模型说应该遵循的概率要求前 5 个词:
这会获取该结果并将其变成一个明确格式化的“数据集”:
下面是如果重复“应用模型”会发生什么——在每一步添加具有最高概率的词(在此代码中指定为模型的“决定”):
如果持续更长时间会发生什么?在这种(“零温度”)情况下,很快就会出现相当混乱和重复的情况:
但是,如果不是总是选择“顶级”词,而是有时随机选择“非顶级”词(“随机性”对应于“温度”0.8)怎么办?同样可以构建文本:
每次这样做时,都会做出不同的随机选择,文本也会不同——如以下 5 个示例所示:
值得指出的是,即使在第一步,也有很多可能的“下一个词”可供选择(温度为 0.8),尽管它们的概率下降得很快(而且,是的,这个对数对数图上的直线对应于n –1 “幂律”衰减,这是语言一般统计数据的典型特征):
那么,如果持续时间更长会怎样?这是一个随机的例子。它比顶级(零温度)情况要好,但充其量还是有点奇怪:
这是使用最简单的 GPT-2 模型(从 2019 年开始)完成的。使用更新更大的 GPT-3 模型,结果更好。这是使用相同的“提示”但使用最大的 GPT-3 模型生成的顶级词(零温度)文本:
这是“温度 0.8”的随机示例:
(注:请查看原文:https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/ )