OpenAI 一路从 GPT 到 GPT3 再到 ChatGPT,其不停摸索的技术路线,早已不是 大规模预训练语言模型 可以简单概括,而是通往 AGI 所需的 NLP 到底是什么样的。
由于 GPTx 的使用限制,制约了我们对其应有的关注。这对于仍停留在 BERT 时代的我们,是值得警醒的。
进化之路
模型 |
发布时间 |
参数量 |
预训练数据量 |
GPT-1 |
2018年6月 |
117 M |
5GB |
GPT-2 |
2019年2月 |
1.5 B |
40GB |
GPT-3 |
2022年5月 |
175 B |
570+ GB |
InstructGPT |
2022年3月 |
(数据来源于 引用1-3)
GPT-1
背景
- pretrain+finetune 的风潮(基于 LSTM 结构的 ULMFiT【Universal Language Model Fine-tuning for Text Classification】)
- Transformer 相对 LSTM/CNN 的优异表现
核心路线
pretrain + finetune
模型&数据&训练
- 模型基于 transformer 结构,layer-12 head-12 hidden-768 embedding=4H
- 数据使用 BooksCorpus,规模 5GB
- pretrain
- 自左向右的生成式语言模型
- finetune
- 区别于 BERT,GPT-1 在预训练时没有 CLS 和 SEP,只有单句;对于具体下游任务,需增加 START/DELIM 和 EXTRACT,其 token embedding 在 finetune 时随机初始化
- 基于 EXTRACT embedding 经 MLP 进行下游任务的 loss 计算
- finetune 的 loss 不仅包含下游任务的 loss,还包含输入文本的 LM loss
- GPT-2
背景
- 越来越多工作聚焦在仅 pretrain 不 finetune,来减轻标注数据收集的压力,即 few-shot、zero-shot
- multi-task learning 和 meta-task learning 算是较有希望的方向
- multi-task learning 和 meta-task learning 往往圈定一个 task 集合,在 LM 类 PTM 方面,会将建模 p(out|in) 转化为建模 p(out|in,task),来显式/加速捕捉 task 信息,如 MQAN【The Natural Language Decathlon: Multitask Learning as Question Answering】使用 task-specific pattern 来拼接 in,task 进行训练和预测
- GPT-2 认为“任何有监督任务都是语言模型的一个子集,当模型的容量非常大且数据量足够丰富时,仅仅靠训练语言模型的学习便可以完成其他有监督学习的任务”,故坚持在自然文本上直接建模 p(out|in) ,虽然学习慢很多,但形式更通用
核心路线
基于 GPT-1,扩大模型规模,提升模型容量,实现无监督的隐式的 multi-task learning 效果
模型&数据&训练
- 模型结构继承 GPT-1,在 transformer 的结构上有微调,size 最大的:layer-48 head-12 hidden-1600 embedding=4H
- vocab size 从 GPT-1 的 40000 扩大到 50257
- 数据采用了网页内容 WebText,规模 40GB
评价&思考
- 从效果来看,在文本摘要任务上媲美有监督模型,在法译英任务上超越所有无监督但比有监督差,初步显现了潜力,但大多任务上 zero-shot learning 效果仍大幅落后于有监督
GPT-3
背景
- 越来越多工作【Pretrained Transformers Improve Out-of-Distribution Robustness】表明,在 pretrain+finetune 范式中,当 model 拟合在 downstream-task trainset 后,往往丧失了对 downstream-task OOD 的泛化能力
- 由于 trainset 不可能收集整个真实分布,随着时间变化预测数据的分布也可能变化,因此 model 需要具备 OOD 的能力,属于已有类别的能归类,不属于的能拒判
- 通过构造 OOD 测试集,对比 IID 上的表现,有一些实验结论
- 传统 NN 衰减很大,甚至只有 30%,而 PTM 衰减很小
- 更大 size 的 PTM,并不一定表现更好(CV 上是越大越好,NLP 上不是)
- PTM 使用的训练数据的规模越大、多样性越强,表现越好
- 蒸馏后衰减会很大
- 20-21 年开始,meta-learning 领域中 in-context learning 逐渐兴起
in-context learning
- in-context learning 的核心思想是,在 meta-learning 中引入 multi-task learning 的模式,从而让模型基于少量训练样本来提取任务的语义信息,并以此来预测最终输出
- 以 MetaICL【MetaICL: Learning to Learn In Context】为例,
- 一些工作【Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?】对 in-context learning 的有效性进行了实验分析
- 模型并没有学习输入和标签之间的对应关系:训练时随机变更 x_i 的 y_i,没影响
- 模型学到了输入和标签的分布:对 x_i 或 y_i 部分token用随机token替换,均有负面影响
- 但增加前缀输入(样例),来激活大模型语言表达建模能力,也算是一种 learning
核心路线
- 在 GPT-2 基础上,大幅扩大模型规模,提升模型容量
- 预测时引入 in-context learning 思路,处理 few-shot、one-shot 问题(训练时没有)
模型&数据&训练
- 模型结构继承 GPT-2,size 最大的:layer-96 head-96 hidden-12288 embedding=4H
- 数据在 WebText 基础上,加入了 Book、Wikipedia 等数据,根据质量赋权使用,共计 45TB
- 训练依然是 bigger model -> larger batch-size -> smaller learning-rate
- 在验证 few-shot one-shot 效果时,GPT-3 并没有真的使用这些数据进行 finetune,而是相当于 zero-shot 直接预测验证效果
评价&思考
- GPT-3 在一些 task 上甚至超过了有监督 SOTA,从效果看,确实验证了“更大的模型的通用泛化效果”
- 但在文本生成上仍会在长篇幅上出现重复、矛盾、突兀的问题,缺乏物理常识,由于单向 LM 建模的问题在需要反复阅读上下文的 MRC 任务上也会差一些
- PAPER 中列举了一些更宏观的 limitation,也对应现在 PTM 方向的 limitation,很有意思,可延伸阅读
InstructGPT
背景
- GPT-3 所生成内容的 untruthful、unhelpful、toxic 问题,受到社会和学术关注
- 最初用在 Atari games 的 RLHF(reinforcement learning from human feed-back),自 19 年开始,逐步应用到 NLP 的各项 task 上
核心路线
模型&数据&训练
- Demonstration dataset -> SFT model
- prompt 的概念区别于 prompt learning,这里表示我们和 ChatGPT 交互时的键入,有各种任务形式,包括 Generation、QA、Chat、MRC、Summarization、Classification 等
- prompt 库由 user 键入和 labeler 撰写构建,会做一些采样处理,保证丰富度
- 给定 prompt,labeler 撰写 response,形成 input-output 的生成式数据,约 1.2W 规模,用于 GPT-3 supervised finetune
- Comparison dataset -> RM
- 给定一个 prompt,由模型生成 K 个 response,标注人员标注分档,形成 C_K^2 个 comparison pair,约 3.3W * C_K^2 规模,用于 reward model 的学习
- 一组 C_K^2 样本,shuffle 到 epoch 中,有泄露倾向,训练时很快就会过拟合,应在一个 batch 内使用
- loss 就简单用了个 -log(delta(score1 - score2))
- labeler 在标注 ranking list 前,会对每个 response 标注一些 meta label,即整体分数(1-7)、是否回应了 task、是否色情、是否暴力等等,但在训练中貌似没有体现应用?
- PPO model
- 3.1W 规模,具体见后面章节
评价&思考
- 从结论来看,对现有大规模 PTM 通过 SFT+PPO 进行 alignment 到 user intention 的思路,比继续提升模型规模要高效的多:SFT 和 PPO 的训练消耗是 GPT-3 pretrain 的千分之一,在百分之一规模的 GPT-3 上就能达到 GPT-3 的效果(1.3B V.S. 1175B)
- RL 在 NLP 中应用越来越多,而且取得了不错的效果,这里单独拎出来讨论下
【Deep Reinforcement Learning from Human Preferences】
背景
- RL 的应用往往需要一个具体定义的 reward function,但许多真实任务的目标较复杂,难以清晰定义,即无法将 user intent 和 RL system 进行 align
- 对于 expert user,可以提供 demonstration,使用 inverse RL 抽取出 reward function,如 imitation learning 等方法
- 对于 non-expert user,只能定性的对 system behavior 提供 feedback,来表明 intent,系统从中学习 reward function,这里关注该方式
- 关于 user feedback,显然 comparison 是更容易操作的,实验也证明这对于学习 user intent 已足够
核心路线
(图片来源于 引用6)
- policy
- 一旦有了 reward function,就是一个传统 RL 问题了,可以使用任意 RL 算法
- 考虑到这里的 reward function 可能是 non-stationary 的,使用 policy gradient 类方法更合适,本文处理 Atari games 使用的 A2C
- reward function
- 训练数据
- human feedback 形成 comparison dataset (a1, a2, label),label ∈ {1, 2, equal}(实际上本文 label 是个 {1,2} 上的分布)
- 标注数据,需要 online 持续进行,会用上一轮的 reward function 预测,筛选差异较大的 hard pair
- 目标函数
references(部分)
- Universal Language Model Fine-tuning for Text Classification:https://arxiv.org/abs/1801.06146
- Language Models are Unsupervised Multitask Learners:https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
- Language Models are Few-Shot Learners:https://arxiv.org/abs/2005.14165
- MetaICL: Learning to Learn In Contex:https://arxiv.org/abs/2110.15943
- Training language models to follow instructions with human feedback:https://arxiv.org/abs/2203.02155
- Deep Reinforcement Learning from Human Preferences:https://arxiv.org/abs/1706.03741