输入“/”快速插入内容

ChatGPT为什么它能够成功

2024年4月10日修改
ChatGPT是以“词”为单位进行文本生成的
ChatGPT能够自动生成看起来很像人类写作的文本,这非常了不起且出乎意料。但是它是如何做到的?我的目的在于概述ChatGPT内部进行的过程,然后探讨它为什么能够成功地生成我们认为有意义的文本。我首先声明,我将集中讨论整体情况,并提到一些工程细节,但不会深入探讨它们。同时,我说的要点同样适用于其他当前的“大型语言模型”(LLMs),不仅仅限于ChatGPT。
首先要解释的是,ChatGPT始终基本上是在尝试生成“文本的合理延续”,这个延续是基于已有的文本,其中“合理”的意思是“在查看了数十亿个网页等人类编写的文本之后,我们可能会期望某个人会写下这样的内容。”
因此,我们假设已有文本为“人工智能最专长的一点是...”【原ChatGPT译文:“人工智能最好的一点在于其能力”,这虽然符合原意,但是翻译成中文后由于改变了词语顺序,在此处意思不对了】,然后想象一下扫描数十亿个人类编写的文本(例如网络内容和数字化书籍),找到所有这些文本的实例,看看下一个单词出现的频率是多少。ChatGPT实际上做了一些类似的事情,但(如我将解释的那样)它不是直接查看文字,而是寻找在某种意义上“匹配”内容。无论如何,最终它生成了一个排名,列出可能跟随文本的单词和它们的“概率”:
令人惊奇的是,ChatGPT尝试写一篇文章时,基本上只是一次又一次地询问“在已有的文本基础上,下一个单词应该是什么?” ,然后每次都添加一个单词。(更准确地说,如我所解释的那样,它添加的是一个“标记”【注:token】,这可能仅仅是一个单词的一部分,这也是为什么它有时会“创造出新词语”的原因。)【注:比如说对于“apple”这个单词,ChatGPT可能先生成“app”,然后再接上“le”。这样就有机会生造出"bananapple" 这样不存在的词。ChatGPT生成的最小的单元近似于一个Unicode,也就是原则上ChatGPT可以生成互联网上所有国家的文本,包括emoji和各类颜表情,以及它们的所有组合】
每一步,ChatGPT都会生成一个带有概率的单词列表。但是,它应该选择哪一个单词添加到正在写的文章(或其他内容)中呢?人们可能认为应该选择“排名最高”的单词(即被分配了最高“概率”的单词)。但是在这里,一些巫术开始悄悄渗入进来。因为由于某种原因(也许有一天我们会科学地理解它),如果我们总是选择排名最高的单词,我们通常会得到一篇非常“平淡”的文章,似乎从来没有“展现出任何创造力”(甚至有时完全重复)。但是如果有时(随机地)选择排名较低的单词,我们就能得到一篇“更有趣”的文章。
这里有随机性意味着,如果我们多次使用相同的提示,我们可能每次都会得到不同的文章。并且,符合巫术思想的是【注:就像炼丹一样,莫名其妙的配方产生了特别好的效果】,有一个特定的所谓“温度”参数,它控制了较低排名的单词会被使用的频率。对于文章生成,我们发现“温度”为0.8效果最好。(值得强调的是,这里没有使用任何“理论”,而只是基于实践的发现。例如,这里的“温度”的概念,对应于统计物理学中熟悉的指数分布上的温度,但至少就我们所知,这两个温度没有“物理”上的联系。)
在继续之前,我应该解释一下,为了方便演示,我文章的大部分内容不会使用ChatGPT中的完整系统;相反,我通常会使用更简单的GPT-2系统,这个系统的优点在于它足够小,可以在标准台式电脑上运行。因此,我将能够为我所展示的基本上所有内容提供明确的 Wolfram 语言代码,您可以立即在计算机上运行它们。【此处ChatGPT显然不能意识到这不是原来网页,忠诚地翻译了“(单击此处的任何图片即可复制其背后的代码。)”】
例如,以下是如何获取上述概率表。首先,我们必须先获取一个类似ChatGPT的“语言模型”,它是一个神经网络【由于“看”不到下面的图片,ChatGPT原来的翻译崩了】:
这个模型是GPT-2,ChatGPT目前基于GPT3.5
稍后,我们将深入研究这个神经网络,讨论它的工作原理。但是现在,我们可以将这个“网络模型”作为黑匣子【注:这里意思是我们只关心如何输入输出,但对中间的过程一无所知】应用于我们已有的文本中,然后询问模型预测的前5个概率最高的单词:
我们可以把结果转成一个数据表格,这样看的更加清楚:【ChatGPT翻译原文:这将结果转换为明确的格式化“数据集”】:
如果一次次地“应用模型”,每次都添加具有最高概率的单词(这个代码中被指定为模型生成文本的“策略”),会发生什么?
如果继续下去会发生什么?在这种情况下(“零温度”),结果很快就变得混乱和重复【满篇空话大话和车轱辘话】:
但是,如果不总是选择“最佳”的单词,而是有时随机选择“非最佳”单词(与“温度”0.8对应的“随机性”)呢?同样,可以构建文本: