首先要解释的是,ChatGPT从根本上进行的工作是对已经得到的文本进行“合理的延续”,这里的“合理”是指在看到人们在数十亿个网页上写的东西之后,人们所期望产生的文字内容。在任何给定的时刻,ChatGPT都会有一定数量的文本输入,而其目标是为下一个要添加的标记(token)提供一个合适的选择。
具体而言,ChatGPT接收到一个文本序列作为输入,并通过对已有文本的理解和学习,生成下一个标记。标记可以是单词、短语或字符,这取决于所处理的文本类型和任务。ChatGPT会基于之前的文本内容、上下文和模型内部的状态来预测下一个标记。它利用之前学到的语言模式、上下文信息和训练过程中的优化,来生成一个合理的、连贯的文本延续。这个过程是逐步进行的,每次生成一个标记后,它会被添加到当前文本序列中,成为新的上下文,然后用作下一个标记的依据。ChatGPT通过这种方式逐步生成文本,以达到“合理”延续文本的目标。
假设我们有这样一句话,“The best thing about AI is its ability to……”(人工智能的优势是它在……方面的能力)。想象一下,计算机扫描数十亿页人类书写的文本(例如网页和电子书),并找到这个文本的所有实例,然后看什么词在接下来的时间里出现了多少。ChatGPT有效地做了类似的事情。最终,ChatGPT产生了一个可能紧随其后的词的排序列表,以及“概率”[1]:
图片出处参见注释
当ChatGPT做一些事情,比如写一篇文章时,它所做的基本上只是一遍又一遍地问:“鉴于目前的文本,下一个词应该是什么?”然后每次都会添加一个词。(更准确地说,它在添加一个“标记”,这可能只是一个词的一部分,这就是为什么它有时可以“编造新词”)。
然后ChatGPT会得到一个带有概率的单词列表。但是,它究竟应该选择哪一个来添加到它正在写的文章中呢?有人可能认为应该是“排名最高”的词。但此时往往需要一点技巧。因为如果我们总是挑选排名最高的词,我们通常会得到一篇非常平淡的文章,文章没有任何创造力。但是,如果我们随机地挑选排名较低的词,则可能会得到一篇更有趣的文章。
这种随机性就意味着如果我们多次提问相同的内容或使用相同的关键词,基本每次都得到不同的文章。这里有一个特定的所谓“temperature”参数,它决定了多长时间会使用排名较低的词。对于生成论文,事实证明,选择0.8的“temperature”参数似乎是最好的。
ChatGPT的神经网络架构
仅知道了ChatGPT的工作流程还不够,题主应该也想问是什么在支持ChatGPT可以这样工作。
大家应该已经知道了,ChatGPT是一个巨大的,专门用于处理语言的神经网络,用的是GPT-3网络,它有1750亿个权重参数。它最显著的特点是用了transformer神经网络架构。Transformers特别适用于处理序列数据,比如自然语言文本。Transformer架构的关键思想是引入"attention"(注意力)机制,以允许网络更加聚焦和理解输入序列中不同位置的信息。传统的神经网络在处理序列数据时存在一些限制,比如长期依赖关系的捕捉和处理上下文信息的能力。而Transformer通过使用多头自注意力机制(Multi-headed Self-attention),使得网络能够在输入序列的不同位置自适应地分配注意力,并通过将不同位置的信息组合起来来更好地捕捉序列中的依赖关系。
因此,ChatGPT利用Transformer架构的优势,能够更好地理解和处理语言数据,并生成连贯、具有语义的文本。
ChatGPT的训练
首先是数据的供给,这在现代不叫事儿。公共网络上至少有数十亿人类编写的页面,总共可能有万亿字的文本。到目前为止,已经有超过500万本数字化图书可供使用,提供了大约1000亿字的文本,这还不算从视频等媒介中获取的语音文本。
有了这些数据,我们如何从中训练一个神经网络呢?基本过程大概是:提供一批示例,然后调整网络中的权重参数,以使网络在这些示例上的误差("损失")最小化。从误差进行"反向传播"的最麻烦的地方在于每次这样做时,网络中的每个权重通常都会至少微小地改变,而且有很多权重需要处理。
使用现代GPU,可以很容易地并行计算数千个批次的示例结果。但是,当涉及实际更新神经网络中的权重时,当前的方法就只能逐批次进行。
为了训练一个"类似于人类语言"的模型到底需要多少示例,从根本上说,似乎没有任何"理论上"的方法可以知道。但至少实践表明,ChatGPT在几百亿个单词的文本上进行了成功训练。
最后我们可以注意到,ChatGPT使用了数千亿个权重来完成其任务,这个数量与其所接收的训练数据的总字数(或标记)相当。"神经网络的参数数量"与"训练数据大小"如此相近是挺令人惊讶的。毕竟,ChatGPT内部肯定不是"直接存储"了来自网络、书籍等的所有文本。因为在ChatGPT里面的实际上是一堆数字--精度略低于10位--是对所有这些文本的总体结构的某种分布式编码。
这说明,在ChatGPT神经网络对人类语言的“有效信息内容”的表示中,训练数据似乎没有经过太多的"压缩"。平均而言,似乎基本上只需要不到一个神经网络权重来承载一个训练数据的"信息内容"。
当我们运行ChatGPT生成文本时,基本上需要使用每个权重一次。因此,如果有n个权重,我们需要约n个计算步骤。尽管在实践中,其中很多可以在GPU中并行进行。但是如果我们需要大约n个单词的训练数据来设置这些权重,那么根据我们上面所说的,需要约n²个计算步骤来进行网络的训练。所以,训练像ChatGPT这样的大规模神经网络需要巨大的计算资源和经济投入,入场门槛极高,希望场内玩家们来都来了,就别匆匆入场,潦草收场。
ChatGPT是如何工作的
最新推荐文章于 2024-08-23 16:49:02 发布