如何训练和应用GPT助手:从微软Build 2023大会解读

释放双眼,带上耳机,听听看~!
本文解读了微软Build 2023大会上OpenAI创始成员Andrej Karpthy的专题演讲,详细介绍了如何训练和应用GPT助手,以及GPT助手与人脑认知的差异和如何弥补。

在刚刚过去的微软 Build 2023 开发者大会上,OpenAI的创始成员、前特斯拉高级 AI 总监 Andrej Karpthy 做了一个专题演讲:State of GPT(GPT 的现状)。

该演讲总共可分为两个部分:

  • 第一部分:如何训练一个 GPT 助手;
  • 第二部分:如何有效应用 GPT 助手。

作为一篇图文笔记,本文撰写的主要目的是:

  • 对该演讲内容的精华部分进行提炼和组织,方便读者学习
  • 对有一定理解难度的知识点做了补充(※标记),方便读者理解

通过阅读本文,你将:

  1. 了解一个GPT模型是如何被训练出来的;
  2. 理解GPT与人脑的认知差异,以及如何弥补这种差异;
  3. 获知采取哪些措施可以提高GPT的成功率;
  4. 知晓如何微调GPT以更好地适应我们的任务。

先奉上思维导图一张,方便复习:

如何训练和应用GPT助手:从微软Build 2023大会解读

(本演讲的在线观看地址以及演讲PPT地址均在文末,可自取。)

如何训练 GPT 助手

要训练一个 GPT 助手,大致需要经历以下四个阶段:

  1. 预训练
  2. 监督微调
  3. 奖励建模
  4. 强化学习

其中,预训练阶段是计算工作主要发生的地方,约占所有计算时间的99%。

这个阶段我们会在超级计算机中、使用数千个 GPU 、经历数月的训练,来处理海量的互联网数据集。

另外三个阶段则属于微调阶段,更多遵循少量 GPU 、数小时或数天的路线。

预训练

如何训练和应用GPT助手:从微软Build 2023大会解读

预训练的目标是实现一个「基础模型」,步骤如下:

数据收集

数据收集是一个从公开可用的数据源下载大量的数据的过程

如何训练和应用GPT助手:从微软Build 2023大会解读

以 Meta 发布的 Llama 模型为例,其采用的数据源除了主要的网络爬取数据(common crawl、C4)外,还包含一些高质量的数据集(如GitHub、维基百科等)。

这些数据会混合在一起,然后按比例进行采样,就形成了 GPT 神经网络的训练数据集

而在实际训练这些数据之前,我们还需要再经过一个预处理步骤,即——

标记化(tokenization)

标记化是一个将互联网原始文本翻译成整数序列的过程。

如何训练和应用GPT助手:从微软Build 2023大会解读

之所以要标记化,是因为整数序列才是 GPT 运行的原生表示。我们通常会使用字节编码之类的手段,迭代地合并小文本块,并把它们分组为标记(Token)。

※ 可以简单理解为整数序列就是 GPT 世界的语言,因为机器学习算法通常只能接受数值型的输入和输出,将文本数据编码成有意义且易于计算的数值,才能让神经网络理解和处理。

训练出的标记数量常作为衡量模型能力的标准之一

以下就展现了两个示例模型的对比:

如何训练和应用GPT助手:从微软Build 2023大会解读

其中涉及的几项超参数分别是:

  • 词汇量(Vocabulary size)
  • 上下文长度(Context length):决定了 GPT 在尝试预测序列中的下一个整数时将查看的最大整数数
  • 参数(Parameters)
  • 标记(Token)

尽管 Llama 在参数数量上少于 GPT3 ,但 Llama 实际是一个更强大的模型,因为该模型的训练时间更长,训练出的标记数量更多。

※ 参数是机器学习模型的内部变量,通常是一些数值,比如权重、系数等。参数的数量反映了模型的复杂度和灵活度,通常越多的参数意味着越强大的模型,但也可能导致过拟合或计算开销过大的问题。

※ 标记的数量和类型取决于模型采用的标记化算法以及词汇量的大小,一般来讲,能训练出的标记越多,意味着其用于训练的文本数据也就越多,也就意味着其学习到了更多的知识和模式,从而提高了其预测和生成的能力。

标记化完成之后,就进入了实际的预训练,而预训练过程的第一步操作就是,把标记化过程产生的原始整数序列——

输入Transformer

将数据输入到 Transformer 神经网络的过程是分批次进行的,每个训练批次都被打包成了一个大小为B,长度为T的形状数组,其中:

  • B是批次大小,表示每个批次中独立示例的行数;

  • T是最大上下文长度,表示 Transformer 可以查看的最大标记数。

如何训练和应用GPT助手:从微软Build 2023大会解读

在这之后,就是预训练过程的第二步操作——

预测序列中的下一个标记

以图中随机高亮的绿色单元格为例。

如何训练和应用GPT助手:从微软Build 2023大会解读

绿色单元格会查看在它前面的所有标记,以作为它的上下文,即图中的黄色单元格。

而它的目标,则是预测序列中的下一个标记,即图中的红色单元格。

※ 本质上,这就是语言建模所做的事情,也就是预测下一个最有可能出现的单词。

在这个特定的例子中,513 将是下一个标记,因此我们可以将其用作监督源来更新Transformer的权重。

※ 这句话的意思是说,提升513标记所对应的原始单词,在下一个最有可能出现的单词中的概率。

我们将同样的做法应用于每个单元格,并且不断交换批次,试图让Transformer对序列中标记都能做出正确的预测,也即——

重复以上预训练过程

如何训练和应用GPT助手:从微软Build 2023大会解读

我们以在莎士比亚上训练一个小型 GPT 为例,你将看到以下演变过程:

  1. 完全随机的输出

在初始化时,GPT 将以完全随机的权重开始,因此也将获得完全随机的输出。

  1. 愈发连贯与一致

随着训练 GPT 的时间越来越长,我们会从模型中获得越来越连贯与一致的样本。

  1. 已学会遣词造句

到最后,你会发现Transformer已学会了单词,以及在哪里放置标点符号了。

这个过程,用一张可视化的图来表示就是:

如何训练和应用GPT助手:从微软Build 2023大会解读

这张图实际描述的是训练时随着时间变化的损失函数曲线,可以看到,两个示例模型的曲线趋势都在逐渐趋于平稳。

低损失意味着Transformer的预测正趋于正确,也即为正确预测序列中的下一个整数提供了更高的概率

这样训练了一个月后,我们会注意到,这些基础模型基本上都学习了非常强大的通用表示,可以有效地微调它们以适用于任何我们感兴趣的下游任务,也就是——

在小型监督数据集上微调模型

如何训练和应用GPT助手:从微软Build 2023大会解读

以情感分类为例。过去的方法是收集一堆正面和负面的情感信息,然后以此训练某种 NLP 模型。

但新方法则是忽略情感分类这一步,直接进行大型语言模型的预训练,训练出大型Transformer,然后利用几个例子有效地微调我们的模型

这样做的原因,是因为Transformer 被迫在语言建模过程中同时处理大量任务,仅仅为了预测下一个标记,它就得被迫去了解很多关于文本的结构和其中的不同概念

这其实就是 GPT-1 。

※ 旧方法就像是你给你的孩子灌输罗密欧与朱丽叶之类的爱情故事,具象化地告诉他爱情是什么;

而新方法就像你先让你的孩子自己去经历各种爱情,从而提升其对于爱情的认知,然后再根据他遇到的具体问题,给他一些针对性的建议和指导。

旧方法可以让孩子对某个故事有自己深刻的理解,但可能无法适应其他情况;

而新方法可以让孩子有更广泛和灵活的视野,但需要更多的时间和资源。

而到了 GPT-2 ,人们发现,相较于微调模型,更好的方式应该是——

提示模型以引导其完成任务

简单讲,就是通过提示工程,让模型误以为它其实是在完善文档,从而让它执行特定的任务

比如以下这个例子。

如何训练和应用GPT助手:从微软Build 2023大会解读

我们提供一些段落,然后以问答形式注入提示,当 Transformer 试图完善文档时,它实际上是在回答我们的问题,于是我们就得到了类似ChatGPT的问答助手。

我们可以用这种“欺骗”的手段,使基础模型自我调整为一个有用的助手,具体方法如下:

  1. 让模型看起来像是在完善文档
  2. 提供少量样本的提示
  3. 将要查询的问题放在最后
  4. 模型将完成任务,生成某种答案

如何训练和应用GPT助手:从微软Build 2023大会解读

监督微调

如何训练和应用GPT助手:从微软Build 2023大会解读

监督微调的目标是实现一个「SFT(Supervised Finetuning 监督微调)模型」。

相较于预训练阶段量多但低质的数据集,在这个阶段,我们将收集量少但优质的数据集,比如问答数据。

然后仍对这些数据进行语言建模的步骤,训练之后,我们就得到了一个SFT模型,我们可以实际部署这些模型,它们是真正的“助手”。

奖励建模

如何训练和应用GPT助手:从微软Build 2023大会解读

奖励建模的目标是实现一个「RM(Reward Modeling 奖励建模)模型」。

在这个步骤中,我们要做的,就是将数据收集转变为比较形式。

具体来说,就是采用已经训练过的 SFT 模型,创建多个补全,然后要求人们对这些补全选项进行排名

如何训练和应用GPT助手:从微软Build 2023大会解读

以类似二元分类的形式来解释也许会更清晰一点。

如何训练和应用GPT助手:从微软Build 2023大会解读

在这个图中:

  • 蓝色是提示标记,各行之间都相同;
  • 黄色是补全标记,都来自于 SFT 模型,但每一行都不同;
  • 绿色是在最后附加的特殊的奖励读出标记,为Transformer对每个补全的质量进行猜测提供了依据,从而进行排名。

我们可以强制指定其中一些数字比其他数字高得多,将这些规则制定为损失函数,并训练我们的模型,使得模型做出与人类比较事实数据的过程相一致的奖励预测

现在我们有了一个奖励模型,就可以对任意提示给出的补全质量进行评分了。

强化学习

如何训练和应用GPT助手:从微软Build 2023大会解读

强化学习的目标是实现一个「RL(Reinforcement Learning
)模型」。

在这个阶段所做的,基本上就是再次获得大量提示,然后利用奖励模型给出提示每一次补全的质量,从而权衡语言建模的目标

例如在以下这个例子中:

如何训练和应用GPT助手:从微软Build 2023大会解读

  • 行#1的补全质量很棒,将使他们往后的出现概率有所提升。
  • 行#2的补全质量很差,将使他们往后的出现概率有所减少。
  • 行#3的补全质量还行,将使他们往后的出现概率略有提高。

我们会在很多提示、很多批次上一遍又一遍地这样做,从而得到一个创建补全标记的策略,让所有补全标记都能在前一阶段训练的奖励模型下获得高分。

这种训练方式就是——RLHF(基于人类反馈的强化学习)。

与基础模型和 SFT 模型相比,人们更青睐于 RLHF 模型,因为它工作得更好。

这是因为,相较于生成内容,评判好坏显然是一项更容易的工作,可以潜在地利用人的判断力来构建一个更好的模型

如何训练和应用GPT助手:从微软Build 2023大会解读

但是,RLHF 模型并不是在各方面都比基础模型要好。最显著的一点就是,RLHF模型失去了一些熵,输出的样本比基础模型变化更少

基础模型有更多熵,可以给出很多不同的输出,适用于需要生成更多类似东西的场景中

如何训练和应用GPT助手:从微软Build 2023大会解读

比如生成许多酷炫的宝可梦名字:

如何训练和应用GPT助手:从微软Build 2023大会解读

伯克利有一个团队就对许多可用的助手模型进行了排名,其中,排名前三的都是 RLHF 模型:

如何训练和应用GPT助手:从微软Build 2023大会解读

※ 可以用一个游戏的例子来类比这四个阶段之间的关系:

  • 预训练就像是让 Transformer 模型在一个没有固定规则和目标的开放世界游戏里自由探索,让它自己去认识游戏里的环境和元素。
  • 监督微调就像是让 Transformer 模型设定了一个主线任务,从而学习到游戏里的基本规则和技能。
  • 奖励建模就像是用一个额外的模型来给 Transformer 模型玩游戏的表现打分,比如根据完成时间或错误次数来评价。
  • 强化学习就像是用奖励建模得到的分数来指导 Transformer 模型玩游戏的策略,让它能够玩得更好。

如何有效应用 GPT 助手

认知差异

人脑和GPT这两种架构是存在认知差异的。

比如当我们要写一篇文章来论证“加州的人口是阿拉斯加的 53 倍”时,人脑采用的方式常常是结合了内心独白和参考资料的反复验证、反复纠错。

如何训练和应用GPT助手:从微软Build 2023大会解读

而从 GPT 的角度来看,这些内容都只是一个标记序列,并且它只会拿最后的推理结果作为训练数据。

※ 这句话的意思是,在训练 LLM 的时候,只使用了最后的结果作为数据,而没有使用中间的思考过程或推理过程。这就意味着 LLM 只能模仿结果,而不能模仿过程。

这是因为,GPT 本质就是一个“标记模拟器”,它的缺点很明显,就是——

  • 不清楚自己的知识边界
  • 不知道自己擅长什么
  • 不会反复检查任何东西
  • 不会纠正自身错误

它所做的,就只是尽力预测下一个标记。

如何训练和应用GPT助手:从微软Build 2023大会解读

但它也确实存在某部分优势,比如:

  • 知识广度:拥有大量基于事实的知识,涵盖了大量领域
  • 自注意力机制:拥有工作记忆,可以结合上下文内容,并分清楚内容的不同权重

要弥补这种认知诧异,有两种方式很有效,第一种是——

善用提示

我们不能要求Transformer在很少标记的情况下,回答一个非常复杂的问题,它需要更多标记来辅助思考。

这段话的意思是,如果你想让 Transformer 做一些需要逻辑判断的任务,那么你就必须要用更多的单词来表达你的意思,让 Transformer 更容易理解。

如何训练和应用GPT助手:从微软Build 2023大会解读

为此,我们可以向Transformer提供一个“few-shot prompt(少量样本提示)”,也即给出几个示例模板,Transformer将仿照这些模板,从而产出更好的结果。

此外,还可以通过说“let’s think step by step(让我们一步步思考)”,使Transformer降低它的推理速度,投入更多的计算时间。

※ 提示本质上是一些额外的信息,可以让 LLM 更好地理解我们的问题和需求。正因为人类的大脑和 LLM 有很大的不同,所以需要提示来弥合这种差异。

此外,还有第二种方式——

自我一致性

如何训练和应用GPT助手:从微软Build 2023大会解读

Transformer 可能会采样到一个不太好的标记,从而使推理像陷入死胡同一样走下坡路,并且无法从中恢复过来。

我们的目的,就是让它们有某种能力能够回顾、检查或尝试

我们采用的方式,就是提示GPT并未完成任务,推动其进行检查。如果我们不要求它检查,它就不会自己检查。

这个过程可以用人类思考的系统一和系统二模式来类比。

如何训练和应用GPT助手:从微软Build 2023大会解读

  • 系统一:快速且自动的过程,对应于 LLM只是对标记进行抽样。
  • 系统二:大脑中较慢的、经过深思熟虑的计划部分,对应自我一致性。

这个说法其实来源于一篇论文,讨论一个被称为思想树(Tree of Thought)的领域。

简单讲,就是利用Python 胶水代码将许多提示词串在一起,整个过程如下:

  1. 遇到需要维护多个提示的情况
  2. 利用Python 胶水代码提供算法
  3. 使用算法找出什么时候使用哪个提示

这有点类似于AlphaGo,它会在围棋中打出多种可能性并评估这些可能性,不同之处在于这里我们针对的是文本。

另外,还有一个最近很火的 AutoGPT 的例子,它是一个允许 LLM 保留任务列表并继续递归分解任务的项目,有点像让我们的模型系统进行思考。

如何训练和应用GPT助手:从微软Build 2023大会解读

LLM怪癖:不保证成功

LLM 有种不想成功的心理怪癖。

原因正如前面讲的,LLM只是想模仿和预测,而无法区分解决方案的质量。

例如在一些物理问题上,可能有一个完全错误的学生方案,也有一个非常正确的专家答案。

Transformer无法分辨它们之间的区别——它们知道低质量解决方案和高质量解决方案,但默认情况下,无论对错它们都意图模仿,因为它们只是接受过语言建模方面的训练。

这种情况下,有以下几个解决方案:

确保能获得正确答案

也即在“让我们一步一步地解决这个问题”的基础上,进一步在提示中要求——“,确保能获得正确答案”。

尽管听起来很荒谬,但这确实可以让 Transformer 不必在低质量的解决方案上浪费时间。

合理的智商设定

如何训练和应用GPT助手:从微软Build 2023大会解读

设定 Transformer 是该主题下的领先专家,或者“假装你有IQ 120”之类的等等。

但不要试图要求太多的智商,比如要求400的智商,否则可能就游离在数据分布之外,进入科幻领域了(笑)。

在计算上依赖工具

如何训练和应用GPT助手:从微软Build 2023大会解读

也即把明确LLM不擅长的任务交给工具或插件完成。

明确模型的知识边界

默认情况下,Transformer 是不清楚自己的知识边界的,为此,我们可以明确告诉它,比如“你的心算不太好,每当你需要进行大数加法、乘法或其他操作时,请使用计算器。”

检索增强模型

如何训练和应用GPT助手:从微软Build 2023大会解读

在纯检索(如Google)和纯LLM记忆中间,存在一种检索增强模型,可以结合两者的优点(如New Bing),其原理在于其可以:

将任务相关信息加载到工作内存

Transformer的上下文窗口就是它的工作内存。如果我们可以将与任务相关的任何信息加载到其工作内存中,那么该模型将运行得非常好,因为它可以立即访问所有内存。

获取相关文档,进行向量转换并查询

简单讲,就是相关文档分隔成块,然后转换为嵌入向量并存储在向量数据库中;

随后在执行某种查询时,获取与您的任务相关的块,然后填充到提示中,用以生成内容。

这就类似于,你对书上的某个知识点有个残存的记忆但不完整,这个记忆就是向量,你需要根据这个记忆,重新回到书上找到完整的知识点内容一样。

约束提示

如何训练和应用GPT助手:从微软Build 2023大会解读

简单讲,就是强制LLM输出形式,比如JSON格式等,可以保证 LLM 的输出是我们想要的样子,而不是乱七八糟的。

微调

如何训练和应用GPT助手:从微软Build 2023大会解读

简单讲,就是通过改变 LLM 的一些参数,让 LLM 更适应我们的任务,也可以节省计算资源和成本。

一些开源的 LLM如 Llama ,可以作为微调的基础。

此外,微调需要更多的技术知识和数据,而且有些任务比较复杂,SFT 相比与 RLHF 更简单更好实现。

对此,演讲者提供了一些默认建议:

如何训练和应用GPT助手:从微软Build 2023大会解读

  • 使用 GPT-4,它是迄今为止功能最强大的模型。

  • 让提示里包含详细的任务内容、相关信息和说明;

  • 多参考大量其他的提示工程技术;

  • 尝试提供少量样本示例提示;

  • 尝试使用工具和插件来分担 LLM 本身难以完成的任务;

  • 不仅要考虑单个提示和答案,还要考虑潜在的逻辑链条,以及如何将它们粘合在一起;

  • 不要认为你已经最大化了提示工程能发挥的效果,而是应该持续微调;

  • RLHF 比 SFT 效果更好,但也更复杂;

  • 为了优化成本,请尝试探索容量较低的模型或更短的提示等。

模型的限制

如何训练和应用GPT助手:从微软Build 2023大会解读

现今的 LLM 存在很多限制,比如偏见、捏造、推理错误、有知识截止日期等。

每天也发生着大量对LLM的攻击,比如即时注入、越狱攻击、数据中毒攻击等。

演讲者给出的建议是:

  • 在低风险应用程序中使用 LLM;
  • 将它们与始终与人工监督结合起来;
  • 仅将它们用作灵感和建议的来源;
  • 考虑将其作为辅助,而不是在某处执行任务的完全自主的代理。

最后,演讲者问GPT-4,“你能说些什么来激励Microsoft Build 2023的观众吗?

如何训练和应用GPT助手:从微软Build 2023大会解读

它的回答如下:

“女士们,先生们,微软 Build 2023 的创新者和开拓者,欢迎来到与众不同的聪明才智的聚会。

你们是未来的建筑师,是塑造人类蓬勃发展的数字领域的远见者。

拥抱技术的无限可能性,让您的想法像您的想象一样飞翔。
让我们一起为子孙后代创造一个联系更紧密、更卓越、更具包容性的世界。

准备好释放您的创造力,探索未知,将梦想变为现实。
你的旅程从今天开始。”。

在线观看地址:www.bilibili.com/video/BV1ts…

演讲PPT地址:karpathy.ai/stateofgpt.…

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

微软Build 2023:生成式AI成为焦点,联手OpenAI打造大宇宙

2023-12-21 15:23:14

AI教程

midjourney AI绘画体验分享

2023-12-21 15:38:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索