【大模型】Instruct GPT :Training language models to follow instructions with human feedback

论文:Training language models to follow instructions with human feedback
链接:https://arxiv.org/abs/2203.02155

Introduction

  • Motivation:让语言模型变得更大并不能使其遵循用户意图,模型可能生成不真实、有毒或根本不有助于用户的结果(not aligned with their users)。
  • Methods:通过人类反馈进行微调,将语言模型(GPT-3)与用户意图在多任务上对齐。
  • 效果:1.3B InstructGPT 优于 175B GPT-3。提高输出的真实性并减少有毒输出,文中指出human feedback是未来的方向。
  • 贡献:首次提出RLHF(reinforcement learning from human feedback),其整体范式如下:
    • 收集labeler的描述数据,微调GPT-3
    • Labeler对模型输出进行排序,训练一个reward模型
    • 使用强化学习PPO(proximal policy optimization)优化奖励模型
  • 实验结论
    • 标注员明显更喜欢 InstructGPT 而非 GPT-3 的输出
    • InstructGPT 相比 GPT-3 在真实性方面有所改进
    • InstructGPT 相比 GPT-3 毒性略微下降,但偏见未下降
    • 通过修改 RLHF 微调过程,可以最小化在公开 NLP 数据集上的性能退化
    • 在公开 NLP 数据集上微调不如在人类偏好数据上微调的效果好
    • InstructGPT 对 RLHF 微调之外的指令有良好的泛化能力
      在这里插入图片描述

Methods

一、方法概述
三步走,2和3不断迭代

  • 收集描述数据,进行有监督训练:标注者根据输入prompt分布给出输出,然后有监督地微调预训练的GPT-3
  • 收集比较数据,训练一个奖励模型:根据模型输出收集比较数据,标注者选取更好的输出,然后训练奖励模型预测该输出。初步训练Reward Model,有监督。
  • 使用PPO优化奖励模型,强化学习:RM输出作为一个数值reward,使用 PPO 算法微调监督策略以优化此奖励数值。

二、数据集

  • 提示主要由用户提交给OpenAI API的文本提示组成,用户会被告知他们的数据可能会被用于训练下一步的模型。
  • 去重:有共同长前缀的 prompt,每个用户 ID 的 prompt 数量限制为 200 个,并通过用户id做数据集切分,保证训练集和测试集不重叠,没有数据污染,并过滤掉用户id信息。
  • 冷启动:标注员自己编写 prompt,三种类型
    • Plain:标注员提出任意的任务,确保任务具有足够的多样性
    • Few-shot:标注员提出一条指令,并为该指令提供多个查询/响应对
    • User-based:标注员提供与使用案例相关的 prompts
  • 通过以上prompt,产生三种数据集用于微调过程
    • SFT数据集,13k training prompts(API+人工标注)
    • RM 数据集,33k training prompts(API+人工标注)
    • PPO 数据集,31k training prompts(API),没有任何人工标签,仅根据模型输出
  • 数据类别以及示例
    在这里插入图片描述

三、训练任务

  • labelers写的prompts数据集与提交给早期 InstructGPT 模型的 prompt 数据集,且96% in English,后面探讨了 InstructGPT 对其他语言指令的响应能力以及完成代码任务的能力
  • 通过自然语言指令直接指定,“写一个关于青蛙的故事”
  • 间接指定:
    • few-shot examples:提供两个关于青蛙的故事作示例,让模型生成一个
    • implicit continuation:提供开头,让模型续写

要求标注员尽力推断每个 prompt 背后的用户意图, 并要求他们跳过那些任务非常模糊的 prompt。 标注员还会根据指导和其判断, 思考隐含的意图,如回答的真实性,潜在的有偏见或有毒输出。

四、人工数据收集
为了生成示范和对比数据,以及进行结果评估

  • 选择一组标注员,他们对不同人口分布的偏好很敏锐,并擅长识别潜在的有害输出
  • 对齐冲突的处理:训练阶段优先考虑对用户的有用性,最终评估阶段优先考虑真实性和无害性
  • 额外筛选对照组标注员,验证泛化能力

五、 模型
基于GPT-3进行微调,虽然是在webdata分布上训练,适用于广泛的下游任务,但缺乏人类的行为特征

  • Supervised fine-tuning (SFT):微调时会得到很多个 SFT 模型。最后根据其在 validation set 上的 RM score选择最终的 SFT 模型。虽然1 epoch后会在验证集过拟合,但越多的epoch对 RM 分数和人类偏好得分都有帮助。

  • Reward modeling (RM):

    • 去掉SFT的unembedding层,作为模型训练,输入prompt和response,输出RM数值分数;
    • 使用了6B,节省了很多计算,并且发现175B训练不稳定,不适合。
    • 训练数据为两个模型输出结果的比较数据集(相同输入),CE loss
    • k=4或9的输出要求labeler排名,这样每个prompt得到 C 2 k C^k_2 C2k个对比数据,比较在每个标记任务中都非常相关,简单地将比较打乱到一个数据集中,数据集上的单次传递会导致奖励模型过拟合,将每个prompt的所有对比作为单个batch训练。
    • 损失函数:x为prompt,y为输出,w和l为一对comparison。由于 RM loss 对奖励的平移不变,我们使用一个 bias 来对奖励模型进行归一化,这样标注员的示范在进行 RL 之前的平均分数为 0
      在这里插入图片描述
  • Reinforcement learning (RL):使用PPO微调SFT模型。

    • 环境为:给定一个随机用户的prompt期望得到一个response;
    • RM模型根据给出的prompt和response生成一个reward,结束这一轮。
    • 从SFT模型添加对每个token的KL惩罚,以减轻RM 过度优化。从RM初始化值函数,称这个过程为PPO。
    • PPO-ptx:混合 pretraining gradients 至 PPO gradients,防止在公开数据集的性能退化。损失函数如下:
      在这里插入图片描述
  • 对比基线:SFT模型、GPT-3、GPT-3-prompted以及在 FLAN 和 T0 数据集上微调过的 175B GPT-3。

六、 评估
目标:训练符合用户意图的模型,helpful, honest, and harmless

  • helpful:主要指标是标注员的偏好评分,但标注员不是生成 prompt 的用户,用户的实际意图可能与标注员通过prompt理解的意图有偏差
  • honest/truthfulness:模型关于世界的陈述是否真实衡量
  • harmless:让标注员从一个用户助理的角度来评估输出是否恰当
    Evaluations on API distribution:在 OpenAI API 真实用户的 prompts 上的表现,指标为人类偏好评分
    Evaluations on public NLP datasets:两种数据集:能衡量模型安全性的数据集,特别是真实性、毒性和偏见;能衡量在传统 NLP 任务(如问答、阅读理解和摘要)上的 zero-shot 性能的数据集。

Experiments

一、Results on the API distribution
横纵块表示prompt来源与标注者来源:

在这里插入图片描述
在这里插入图片描述
二、公共NLP测试集
在这里插入图片描述
在这里插入图片描述
三、case study
在这里插入图片描述

四、限制
(1)当给出带有错误前提的指令时,模型有时会错误地假设前提为真,(2)模型可能会过度对冲;当给出一个简单的问题时,它有时会说这个问题没有一个答案,并给出多个可能的答案,即使上下文中有一个相当明确的答案,并且(3)当指令包含多个显式约束时(例如“列出20世纪30年代在法国拍摄的10部电影”),或者当约束对语言模型具有挑战性时(例如用指定数量的句子编写摘要),模型的性能会降低。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值