InstructGPT 论文阅读笔记

这篇具有很好参考价值的文章主要介绍了InstructGPT 论文阅读笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

简介

数据集                                

详细实现

实验结果

参考资料


简介

InstructGPT 模型是在论文《Training language models to follow instructions with human feedback》被提出的,OpenAI在2022年1月发布了这篇文章。

论文摘要翻译:把语言模型做得更大并不意味着让它们更好的遵循用户的意图。例如,大型语言模型可能会生成不真实、有毒或对用户没有帮助的输出。换句话说,这些模型没有与他们的用户对齐。本文中我们展示了一种通过微调人类反馈来使语言模型与用户在一系列任务中对齐意图的方法。从一组标注员手写的prompts和从OpenAI API提交的prompts开始,我们收集了一个有标注员演示的预期模型行为的数据集,用该数据集使用有监督学习微调了GPT-3模型。我们接着收集了一个模型输出结果排名数据集,用它通过RLHF(reinforcement learning from human feedback)来进一步微调这个有监督模型,我们把生成的模型称为InstructGPT。在我们的prompt 数据集的人类评估中,1.3B参数的InstructGPT模型结果比175B参数的GPT-3结果更被接受,尽管少了100倍的参数。此外,InstructGPT模型在提高真实性和减少有毒输出生成的同时,在公共NLP数据集上具有最小的性能回归。尽管InstructGPT仍然会犯一些简单的错误,但我们的结果表明,根据人类的反馈进行微调是使语言模型与人类意图对齐的一个有前景的方向

在前言部分开头就提到大语言模型可以通过给一些任务示例、被prompted的方式来执行一系列NLP任务,但是这些模型经常有一些不符合意图的行为,如捏造事实、产生有偏见或有毒的文本,或者完全不遵循指令。出现这些行为的原因是因为大语言模型的目标函数--预测从互联网得到的文本的下一个token,与“有用且安全地遵循用户的指令”这一目标是不同。因此作者们说语言模型的目标函数是misaligned。

那怎么避免模型出现这些不符合意图的行为,让语言模型变得helpful、honest、harmless呢?

  • helpful (they should help the user solve their task)
  • honest (they shouldn't fabricate information or mislead the user)
  • harmless (they should not cause physical, psychological, or social harm to people or the environment)

InstructGPT的做法是使用微调的方式来对齐(align)语言模型,特别是使用了RLHF(reinforcement learning from human feedback), 如下图1通过三步来对齐语言模型。

InstructGPT 论文阅读笔记
原论文中的Figure 2

数据集                                

在详细的三个步骤说明前,先来看看prompt数据集是怎么得到的:

  • 数据集中的prompt主要来源是用户使用OpenAI API时的prompt输入,特别是通过instructGPT早期版本的playground 接口提交的。对于每个用户ID,最多只取200个prompt。 并通过检查prompt是否有很长的公共前缀来进行去重,在划分train/validation/test数据集时,会通过用户ID来划分,以便验证集和测试集不包含来自训练集中数据的用户的数据。为了避免模型学习到用户的敏感信息,将个人身份信息去除了(personally identifiable information (PII))。
  • 一个有40人的标注团队也写了一些prompt, 共有三种类型的prompt:

    • Plain: We simply ask the labelers to come up with an arbitrary task, while ensuring the tasks had sufficient diversity.

    • Few-shot: We ask the labelers to come up with an instruction, and multiple query/response pairs for that instruction.

    • User-based: We had a number of use-cases stated in waitlist applications to the OpenAI API. We asked labelers to come up with prompts corresponding to these use cases.

基于这这些prompt, 生成了三个数据集:

  • SFT数据集,有标注员提供的prompt的演示输出结果,共13k的训练prompts, 用来训练第一步的SFT模型
  • RM数据集,有标注员标注的模型输出排名,共33k的训练prompts, 用来训练第二步中的RM模型。
  • PPO数据,没有任何人类标注,用来作为第三步的RLHF微调的输入,共31k 的训练数据(数据只来自API,也就是没有使用标注员生成的prompt)

数据集详细大小数据如下图, 数据集中的96%都是英语。

InstructGPT 论文阅读笔记
原论文中table 6 

prompt 类型分布如下截图 :

InstructGPT 论文阅读笔记
原论文中table 1

更详细的关于数据集的说明在论文附录A, 如何使用筛选测试来挑选标注员以及提供给标注员的标注指南可参考附录B

详细实现

第一步:

使用监督学习来微调GPT-3模型:

  • using a cosine learning rate decay, and residual dropout of 0.2
  • 通过在验证集上的RM 分数来进行SFT的模型选择
  • 一共训练了16 epochs, 虽然在1个epoch之后再验证集上的损失开始出现过拟合,但是发现训练更多的epoch可以同时提升RM和人类偏好评分

第二步:

从第一部分的去掉最后的unembedding layer的SFT模型开始,对于输入的prompt和语言模型输出结果,训练一个奖励模型(RM)输出一个标量奖励。

只使用了6B的模型,不仅节约大量计算,更因为175B的模型的训练很不稳定,所以不适合作为RL的值函数。

对于每个prompt,给每个标注员K=4到K=9的responses 来排序,故会生成个比较对。如果直接将比较对shuffle组成一个数据集,只对数据集进行一次训练就会过拟合。而如果将一个prompt的比较对作为同一个batch的元素,这不仅节省了计算量(对于每一个completion只需要一次前向传播,而不是对K个completion要有个前向传播),并且不会过拟合,可以极大的提高验证集准确率和log loss。

奖励模型的损失函数定义为下式,是一个pairwise的ranking loss。 

式中 是参数为的奖励模型对于prompt x和completion y的标量输出,对于比较对  和, 是更被接受的completion,D是人工比较对的数据集。

由于RM损失对奖励的偏移是不变的,因此使用偏差对奖励模型进行规范化(normalize),以便在进行强化学习之前标注员演示达到平均得分0。

第三步:

使用PPO来对SFT模型在试验环境中进行微调, 试验环境是一个展示随机的用户prompt并期望给出一个response的bandit 环境。对于给定的prompt和response, 环境根据第二部分的奖励模型给出一个奖励并结束这一回合。

给每个token添加了一个从SFT 模型得到的per-token KL penalty 以防止奖励模型的过度优化, 值函数是从奖励模型(RM)初始化得到的,将这个模型称为“PPO”。

为了修复在公共NLP数据集上的performance regressions, 将预训练梯度加入到PPO梯度,这些模型被称为“PPO-ptx"。 

因此,在RL训练过程中是最大化如下组合目标函数:

InstructGPT 论文阅读笔记

式中,是学习到的RL策略, 是第一步的监督训练模型, 是预训练数据集。KL奖励系数控制KL惩罚的程度,预训练损失系数 控制预训练梯度的程度, 对于“PPO”模型,

为0, 除非特殊说明,论文中的InstructGPT 都是指PPO-ptx 模型。

Baseline:  

  • 比较PPO模型与SFT模型和GPT-3的效果, 也比较了在prompt中加入一些例子给GPT-3(称为GPT-3-prompted)。
  • 在FLAN和T0数据集比较InstructGPT 与微调的175B的GPT-3。 分别在大约100万个样本上对它们进行微调,并选择在验证集中获得最高奖励模型分数的checkpoint。

(模型的更多训练细节在附录C。)

实验结果

几个关键结论:

  • 与GPT-3的输出相比,标注员明显更喜欢InstructGPT输出(如下图)。
InstructGPT 论文阅读笔记
原论文中的Figure 1
  • 模型可以泛化到没有参与过训练标注的标注员的喜好
  • 公共 NLP 数据集不能反映如何使用语言模型
  • InstrucGPT 相比与GPT-3在真实性上有所提高
  • InstrucGPT 相比与GPT-3在有毒内容上有一点点提高,但是在偏见上没有提高
  • 通过修改RLHF的微调程序,可以减小在公共NLP数据集上的performance regressions。
  • InstructGPT模型显示了对RLHF微调分布之外的指令的有效的泛化
  • InstructGPT仍然会犯一些简单的错误

参考资料

1. Ouyang, Long, Jeff Wu, Xu Jiang, Diogo Almeida, Carroll Wainwright, Pamela Mishkin, Chong Zhang, et al. n.d. “Training Language Models to Follow Instructions with Human Feedback.” 

2. https://openai.com/research/instruction-following 

3. InstructGPT 论文精读【论文精读·48】_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-429646.html

到了这里,关于InstructGPT 论文阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 论文阅读:Vary论文阅读笔记

    论文:Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Paper | Github | Demo 许久不精读论文了,内心一直想找个专门的时间来细细品读自己感兴趣的论文。现在想来,无异于是自己骗自己了,因为根本就不存在那个专门的时间。所以改变最好的时候就是现在。 因为自己一

    2024年01月19日
    浏览(33)
  • 论文阅读-Pegasus:通过网络内一致性目录容忍分布式存储中的偏斜工作负载

    论文名称: Pegasus: Tolerating Skewed Workloads in Distributed Storage with In-Network Coherence Directories 高性能分布式存储系统面临着由于偏斜和动态工作负载引起的负载不平衡的挑战。本文介绍了Pegasus,这是一个利用新一代 可编程交换机ASIC 来平衡存储服务器负载的新型存储系统。Pegasus使

    2024年02月20日
    浏览(46)
  • 论文阅读:Vary-toy论文阅读笔记

    论文:Small Language Model Meets with Reinforced Vision Vocabulary Paper | Github | Demo 说来也巧,之前在写论文阅读:Vary论文阅读笔记文章时,正好看到了Vary-toy刚刚发布。 这次,咱也是站在了时代的前沿,这不赶紧先睹为快。让我看看相比于Vary,Vary-toy做了哪些改进? 从整体结构来看,仍

    2024年01月25日
    浏览(41)
  • ChatGPT的来源-InstructGPT论文简要介绍

    现在大火的ChatGPT功能十分强大,不仅可以回答用户问题,编写故事,甚至还可以写代码。ChatGPT跟OpenAI之前发表的InstructGPT使用的模型方法比较类似,只是训练的数据不同,为了探索ChatGPT的原理,笔者找来2022年3月发表的InstructGPT的论文,做了简要的介绍。 ChatGPT,美国OpenAI 研

    2024年02月02日
    浏览(30)
  • [论文阅读笔记18] DiffusionDet论文笔记与代码解读

    扩散模型近期在图像生成领域很火, 没想到很快就被用在了检测上. 打算对这篇论文做一个笔记. 论文地址: 论文 代码: 代码 首先介绍什么是扩散模型. 我们考虑生成任务, 即encoder-decoder形式的模型, encoder提取输入的抽象信息, 并尝试在decoder中恢复出来. 扩散模型就是这一类中的

    2023年04月08日
    浏览(37)
  • 论文阅读:Segment Anything之阅读笔记

    引言 论文:Segment Anything是Meta出的图像语义分割的算法。这个算法因其强大的zero-shot泛化能力让人惊艳,这不抽空拿来学习了一下。 该算法的代码写得很清楚、简洁和规范,读来让人赏心悦目。推荐去看源码,很有意思。 本篇文章,将以问答形式来解读阅读过程中遇到的困

    2024年02月13日
    浏览(23)
  • GPT-3 论文阅读笔记

    GPT-3模型出自论文《Language Models are Few-Shot Learners》是OpenAI在2020年5月发布的。 论文摘要翻译 :最近的工作表明,通过对大量文本进行预训练,然后对特定任务进行微调(fine-tuning),在许多NLP任务和基准测试上取得了实质性的进展。虽然这种方法在架构上通常与任务无关,但它

    2024年02月12日
    浏览(23)
  • Retinexformer 论文阅读笔记

    清华大学、维尔兹堡大学和苏黎世联邦理工学院在ICCV2023的一篇transformer做暗图增强的工作,开源。 文章认为,Retinex的 I = R ⊙ L I=Rodot L I = R ⊙ L 假设干净的R和L,但实际上由于噪声,并不干净,所以分别为L和R添加干扰项,把公式改成如下: 本文采用先预测 L ‾ overline L

    2024年01月21日
    浏览(27)
  • 3D卷积网络论文阅读笔记

    数据集 BraTS 2020 数据增强方法 • Flipping翻转: 以1/3的概率随机沿着三个轴之一翻转 • Rotation旋转: 从限定范围(0到 15◦或到30◦或到60◦或到90◦)的均匀分布中随机选择角度旋转 • Scale缩放: 通过从范围为±10%或为±20%的均匀分布中随机选择的因子,对每个轴进行缩放 • Br

    2023年04月10日
    浏览(32)
  • PointMixer论文阅读笔记

    MLP-mixer是最近很流行的一种网络结构,比起Transformer和CNN的节构笨重,MLP-mixer不仅节构简单,而且在图像识别方面表现优异。但是MLP-mixer在点云识别方面表现欠佳,PointMixer就是在保留了MLP-mixer优点的同时,还可以很好的处理点云问题。PointMixer可以很好的处理intra-set, inter-set

    2024年02月19日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包