我们如何为神经网络设置这个问题?归根结底,我们必须用数字来表述一切。做到这一点的一个方法就是为英语中 5 万个左右的常用词中的每一个分配一个独特的数字。因此,例如,“the” 可能是 914,而 “cat”(前面有一个空格)可能是 3542。(这些是 GPT-2 所使用的实际数字。)所以对于 “the _ cat” 问题,我们的输入可能是{914, 3542}。输出应该是什么样子的呢?好吧,它应该是一个由 50000 个左右的数字组成的列表,有效地给出了每个可能的 “填充” 单词的概率。
再一次,为了找到一个嵌入,我们要在神经网络 “达到结论” 之前 “拦截” 它的 “内部” —— 然后捡起在那里出现的数字列表,我们可以把它看作是 “每个词的特征”。
好吧,那么这些表征是什么样子的呢?在过去的 10 年里,已经有一系列不同的系统被开发出来(word2vec, GloVe, BERT, GPT, …… ),每一个都是基于不同的神经网络方法。但最终,所有这些系统都是通过数百到数千个数字的列表来描述单词的特征。
在它们的原始形式中,这些 “嵌入向量” 是相当无信息的。例如,这里是 GPT-2 产生的三个特定词的原始嵌入向量:
如果我们做一些事情,比如测量这些向量之间的距离,那么我们就可以发现像单词的 “接近性” 这样的东西。稍后我们将更详细地讨论我们可能认为这种嵌入的 “认知” 意义。但现在主要的一点是,我们有一种方法可以有效地将单词变成 “神经网络友好” 的数字集合。
但实际上,我们可以更进一步,不仅仅是用数字的集合来描述单词;我们还可以对单词的序列,或者整个文本块进行描述。在 ChatGPT 中,它就是这样处理事情的。
它把目前得到的文本,生成一个嵌入矢量来表示它。然后,它的目标是找到接下来可能出现的不同词汇的概率。它将其答案表示为一个数字列表,该列表基本上给出了 50,000 个左右的可能词汇的概率。
(严格地说,ChatGPT 不处理单词,而是处理 “符号” (token)—— 方便的语言单位,可能是整个单词,也可能只是 “pre” 或 “ing” 或 “ized” 这样的片段。使用符号使 ChatGPT 更容易处理罕见的、复合的和非英语的词汇,有时,无论好坏,都可以发明新的词汇。)
好了,我们终于准备好讨论 ChatGPT 内部的内容了。是的,最终,它是一个巨大的神经网络 —— 目前是所谓的 GPT-3 网络的一个版本,有 1750 亿个权重。在许多方面,这是一个非常像我们讨论过的其他神经网络。但它是一个特别为处理语言问题而设置的神经网络。
服务热线
1391-024-6332