- 📚To Read Lists: InstructGPT Done!
最近计划跟着李沐大佬读论文,2023加把劲!♥
InstructGPT
InstructGPT是2022年底风靡一时的ChatGPT的“兄弟版”,作为自然语言处理模型,他们的原理可谓是大同小异。InstructGPT通过使用已有的模型技巧优化GPT-3,从而改善之前NLP模型的“缺点”。
现在的人工智能🤖模型有什么缺点?
近几年,人工智能模型越来越多地在各种大厂落地,但一些不恰当的输出却常常引发争议。
FOR EXAMPLE
Google研发的模型将黑人预测为Gorillas(猩猩),引发争议,后续Google将该个类别从数据集中删除
同样的,现在自然语言处理大模型能在数据集上表现优异,但在现实应用中往往会输出一些有毒的(比如种族、性别歧视)、不真实、没有实质帮助的回答。为什么花了那么大精力去训练、优化的模型,输出的结果却常常“冒犯”人呢?作者在文中解释到,这是因为:
Thus, we say that the language modeling objective is misaligned.
Misalign, NLP模型没有跟人类的意图“对齐”,所以说出了人类不愿意听到的话。 让NLP模型避免说出这些“冒犯”的话对AI模型在工业应用中落地十分重要。
HOW TO ALIGN——标点数据让模型去学习吧!
论文说到,我们要继续训练GPT-3模型,通过加入更全面的数据,从而引导模型贴近人类的意图。
为了使数据能刚高效地被利用,作者还加入了指示(Instruct)学习。如果说提示学习是让模型做“完形填空”,指示学习就是让模型去做“选择题”,通过列出A、B、C等若干个选项,让模型去学习哪个选项更正确。
图片来自知乎@大师兄
InstructGPT的原理:
第一步 Supervised fine-tuning (SFT)
对GPT-3进行有监督微调。训练配置为16个epochs,使用余弦学习率衰减和0.2的dropout,根据验证集上的RM分数选择模型。作者发现过拟合会有助于RM的分数和使模型更贴近人类的偏好。
第二步 Reward modeling (RM).
训练Reward模型去选择人类更倾向的选项(指示学习)
作者将SFT模型的embedding层去除,将最后的输出映射为一个值,重复训练了一个模型去输出一个标量值——Reward。论文中作者为了节省计算量,只用了6B RM大小的模型。
Reward模型的目标函数为:
其中rθ(x,y)是带参数θ的Prompt x和Completion y的标量奖励输出;K指的是对每个Prompt生成K个Responses;是人类不想要的输出,是人类更倾向的输出, 目标函数是为了最大化人类喜欢的response和人类不喜欢的response之间的差距:
第三步 PPO强化学习模型
使用PPO去优化第二步得到的Reward模型
作者还将预训练梯度混合到PPO梯度中,以保证模型在NLP数据集上的性能。
目标函数为
原理流程图
在数据收集上下了大功夫
为了能更有效地引导语言模型,论文作者在文中教科书式的阐述了数据收集的过程,雇佣40个合同工,对他们进行标注培训,制作全面、覆盖人类意图的高质量数据集。
InstructGPT的数据集分为三部分**
第一步用于finetune的数据集——13k张
数据集分为三个维度:
- 普通数据集:Labelers随机地想一些多种多样的任务
- Few-shot:Labelers提供一个指示和对应的选项对
- 基于用户的数据集:根据OpenAI API里用户的一些问题,labelers给出对应的Prompts
一些Use-case的示例
第二步RM模型数据集——33k张
先让模型去生成文本,再让Labelers对这些文本进行打分。
第三步PPO模型数据集——31k张
无标注的来自OpenAI用户的数据。
模型更小,效果更好
论文使用了较小参数的模型,但确比以往的大参数模型效果更好;此外,InstructGPT模型生成的回答伤害更小,更真实。
结果
不同模型之间回答真实性和有效性的对比
不同模型之间回答有害性的对比