Lazy loaded image
ChatGPT的训练办法
字数 2957阅读时长 8 分钟
2023-12-4
2023-12-4
type
Post
status
Published
date
Dec 4, 2023
slug
summary
我们现在已经概述了 ChatGPT 设置后的工作原理。但它是如何设置的呢?神经网络中所有 1750 亿个权重是如何确定的?基本上,它们是大规模训练的结果,基于人类编写的大量文本(在网络上、书籍中等)。
tags
推荐
ChatGPT相关
AI教程
AI知识库
category
ChatGPT
icon
password
Files & media

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 个单词的训练数据来设置这些权重,那么从上面所说的我们可以得出结论,我们需要大约2 个计算步骤来进行网络训练 - 这就是为什么,按照目前的方法,最终需要花费数十亿美元的培训费用。

超越基础训练

训练 ChatGPT 的大部分精力都花在“向其展示”来自网络、书籍等的大量现有文本上。但事实证明,还有另一个(显然相当重要)部分。
一旦完成了来自所显示的原始文本语料库的“原始训练”,ChatGPT 内部的神经网络就准备好开始生成自己的文本,继续提示等。但是,虽然由此产生的结果通常看起来是合理的,尤其是对于较长的文本,它们往往会以非人类的方式“走开”。这不是人们可以通过对文本进行传统统计等方式轻易检测到的东西。但这是实际阅读文本的人很容易注意到的事情。
ChatGPT 构建的一个关键想法是在“被动阅读”网络之类的东西之后再迈出一步:让真实的人类主动与 ChatGPT 交互,看看它产生什么,并实际上给它反馈“如何成为一个好的聊天机器人”。但神经网络如何使用该反馈呢?第一步只是让人类对神经网络的结果进行评分。但随后建立了另一个神经网络模型来尝试预测这些评级。但现在这个预测模型可以在原始网络上运行(本质上就像损失函数一样),实际上允许该网络通过所给出的人类反馈进行“调整”。实践结果似乎对系统能否成功产生“类人”输出有很大影响。
总的来说,有趣的是,似乎只需要很少的“刺探”“最初训练的”网络就可以使其有效地朝特定方向发展。人们可能会认为,要让网络表现得好像“学到了新东西”,就必须运行训练算法、调整权重等。
但事实并非如此。相反,基本上告诉 ChatGPT 一次就足够了——作为您给出的提示的一部分——然后它可以在生成文本时成功地利用您告诉它的内容。我认为,这个有效的事实是理解 ChatGPT “真正在做什么”以及它如何与人类语言和思维结构相关的重要线索。
它肯定有一些与人类相似的东西:至少一旦它接受了所有的预训练,你只需告诉它一次,它就可以“记住它”——至少“足够长”以使用它生成一段文本。那么像这样的情况是怎么回事呢?可能是“你可能告诉它的一切都已经在某个地方了”——而你只是将它引导到正确的位置。但这似乎不太合理。相反,似乎更有可能的是,是的,元素已经在那里,但具体细节是由“这些元素之间的轨迹”之类的东西定义的,这就是你在告诉它一些东西时所引入的内容。
事实上,就像人类一样,如果你告诉它一些奇怪和意想不到的东西,完全不适合它所知道的框架,它似乎无法成功地“整合”这一点。只有当它基本上以相当简单的方式运行在已有的框架之上时,它才能“集成”它。
还值得再次指出的是,神经网络可以“拾取”的内容不可避免地存在“算法限制”。告诉它“从这个到那个”等形式的“浅层”规则,神经网络很可能能够很好地表示和再现这些规则——事实上,它从语言中“已经知道”的东西会给它一个立即遵循的模式。但是,尝试为其提供实际“深度”计算的规则,该计算涉及许多潜在的计算上不可简化的步骤,但它是行不通的。(请记住,在每一步中,它始终只是在网络中“向前馈送数据”,除了生成新令牌之外,不会循环。)
当然,网络可以学习特定“不可约”计算的答案。但一旦存在组合数的可能性,这种“查表式”方法就不起作用了。所以,是的,就像人类一样,现在是神经网络“伸出援手”并使用实际计算工具的时候了。(是的,Wolfram|Alpha和Wolfram 语言非常适合,因为它们是为了“谈论世界上的事情”而构建的,就像语言模型神经网络一样。)
上一篇
一个足够大的网络可以做任何的事情
下一篇
ChatGPT真正发挥的作用是什么呢?