背景
最近的ChatGPT等大模型太火爆,看看openAI发布的instructGPT(ChatGPT姊妹版模型)论文,记录一下阅读过程。(并不是直接翻译,加入了一些自己的理解,仅供参考,大佬请移步原文 InstructGPT:Training language models to follow instructions with human feedback)
论文题目:InstructGPT:Training language models to follow instructions with human feedback
摘要
在服从用户输入的指令,正确理解用户实际意图上,参数越来越大的模型,并不会表现的越来越好。大模型有时候会产生一些有害的、虚假的内容,或者是一些对用户问题毫无帮助的内容。这种情况可以被认为是模型没有和用户的想法对齐。在这篇论文中,我们通过一种基于人类反馈的微调方法,使得在各种任务上,模型能够对齐人类的想法。首先,筛选一批openAI的API上提交的prompt,由labeler编写对应的response,建立一个有监督数据集,用来进行有监督微调。然后,收集了一批对模型输出进行打分排序的数据,最后用这部分数据对模型进行微调,最终的模型成为instructGPT。对一部分prompt进行人工评估后发现,尽管GPT-3的参数有175B,是instructGPT的100倍以上,但1.3B的instructGPT表现却更好。此外,虽然在公开NLP数据集任务的性能有所下降,但模型在输出的真实性、减少有害内容的输出上的表现都有所提升。而且尽管instructGPT还会犯些小错误,但我们的结果已经证明,基于人类反馈的微调是一个有潜力的方向。
1.instruction
大语言模型可以通过给一些提示的方法,在输入中提供一些示例,来执行很多自然语言处理任务。但模型本身经常会有一些超出预料的行为,比如说编造事实,输出有偏见或者有害的内容,或者根本不理会用户的指令。这是因为很多大语言模型的训练目的就是为了预测下一个token,这和理解用户指令,且输出安全、正确的内容就不是一回事。因此,这种训练方式下的大语言模型的目标是非对齐的,从应用角度来说,修正这种产出期望之外的行为是至关重要的。
通过在训练模型遵循用户偏好下输出,这方面的对齐研究已经有了一些进展,包括可以进行明确的指令,或者是些相对模糊的,比如保持真实性、不要偏见、不要输出有毒或者有害的内容。通过Askell的说法,我们希望语言模型是有帮助的(能帮助用户完成任务),诚实的(不应该编造信息或者误导用户),无害的(不会对任何人或者环境造成物理上、心理上甚至是社交伤害)。
我们把焦点放在了利用fine-tuning方法去训练模型的对齐能力,具体是使用基于人类反馈的强化学习方法去fine-tuning GPT-3,让它能够服从各种指令。这种方法利用人类的偏好作为奖赏信号去微调模型。一开始,根据在专门设计的screening 测试的表现,我们雇佣了一批40人的labeler团队去标记数据。然后,收集一批通过openAI API提交的prompt和一些labeler自己写的prompt,由labeler编写模型期望的输出,用这部分数据集训练有监督模型baseline。接下来,我们收集了baseline模型在API上提交的prompt下的输出,并且由labeler对这些输出进行两两比较。在这个比较数据集上,去训练一个奖赏模型(RM),使得模型能够预测哪个输出更符合人类的偏好。最后,用这个RM模型作为奖赏函数,通过PPO算法微调之前的有监督模型baseline,最大化奖赏分数(图2)。这一个过程,让模型能够对齐一小部分群体的偏好(主要是我们的labeler和研究人员),而不是广泛的人类价值观。最终训练完的模型称为instructGPT。