InstructGPT: Training language models to follow instructions with human feedback 原理详解


1. InstructGPT目标

InstructGPT 探讨了如何通过人类反馈来训练语言模型以更好地遵循用户的意图。通过对模型进行监督学习和强化学习,使其能够更好地满足用户的需求。实验结果表明,尽管 InstructGPT 仍然会犯一些简单的错误,但它在遵循用户意图、减少有毒输出等方面表现出色。

InstructGPT 原文:《Training language models to follow instructions
with human feedback》

图中是 InstructGPT 训练的三个步骤,蓝色箭头表示数据训练的流向:
在这里插入图片描述

(1)监督微调(SFT)。根据标注人员提供的数据对 GPT-3 模型进行微调;GPT 1-3 详解参考:《详解GPT-1到GPT-3的论文亮点以及实验结论》

(2)奖励模型(RM)训练。给定输入并对模型的多个输出进行打分排序,训练一个奖励模型来预测人类更喜欢的输出;

(3)近端策略优化(PPO)强化学习。用 RM 的输出作为奖励,使用 PPO 算法优化奖励策略。

PPO 论文《Proximal Policy Optimization Algorithms》。PPO(Proximal Policy Optimization,近端策略优化)是一种强化学习算法,由 John Schulman 等人在2017年提出。PPO 属于策略梯度方法,这类方法直接对策略(即模型的行为)进行优化,试图找到使得期望回报最大化的策略。PPO 已被广泛应用于各种强化学习场景,包括游戏、机器人控制以及自然语言处理中的序列决策问题,是目前最流行的强化学习算法之一。

2. 数据集

下表中是用于训练SFT、RM 和 PPO 模型的数据集的大小,labeler 表示来源于雇佣的标注人员,customer 表示来源于 API 接口用户。

在这里插入图片描述

2.1 SFT数据集

SFT 数据集用于训练第一步的 GPT-3 模型。SFT 数据集是通过一组由人类编写并用于指导语言模型行为的提示,由提示-答复对组成。来源包括:

(1)OpenAI 的 PlayGround 的用户;

(2)OpenAI 雇佣的40名标注人员,根据内容编写提示,内容包含以下部分:

  • 简单任务:标签人员编写一个任意任务,确保这些任务具有足够的多样性;
  • Few-shot 任务:标签人员编写多个查询/响应对;
  • 用户相关的任务:标签人员根据 OpenAI 的接口用例编写提示。

其中具体的内容类型:

在这里插入图片描述

例如:

类型内容
generationWrite a short story where a brown bear to the beach, makes friends with a seal, and then return home.
brainstormingList five ideas for how to regain enthusiasm for my career
extractExtract all place names from the article below: {news article}

2.2 RM数据集

RM 数据集用于训练第二步中的奖励模型。InstructGPT 的方法是让模型生成一系列候选文本,然后由标注人员根据内容质量对这些文本进行排序,通过人工给那些有毒有害的生成内容打低分,以避免模型产生不受欢迎的内容。这个数据集用于进一步优化模型的行为,使其更符合人类期望。

例如,下图是 OpenAI 雇佣的标注人员对输出进行排序的界面

在这里插入图片描述

2.3 PPO数据集

PPO数据集是通过强化学习从人类反馈中获得的数据集。它包含了人类评估员给出的奖励信号,用于调整模型参数以改进其性能。

3. 训练细节

(1)所有模型架构都使用了 GPT-3 架构;

(2)对于 RM 模型,原始模型的 decode 层被替换为投影层以输出标量值;

(3)所有模型都使用 fp16 权重和激活值,并且具有 fp32 权重主副本;

(4)所有的语言模型和强化学习策略都有一个上下文长度为 2k 个标记。将超过 1k 个标记的提示过滤掉,并将最大响应长度限制为 1k 个标记。

(5)所有模型都使用 Adam 优化器进行训练,其中 β 1 = 0.9 , β 2 = 0.95 β_1=0.9,β_2=0.95 β1=0.9β2=0.95

3.1 SFT训练

(1) e p o c h = 16 epoch=16 epoch=16 d r o p o u t = 0.2 dropout=0.2 dropout=0.2

(2)学习率采用使用余弦,学习率衰减至原始学习率的 10%,并且不进行学习率预热;

(3)对于 1.3B 参数和 6B 参数模型,初始学习率为 9.65 × 1 0 − 6 9.65×10^-6 9.65×106,batchsize 为 32;

(4)对于 175B 参数模型,初始学习率为 5.03 × 1 0 − 6 5.03×10^-6 5.03×106 的学习率,batchsize 为 8;

3.2 RM训练

RM 在初始 6B 的 GPT-3 上训练。该 GPT-3 模型已经在多种公共 NLP 数据集(ARC、BoolQ、CoQA、DROP、MultiNLI、OpenBookQA、QuAC、RACE 和 Winogrande)上进行了微调。

(1)采用 6B 是因为在该参数下 RM 模型在广泛的学习率下都很稳定,训练效率高,且可生成同等能力的 PPO 模型;

(2)学习率采用使用余弦,学习率衰减至原始学习率的 10%;

(3)学习率初始为 9 × 1 0 − 6 9×10^-6 9×106,batchsize 为 64;

(4)损失函数的数学表达式:

loss ( θ ) = − 1 ( K 2 ) E ( x , y w , y l ) ∼ D [ log ⁡ ( σ ( r θ ( x , y w ) − r θ ( x , y l ) ) ) ] \text{loss}(\theta) = -\frac{1}{K \choose 2} \mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \left( \sigma(r_\theta(x, y_w) - r_\theta(x, y_l)) \right) \right] loss(θ)=(2K)1E(x,yw,yl)D[log(σ(rθ(x,yw)rθ(x,yl)))]

其中:

  • r θ ( x , y ) r_\theta(x, y) rθ(x,y) 是奖励模型对于给定的提示 $ x $ 和完成 $ y $ 的标量输出,参数为 $ \theta $;
  • y w y_w yw y l y_l yl 同一个提示下的不同响应,用于对比输出结果;
  • D D D 是人类标注的比较数据集;
  • K K K 是输出的响应数量;
  • σ \sigma σ 是 sigmoid 函数,用于将输出映射到0和1之间,表示概率。

3.3 RLHF训练

RLHF(Reinforcement Learning from Human Feedback,从人类反馈中进行强化学习)。从预训练好的 GPT-3 模型初始化 RLHF 模型,并在数据集上对它进行两轮有监督微调,在微调过程中还混合了 10% 的预训练数据。

微调阶段:

(1)学习率采用使用余弦,学习率衰减至原始学习率的 10%;

(2)对于 1.3B 参数和 6B 参数模型,初始学习率为 5 × 1 0 − 6 5×10^-6 5×106 1.04 × 1 0 − 6 1.04×10^-6 1.04×106,batchsize 为 32;

(3)对于 175B 参数模型,初始学习率为 2.45 × 1 0 − 6 2.45×10^-6 2.45×106 的学习率,batchsize 为 8;

RLHF训练:

(1)从上述微调的模型中初始化强化学习策略,计算 KL 奖励;

(2)batchsize 为512,每个 batch 被随机拆分为8个 minibatch;

(3)在前10次迭代中,从峰值学习率的十分之一开始,应用恒定的学习率进行预热。权重采用指数移动平均值,衰减率为0.992;

(4)PPO剪切比设置为0.2,rollout 采样温度为1;

(5)1.3B 和6B 策略的价值函数采用固定学习率为 9 × 1 0 − 6 9×10^-6 9×106,而175B策略采用 5 × 1 0 − 6 5×10^-6 5×106

(6)强化学习的目标函数如下:

objective ( ϕ ) = E ( x , y ) ∼ π ϕ R L [ r θ ( x , y ) − β log ⁡ ( π ϕ R L ( y ∣ x ) π SFT ( y ∣ x ) ) ] + γ E x ∼ D pretrain [ log ⁡ ( π ϕ R L ( x ) ) ] \text{objective}(\phi) = \mathbb{E}_{(x, y) \sim \pi_{\phi}^{RL}} \left[ r_\theta(x, y) - \beta \log \left( \frac{\pi_{\phi}^{RL}(y | x)}{\pi^{\text{SFT}}(y | x)} \right) \right] + \gamma \mathbb{E}_{x \sim D_{\text{pretrain}}} \left[ \log(\pi_{\phi}^{RL}(x)) \right] objective(ϕ)=E(x,y)πϕRL[rθ(x,y)βlog(πSFT(yx)πϕRL(yx))]+γExDpretrain[log(πϕRL(x))]

其中:

  • 奖励模型输出(Reward Model Output): r θ ( x , y ) r_\theta(x, y) rθ(x,y) 是奖励模型对输入 x x x 和输出 y y y 的评分,反映了人类标注者对输出的偏好。

  • 策略梯度调整项(Policy Gradient Adjustment): 这一项 − β log ⁡ ( π ϕ R L ( y ∣ x ) π SFT ( y ∣ x ) ) -\beta \log \left( \frac{\pi_{\phi}^{RL}(y | x)}{\pi^{\text{SFT}}(y | x)} \right) βlog(πSFT(yx)πϕRL(yx)) 使用 KL 散度惩罚来调整 RL 策略 π ϕ R L \pi_{\phi}^{RL} πϕRL 与监督学习策略 π SFT \pi^{\text{SFT}} πSFT 之间的差异。 β \beta β 是控制这种调整强度的超参数。

  • 预训练分布一致性项(Pretraining Distribution Consistency): 这一项 γ E x ∼ D pretrain [ log ⁡ ( π ϕ R L ( x ) ) ] \gamma \mathbb{E}_{x \sim D_{\text{pretrain}}} \left[ \log(\pi_{\phi}^{RL}(x)) \right] γExDpretrain[log(πϕRL(x))] 通过最大化预训练数据分布 D pretrain D_{\text{pretrain}} Dpretrain 下的对数似然,来确保 RL 策略生成的输出与预训练模型的输出保持一致。 γ \gamma γ 是控制这一部分贡献的超参数。

4. 结论

(1)标注人员偏好 InstructGPT 输出:在测试集上,人类标注者显著偏好 InstructGPT 模型的输出而不是 GPT-3。即使是参数数量少100倍的1.3B 参数的 InstructGPT 模型,其输出也比175B 参数的GPT-3更受偏好;

(2)InstructGPT 在真实性方面表现更好:在 TruthfulQA 基准测试中,InstructGPT 生成真实且提供信息的回答的频率是 GPT-3 的两倍;

(3)InstructGPT 在减少毒性输出方面有改进,但在减少偏见方面没有显著改进:使用 RealToxicityPrompts 数据集进行自动和人类评估,发现当被提示要尊重时,InstructGPT 模型生成的有毒输出比 GPT-3少约25%。然而,在 Winogender 和 CrowSPairs 数据集上,InstructGP T并没有比 GPT-3 有显著的改进;

(4)通过修改 RLHF 微调过程,可以最大程度上降低在公共数据集上的性能退化:在 RLHF 微调期间,在某些公共 NLP 数据集上观察到性能退化。通过将 PPO 更新与增加预训练分布的对数似然的更新混合,可以大大减少这些数据集上的性能退化,同时不损害标注者的偏好分数;

(5)InstructGPT 模型输出能引起广泛人员的偏好:通过额外人员实验,发现他们偏好 InstructGPT 输出的程度与训练标注者大致相同;

(6)InstructGPT 仍然会犯简单的错误:例如,InstructGPT 可能无法遵循指令、编造事实、对简单问题给出长篇的犹豫不决的回答,或者无法检测到包含虚假前提的指令。


欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;

欢迎关注知乎/CSDN:SmallerFL

也欢迎关注我的wx公众号(精选高质量文章):一个比特定乾坤

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallerFL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值