1.简介
本文根据2022年《Training language models to follow instructions with human feedback》翻译总结的,文中提出了InstructGPT,从文章标题也可以看出来训练模型采用了人类指导反馈的数据。
因为chatGPT说是InstructGPT的姊妹模型,所以了解下InstructGPT。InstructGPT的第一步训练是基于GPT-3。最终实验结果InstructGPT好于GPT-3。
InstructGPT的构建由下图所示的三个步骤构成。
1)第一步会基于GPT-3训练出来一个Supervised fine-tuning (SFT)模型。第一步的训练数据由我们雇佣的40个标注者根据提示(prompt)编写期望的输出构成(demonstrations)。这些标注者在应聘前会进行筛选测试。训练数据大约有1万3千个训练prompt,来自于API或者标注者手写的。
2)第二步是训练一个Reward modeling (RM)模型,训练数据是模型输入prompt后对应输出的排名(有多个模型输出,也是标注者对其进行的手工排序)。大约有3万3千个训练prompt,来自于API或者标注者手写的。
3)第三步是使用强化学习(Reinforcement learning (RL))针对RM模型优化SFT模型。首先获得一个prompt,然后SFT模型生成一个输出,然后RM模型针对这个输出计算一个奖励,然后这个奖励用来继续更新SFT模型(使用PPO方法)。这步没有使用标注数据,主要是前面两个有使用标注数据。PPO数据只使用了来自API的3万1千个训练prompt.
我们将来自于人类反馈的强化学习简称为RLHF(reinforcement learning from human feedback):使用人类的偏好作为奖励信号来微调模型。
我们有如下发现:
1)标注者相对于GPT-3的输出更喜欢InstructGPT;
2)相对于GPT-3,InstructGPT在真实性方面有改善;
3)InstructGPT在毒性输出上有小的改善,在RealToxicityPrompts数据上有验证。
4)通过修改我们的RLHF 微调过程,我们可以最小化在公共NLP数据上的衰退表现。
5)我们的模型对于没有产生训练数据的标注者,也有很好的泛化能力。
6)公共NLP数据不能反应我们的语言模型如何使用的。
7)除了对RLHF 微调分布表现好外,InstructGPT对于输入指示也有很好的泛化性。
8)InstructGPT依然会产生错误。比如对于错误的引导输入会产生非期望的输出。
2.数据
下表是第一步训练数据prompt的分类统计。
3.模型
3.1.RM
Reward modeling (RM)模型)损失函数如下,大体就是比较输入prompt x对应的两个输出y,按照标注的偏好进行训练:
3.2.RL
我们使用PPO方法微调SFT模型。
为了克服在公共NLP数据上的衰退表现,我们实现混合预训练的梯度到PPO梯度,这种方法我们叫做PPO-ptx,也就是InstructGPT。
损失函数如下:
4.结果
对API promt的结果。可以看到PPO-ptx(InstructGPT)好于GPT。
示例
输入prompt,输出结果。有点像问答系统。