微软Build 2023专题演讲:State of GPT

本文整理自 Andrej Karpathy 在微软Build 2023开发者大会中的专题演讲

内容总览:

横轴-训练的四个阶段:预训练、有监督微调、奖励建模、强化学习

纵轴-训练的四个组成:数据集、建模算法与目标、结果模型、相关注释

1 预训练(Pretraining)

本阶段耗时占据整体训练耗时的99%:

  • 数千个 GPU 经过数月的训练来处理互联网规模数据集
  • 其他三个阶段只需要少量 GPU ,耗时在数小时或数天

1.1 数据搜集

以meta发布的LLaMA模型中所用数据为例进行说明:

  • common crawl为网络爬取的数据集,C4也是一种爬虫获取到的
  • 其他都是些高质量数据集,比如GitHub、维基、书籍、ArXiv论文、StackExchange问答

1.2 词元化处理

  • 以上过程简单来说,就是把原始文本翻译成整数序列
  • 词元化处理(Tokenization)类似于中文分词的概念,由于词的类别在不同语言中差异较大,同时也是为了压缩类别的量级,nlp引入词元(token)的概念;在英文中1词元≈0.75个单词
  • Byte Pair Encoding (BPE) 是一种简单而常用的tokenization算法,其基于贪婪的策略不断合并高频的子字符串,并在迭代中形成新的词元(token),本质是一种数据压缩方法

1.3 2个模型示例

  • 左图是ChatGPT的前身GPT3(稍微老点),右图是今年Meta新开源的LLaMA
  • 二者token的量级保持在3w2~5w;输入维度常见为2000(现在最大的有10w)
  • LLaMA的参数量虽然比GPT3小(65B vs 175B),但实际表现强很多,训练时间也要更长
  • 两个模型的训练都需要上千个GPU训练一个月左右,耗费都是百万级别的

1.4 预训练细节

  • Tokenization后的词元会用于训练,每次使用B个样本,输入样本的最大长度为T
  • 用特殊的文本符号<|endoftext|>来标记文档的结束位置
  • 假设B=4,T=10;上图中的表格展示了同一批次(batch)的训练样本

  • 上图描述的是训练任务:给定当前词元(绿)及其前文(黄),预测下一个词元(红)
  • 实际训练过程中,模型会根据预测输出的概率分布与真实结果来更新模型参数(更多细节需要了解Transformer架构和梯度下降法,此处先略)
  • 最终经过预训练的模型应该能够针对下一个词元实现较为精准的预测

下图展示了模型随着训练次数的误差/Loss的下降过程:

1.5 基础模型的强大表征力

在预训练过程中,模型为了更好地预测下一个词元,被迫了解很多关于文本的结构和其中所有不同的概念。因此模型具备了很强的通用表征能力,可以很方便地迁移到很多下游任务(比如文本分类、文本推理、文本相似度评估、多选问答等)中:

在 GPT-2 前后,人们发现可以通过提示(prompt)的方式增强模型的性能表现,甚至逐步演变了基于提示工程(prompt engineering)直接应用模型到下游任务,进入了提示高于微调(prompt over finetuning)的AI大时代:

  • 其中LLaMA系列是目前效果最好的开源模型(截至230527)

最后还需要注意,完成预训练的base模型只追求词元的预测,还不能作为类似于ChatGPT问答助手使用;当然通过合适的提示,base模型也能作为助手来使用(但不是很好用~)

2 有监督微调(Supervised Finetuning)

2.1 SFT数据集

在有监督的微调阶段,仅需要少量但高质量的SFT(Supervised Finetuning)数据集

  • 上图左侧为一个示例的输入和响应输出,均来自人为标注
  • 上图右侧为人为标准的规范(很复杂),基本要求是”有帮助、真实且无害“
  • 在这种情况下,我们要求人工承包商收集及时和理想响应形式的数据

2.2 微调细节

  • 最终的SFT数据集大概有几万条,用于base模型的微调训练
  • 建模过程和预训练阶段没区别,只是数据集换了,质量更高了
  • 最终得到了SFT监督微调模型,使用效果明显优于base模型

下一步是RLHF,即“从人类反馈中强化学习”,它包括奖励建模和强化学习

3 奖励建模(Reward Modeling)

奖励建模阶段不再盲目追求数据的收集,而是专注于数据结果的比较

3.1 RM数据

经过微调的SFT模型会产生多个答案,经过人为对比排名后得到奖励建模(RM)数据:

对预测结果的对比是一件非常困难的事情,有的对比可能需要几个小时来完成

3.2 RM训练

  • 上图中的表格内容表示同一种提示(蓝)的三种文档补齐预测结果(黄)
  • 对于SFT模型给出的结果,使用特殊符号<|reward|>进行人为标记,这个符号一方面标识了预测输出的结束,另一方面作为占位符用于输出奖励预测值
  • 模型则会依据来自人为标注的预测补齐结果排名(RM数据)进行训练,获得奖励值预测的能力,而奖励值会通过下一节的强化学习指导模型训练

4 强化学习(Reinforcement Learning)

对于任何给定提示(prompt)得到的补全预测(completion),奖励模型可以进行质量评分

4.1 强化学习的训练

  • 对于同一种提示(蓝)的三种文档补齐预测结果(黄),使用已训练好的奖励模型进行补齐质量的评价:比如结果1就比较好(得分=1),而结果2就比较差(得分=-1.3)
  • 强化学习追求奖励的最大化,通过训练使得模型尽可能预测输出更高质量的补齐预测
  • 以上过程便是RLHF流程,即“从人类反馈中强化学习”
  • 此阶段的最后,可得到能够部署的RLHF模型(也就是ChatGPT的形态)

4.2 RLHF的优势

  • 上图来自instructGPT(ChatGPT的前身),其中PPO就是RLHF训练后的模型
  • 可以发现经过RLHF训练后的模型,预测性能有着显著的提升

RLHF有效性的一种可能解释:

内容生成的难度远高于内容的判别(以俳句为例,虽然普通人很难写出漂亮的俳句,但在多个俳句中判断哪个俳句更出色则会容易很多),而这种难度上的不对称性为模型的进步提供了空间

RLHF并不是对模型的严格改进,而是能诱导模型的潜能挖掘,使得模型的文本输出更符合人类的判断力(相当于让内力深厚的人,掌握发力技巧)。但对应的代价是,模型的输出变化(创造力)会减少,RLHF训练是一个让模型熵减少的过程

4.3 其他模型概览

伯克利的一个团队对目前可用的类ChatGPT模型进行ELO 评级,并给出排名:

  • 其中前三个应该是RLHF模型,其他模型应该还都是SFT模型

5 ChatGPT的应用

5.1 人类思维 VS ChatGPT

对于命题”加州的人口是阿拉斯加的 53 倍“

人类的思考模式:

  • 命题的关键在于对比两个地区的人口,所以首先需要获取人口信息
  • 对两个地区不了解,所以借助外部工具(维基百科)获取人口信息
  • 加州人口为39.2M,阿拉斯加为0.74M,借助计算器可知二者倍率为53
  • 思考过程中,人类会穿插反思与理智检查(我做这件事情有啥意义?),也可能会基于该结论展开论据的陈述,或者进行文字相关的创作,并对最后的结果感到满意

ChatGPT的思考模式:

  • ChatGPT在处理或生成文本的过程中,都需要不断分块,然后针对每一块的每一个词元进行处理;每个词元都会消耗相同的算力,整个处理过程大概会经过80层的Transformer
  • 本质上来说,ChatGPT只是一个词元生成器,追求更合理的词元预测(模仿);不会考虑自己擅长什么,不会纠正自己的错误,也不会反思自己的知识盲区;
  • ChatGPT的优势在于,经过训练后的几百亿参数中蕴藏着大量基于事实的知识,覆盖领域广泛;适当上下文窗口内的输入信息都能实现有效的处理

人类的思考过程中,会存在很多内心独白以及情绪,这都是ChatGPT所不具备的

提示工程的作用,就是弥补人类和ChatGPT这两种思维模式上的认知差异

5.2 ChatGPT的推理优化

几种可行的提示技巧:

以上技术的目标都是在为模型重建属于人类的第二系统

  • 第一系统是一个快速而自动化的过程,有点类似于 LLM,是对词元的分布预测和抽样
  • 第二系统则是大脑中较慢的、经过深思熟虑的计划部分,是模型需要改善的方向
  • 上图作图展示了从普通预测,逐步添加思维链提示(CoT)和自洽性(sc)的过程,最终的思维树(Tree of Thought,ToT) 则是近期提出的一项推理优化策略
  • 思维树提示的核心思想在于:为任意给定的提示维护多个预测生成结果,然后在整个过程中对结果进行评分,并保留其中合理的结果;算法中还涉及基于树搜索算法的提示扩展 #待补充
  • 第二系统的重建和AlphaGo也存在相似之处,AlphaGo的下棋策略最初就是模仿人类进行训练的,同时AlphaGo还会通过蒙特卡洛树搜索找到不同的可能性并进行评估,最后保留合理的部分

5.3 ChatGPT的进阶思考

更进一步的,人们也开始思考一些更通用的技术,而不是提示的简单堆砌:

  • AutoGPT 是最近比较火的GitHub项目,其核心思想在于针对一项任务进行递归式分解,拆解为更富可行性的子任务并进行自动实现。(真实效果还比较一般,但方向很鼓舞人心)
  • React 也是近期发表的论文,作者根据对人类行为的洞察,将提示的答案构造为一系列由推理过程拼接的步骤或动作,通过将推理和动作相结合来克服LLM的幻觉问题,同时提高了结果的可解释性和可信赖度 #待补充

需要注意的是,ChatGPT没有渴望成功的欲望,它只是接受过语言建模方面的训练,它只会追求更好地词元预测与模仿;ChatGPT能区分低质量的生成文本和高质量的生成文本,但它却不一定能区分一个方案是否正确;所以人类需要通过强制要求来约束它,以实现属于人类的成功

提示的约束:”让我们一步一步地来解决这个问题,并确定最终的答案是正确的“

不同提示词对模型最终精度的影响:

5.4 ChatGPT的应用

解决问题时,人类要知道自己擅长的与不擅长的,然后在不擅长的地方找到可以依赖的工具

有趣的是,ChatGPT不一定知道自己擅长的事情,而通过提示可以让他“误以为”自己是擅长的

  • 左子图中,作者通过提示将ChatGPT伪装成了一个高精度计算器
  • 右子图中,作者通过提示将ChatGPT伪装成了一个用于绘图的代码解释器
  • 通过不同的提示,ChatGPT将扮演不同的角色,具备不同的能力(插件系统)

我们的时代正在从基于检索传统的搜索引擎走向以记忆和理解为主的大语言模型(LLMs),而检索增强后的LLMs在实践中也表现出强大的效果:

  • 检索增强的LLM可以是ChatGPT+浏览器,也可以是BingChat
  • LlamaIndex则是借助ChatGPT的API对文本进行切块和向量化表征(embedding),然后根据查询进行文本检索(基于文本向量寻找到最相似的文本块),最后将相关文本作为提示融入到对ChatGPT的问询中

LlamaIndex实现了一种检索和LLM(记忆理解)更深度的融合,很多人也在用这种方式来构建属于自己的知识库,既可以进行更优雅的检索,也能实现知识的更有效管理

其他应用:

  • ChatGPT可以对输出格式进行强制限制,比如JSON格式或其他自定义的模板

5.5 ChatGPT的微调

基于已有的ChatGPT还可以通过微调(finetuning)来适应更多的场景;不过要注意虽然微调的计算成本不高(大部分参数可以是冻结的),但微调对技术和数据标注质量仍有较高的要求:

更通俗的来说,SFT是比较容易训练的语言建模,但是RLHF是一个复杂的领域,训练难度高,训练结果不稳定。以下是作者的一些训练建议:

  • 首要目标是找到最好性能表现的模型,其次是控制训练的费用成本
  • 训练模型最好基于GPT4,因为这是目前性能最强的模型;提示文本需要包含详细的任务内容、相关信息和说明,仔细揣摩模型的思维模式;尝试少样本提示,为模型提供答案模板
  • 尝试使用工具和插件来分担 LLM 本身难以完成的任务;考虑问题对应的潜在思维链条和推理反应过程,尝试问答的拆分与粘合;在提示优化到达瓶颈时,考虑搜集SFT数据并用于微调
  • RLHF训练可能会取得更好的表现,但其过程会非常复杂;探索成本的缩减,比如减少模型的参数量量(如GPT4降为GPT3.5)/最大窗口限制,或使用更短的提示文本

6 总结

模型有很多限制,也有很多合适的应用方向

  • 不足:目前的模型可能存在偏见、幻觉、推理错误;适用范围受限,知识日期受限
  • 建议:在低风险应用中使用 LLM,保持人工监督,作为灵感和建议的来源或参考

Twitter 每天都在发生大量对LLM的攻击,包括即时注入、越狱攻击、数据中毒攻击等

GPT-4很漂亮,包含着大量领域的知识,正在逐步生成一个全新的生态。关于GPT-4的更多内容可参阅前段时间OpenAI分享的《GPT-4技术报告》 #待补充

最后是一段由GPT4生成的,一段用于和观众共勉的话:

参考

中文精校版-视频演讲
微软官方原版-视频演讲

#ChatGPT

往年同期文章