ChatGPT 的原始输入是一个数字数组(到目前为止符号的嵌入向量),当 ChatGPT“运行” 以产生一个新的符号时,所发生的只是这些数字 “通过” 神经网的各层,每个神经元 “做它的事”,并将结果传递给下一层的神经元。没有循环或 “回头”。一切都只是通过网络 “前馈”。
这是一个与典型的计算系统 —— 如图灵机 —— 非常不同的设置,在图灵机中,结果是由相同的计算元素反复 “再处理” 的。在这里,至少在生成一个特定的输出符号时,每个计算元素(即神经元)只被使用一次。
但在某种意义上,即使在 ChatGPT 中,仍然有一个重复使用计算元素的 “外循环”。因为当 ChatGPT 要生成一个新的标记时,它总是 “读取”(即作为输入)它之前的整个标记序列,包括 ChatGPT 自己之前 “写” 的标记。我们可以认为这种设置意味着 ChatGPT —— 至少在其最外层 —— 涉及到一个 “反馈循环”,尽管在这个循环中,每一次迭代都明确地显示为一个出现在其生成的文本中的标记。
但让我们回到 ChatGPT 的核心:反复用于生成每个标记的神经网络。在某种程度上,它非常简单:一整个相同的人工神经元的集合。网络的某些部分只是由(“完全连接”)的神经元层组成,其中某一层的每个神经元都与前一层的每个神经元相连(有一定的权重)。但是,特别是它的变压器结构,ChatGPT 有更多的结构部分,其中只有不同层的特定神经元被连接。(当然,人们仍然可以说,“所有的神经元都是连接的” —— 但有些神经元的权重为零)。
此外,ChatGPT 中的神经网的某些方面并不是最自然地被认为是由 “同质” 层组成的。例如,正如上面的图标摘要所示,在一个注意力区块中,有一些地方对传入的数据进行了 “多份拷贝”,然后每个拷贝经过不同的 “处理路径”,可能涉及不同数量的层,然后才重新组合。但是,虽然这可能是对正在发生的事情的一种方便的表述,但至少在原则上总是可以考虑 “密集地填入” 层,但只是让一些权重为零。
如果我们看一下 ChatGPT 的最长路径,大约有 400 个(核心)层参与其中 —— 在某些方面不是一个巨大的数字。但是有数以百万计的神经元 —— 总共有 1750 亿个连接,因此有 1750 亿个权重。需要认识到的一点是,每当 ChatGPT 生成一个新的令牌时,它都要进行涉及这些权重中每一个的计算。
在实现上,这些计算可以 “按层” 组织成高度并行的阵列操作,可以方便地在 GPU 上完成。但是,对于产生的每一个标记,仍然要进行 1750 亿次计算(最后还要多一点) —— 因此,是的,用 ChatGPT 生成一个长的文本需要一段时间,这并不令人惊讶。
服务热线
1391-024-6332