ChatGPT 是如何工作的:训练
现在我们已经概述了 ChatGPT 建立后的工作情况。但它是如何建立的呢?它的神经网络中的1750亿个权重是如何确定的?基本上,它们是大规模训练的结果,基于人类编写的大量文本(在网络上、书籍中等)。
正如我们所说,即使考虑到所有训练数据,神经网络是否能够成功生成“类人”文本也根本不明显。 再一次,看起来需要详细的工程才能实现这一目标。但ChatGPT最大的惊喜和发现就是它是可能的。事实上,“仅”具有 1750 亿个权重的神经网络就可以为人类书写的文本建立“合理的模型”。
在现代,人类书写的许多文本都以数字形式存在。公共网络至少包含人类编写的数十亿个页面,总计可能有一万亿字的文本。如果包括非公共网页,这些数字可能至少要大 100 倍。迄今为止,已有超过 500 万本数字化图书(已出版的图书约 1 亿本),另外还有约 1000 亿文本。
作为个人比较,我一生发表的材料还不到300万字。在过去的30年里,我在电子邮件中写了大约1500万字,并写了大约5000万字。过去几年,我在直播中说过的话超过1000万字。是的,我想用所有这些来训练一个机器人)。
但是,好吧,考虑到所有这些数据,我们如何从中训练神经网络呢?基本过程与我们在上面的简单示例中讨论的非常相似。您提出一批示例,然后调整网络中的权重,以使网络在这些示例上的错误(“损失”)最小。错误“反向传播”的主要问题是,每次执行此操作时,网络中的每个权重通常都会至少发生一点变化,并且有很多权重需要处理。 (实际的“反向计算”通常只是比正向计算更困难的一个小常数)。
使用现代 GPU 硬件,可以轻松并行计算数千个示例的结果。但当涉及到实际更新神经网络中的权重时,当前的方法基本上要求我们批量进行。 (是的,可能是大脑本身 - 它的计算和记忆元素的组合 - 目前至少具有一项架构优势)。
即使在我们之前讨论的学习数字特征的看似简单的情况下,我们发现我们经常必须使用数百万个示例才能成功训练网络,至少从头开始。那么这意味着我们需要多少个例子来训练“类人语言”模型?似乎没有基本的“理论”认识方式。但在实践中,ChatGPT 已经成功地对数千亿个文本单词进行了训练。
有些文本会输入多次,有些则只输入一次。但不知何故,它从它看到的文本中“得到了它需要的东西”。但考虑到要学习的文本量,需要多大的网络才能“学好”?同样,我们还没有一个基本的理论方法来解决这个问题。
最后 - 我们将在下面进一步讨论 - 人类语言可能具有某种“通用算法内容”以及人们通常在其中所说的内容。但问题就变成了神经网络在实现基于该算法内容的模型时的有效性如何。我们也不知道——尽管 ChatGPT 的成功表明它相当有效。
最后,我们可以注意到 ChatGPT 使用了数千亿个权重 - 它的作用可以与所给训练数据的单词(或标记)总数进行比较。 在某些方面,也许令人惊讶(尽管在 ChatGPT 的小型类似物中也有经验观察),似乎运行良好的“网络大小”与“训练数据大小”如此相似。这当然并不意味着来自网络、书籍等的所有文本都将“直接保存在”ChatGPT 中。因为 ChatGPT 内部实际上是一堆数字 - 精度略低于 10 位数字 - 这是所有这些文本整体结构的一种分布式编码。
换句话说,我们可以问人类语言的“有效信息内容”是什么以及通常用它表达什么。这是语言示例的原始语料库。然后是 ChatGPT 神经网络中的表示。这种表示可能远非“算法上最小”的表示(正如我们将在下面讨论的)。 但它是一种可以很容易被神经网络使用的表示形式。 在这种表示中,训练数据的“压缩”程度似乎很低;平均而言,似乎只需要不到一个神经网络权重即可承载一个单词的训练数据的“信息内容”。
当我们运行ChatGPT生成文本时,我们基本上需要使用每个权重一次。因此,如果有 n 个权重,我们就需要执行 n 个计算步骤 - 尽管实际上许多步骤通常可以在 GPU 上并行执行。但是,如果我们需要大约 n 个单词的训练数据来设置这些权重,那么根据我们上面所说的,我们可以得出结论,我们需要大约 n2 个计算步骤来训练网络 - 这就是为什么采用当前方法的人最终需要谈论数十亿美元的培训工作。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。