ChatGPT/InstructGPT详解

对比GPT-1,GPT-2并未在模型结构上大作文章,只是使用了更多参数的模型和更多的训练数据(表1) 。GPT-2最重要的思想是提出了“所有的有监督学习都是无监督语言模型的一个子集”的思想,这个思想也是提示学习(Prompt Learning)的前身 。前言GPT系列是OpenAI的一系列预训练文章,GPT的全称是Generative Pre-Trained Transformer,顾名思义,GPT的目的就是通过Transformer为基础模型,使用预训练技术得到通用的文本模型 。目前已经公布论文的有文本预训练GPT-1,GPT-2,GPT-3,以及图像预训练iGPT 。据传还未发布的GPT-4是一个多模态模型 。最近非常火的ChatGPT和今年年初公布的[1]是一对姐妹模型,是在GPT-4之前发布的预热模型,有时候也被叫做GPT3.5 。ChatGPT和InstructGPT在模型结构,训练方式上都完全一致,即都使用了指示学习(Instruction Learning)和人工反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)来指导模型的训练,它们不同的仅仅是采集数据的方式上有所差异 。所以要搞懂ChatGPT,我们必须要先读懂InstructGPT 。
1. 背景知识在介绍ChatGPT/InstructGPT之前,我们先介绍它们依赖的基础算法 。
1.1 GPT系列基于文本预训练的GPT-1[2],GPT-2[3],GPT-3[4]三代模型都是采用的以Transformer为核心结构的模型(图1),不同的是模型的层数和词向量长度等超参,它们具体的内容如表1 。

ChatGPT/InstructGPT详解

文章插图
图1:GPT系列的模型结构(其中Trm是一个Transformer结构)
表1:历代GPT的发布时间,参数量以及训练量
模型
发布时间
【ChatGPT/InstructGPT详解】层数
头数
词向量长度
参数量
预训练数据量
GPT-1
2018 年 6 月
12
12
768
1.17 亿
约 5GB
GPT-2
2019 年 2 月
48
-
1600
15 亿
40GB
GPT-3
2020 年 5 月
96
96
12888
1,750 亿
45TB
GPT-1比BERT诞生略早几个月 。它们都是采用了Transformer为核心结构,不同的是GPT-1通过自左向右生成式的构建预训练任务,然后得到一个通用的预训练模型,这个模型和BERT一样都可用来做下游任务的微调 。GPT-1当时在9个NLP任务上取得了SOTA的效果,但GPT-1使用的模型规模和数据量都比较小,这也就促使了GPT-2的诞生 。
对比GPT-1,GPT-2并未在模型结构上大作文章,只是使用了更多参数的模型和更多的训练数据(表1) 。GPT-2最重要的思想是提出了“所有的有监督学习都是无监督语言模型的一个子集”的思想,这个思想也是提示学习(Prompt Learning)的前身 。GPT-2在诞生之初也引发了不少的轰动,它生成的新闻足以欺骗大多数人类,达到以假乱真的效果 。甚至当时被称为“AI界最危险的武器”,很多门户网站也命令禁止使用GPT-2生成的新闻 。
GPT-3被提出时,除了它远超GPT-2的效果外,引起更多讨论的是它1750亿的参数量 。GPT-3除了能完成常见的NLP任务外,研究者意外的发现GPT-3在写SQL,JAVAScript等语言的代码,进行简单的数学运算上也有不错的表现效果 。GPT-3的训练使用了情境学习(In-context Learning),它是元学习(Meta-learning)的一种,元学习的核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果 。
通过上面的分析我们可以看出从性能角度上讲,GPT有两个目标:
  1. 提升模型在常见NLP任务上的表现效果;
  2. 提升模型在其他非典型NLP任务(例如代码编写,数学运算)上的泛化能力 。
另外,预训练模型自诞生之始,一个备受诟病的问题就是预训练模型的偏见性 。因为预训练模型都是通过海量数据在超大参数量级的模型上训练出来的,对比完全由人工规则控制的专家系统来说,预训练模型就像一个黑盒子 。没有人能够保证预训练模型不会生成一些包含种族歧视,性别歧视等危险内容,因为它的几十GB甚至几十TB的训练数据里几乎肯定包含类似的训练样本 。这也就是InstructGPT和ChatGPT的提出动机,论文中用3H概括了它们的优化目标:


推荐阅读