InstructGPT——利用SFT与人类反馈强化学习对齐人类意图

无监督训练的gpt3(GPT3——少样本示例推动下的通用语言模型雏形) 虽然具有强大的能力,但是在遵循用户意图/指令方面存在不足,如生成虚假、有毒或无用内容,依赖少样本提示等方法的引导。

这是因为其无监督训练目标与 “遵循用户指令并保障安全有益” 的目标不一致。也许无监督训练更多的是让语言模型具备了海量知识,但对于怎么遵循用户指令给出有益回答,语言模型还需要进一步学习。openai随后推出的 InstructGPT(Training language models to follow instructions with human fdeeedback) ,通过人类反馈微调(fine-tuning with human feedback) gpt3, 让语言模型做到这点。

方法

作者结合监督学习和人类反馈强化学习(RLHF)微调 GPT-3。

  1. 先收集标注员撰写的提示和 OpenAI API 提交的提示(注意:提示,任务描述,提示词等用语意思相近,文章根据原始论文的用语尽量还原,如gpt2的论文就没有用提示/提示词这种说法,InstructGPT论文逐渐统一用提示和提示词的说法,而不再用任务描述之类的语言),标注回复,形成示范数据集,用监督学习微调 GPT-3,得到SFT-GPT3;
  2. 接着收集不同模型输出的比较数据(对于每个输入,多个模型给出输出,标注员按照评估标准,标注出这些输出的排名),训练奖励模型RM;
  3. 最后以SFT-GPT3 为起点,用近端策略优化算法(PPO)基于奖励模型优化策略,得到InstructGPT”

下图给出了这三步的说明:

在这里插入图片描述

数据集

训练模型所使用的数据集有两个来源:

  1. openai 雇佣的标注人员(大约40人)会标注一部分数据,包括提示词(prompts)及答案
  2. openai的用户通过openai api/ openai 早期的实验网站提交的提示词

根据三种训练任务。这些数据集分为三类:

  1. 监督微调(SFT)数据集,带有标注者的标注,用于训练我们的 SFT 模型;
  2. 偏好模型(RM)数据集,带有标注者对模型输出的排序标注,用于训练我们的 RM 模型
  3. 近端策略优化(PPO)数据集,没有任何人工标注,用作基于人类反馈的强化学习(RLHF)微调的输入。SFT 数据集包含约 1.3 万个训练提示(来自 API 和标注者编写),RM 数据集有 3.3 万个训练提示(来自 API 和标注者编写),PPO 数据集有 3.1 万个训练提示(仅来自 API).

下表展示了数据集的分布和示例:

在这里插入图片描述

训练

1 SFT阶段

监督微调比较明了,模型GPT3和监督数据集前面都已说明,用经典语言模型建模+交叉熵损失优化,使模型拟合标注提示和答案。

2 RM模型训练

SFT训练好后,利用SFT得到的模型对同一个提示,给出多个回复,再由标注人员对回复给出排序标注,收集到RM训练所用数据集。

利用这个数据集训练RM模型,RM的输入是提示和回复,输出是奖励值(RM模型架构 接近GPT3架构,替换GPT3架构的输出层为投影层,RM模型接受提示和回复后输出标量而不是输入序列输出序列)。 给定一个提示x和两个回复 y w y_w yw y l y_l yl,输入到RM模型得到两个对应的奖励值。训练目标是使RM模型能够给标注人员觉得好的回复 y w y_w yw更高的奖励值。损失函数使用常见的成对损失函数。

优化目标为:

在这里插入图片描述

3 PPO 和 PPO-ptx强化学习

作者使用PPO和PPO-ptx算法,对SFT-GPT3进行微调,使新模型能够更容易输出 被奖励模型认为好的回复,也就是符合人类喜好/标注员喜好的输出。PPO-ptx算法的优化目标为:

在这里插入图片描述
第一项是利用奖励模型计算强化学习模型输出的奖励,使强化学习模型的输出最大化奖励模型的奖励值。第二项(超参 beta 控制的项)是衡量SFT-GPT3和强化学习模型的输出分布差异,使强化学习模型输出不至于偏离SFT-GPT3输出太远(强化学习会损害SFT-GPT3性能,第一项不能过度优化),第三项是衡量强化学习模型生成预训练数据集中文本的能力,使强化学习模型不要遗忘预训练阶段学到的知识。

PPO算法是PPO-ptx算法的简化,优化目标为上述公式去掉最后一项。

实验评估

得到 InstructGPT后,在不同的提示词下(左图:用户通过 API 提交给 GPT3 模型的提示词的结果;右图:通过 API 提交给 InstructGPT模型的提示词结果),作者比较了不同模型回复的对比结果,所有模型都会跟SFT-GPT的回复比较,然后由标注人员投票哪个回复更好。

在这里插入图片描述

标注人员明显更喜欢 InstructGPT的结果,InstructGPT的胜率高。

标注员还在几个更具体的维度上也对 InstructGPT 的输出给予了好评。遵循限制,指令遵循,幻觉,回复恰当。具体来说,与 GPT-3 相比,InstructGPT 的输出在客户助手场景中更合适,更常遵循指令中定义的明确限制(例如 “答案篇幅不超过两段”),更不容易完全不遵循正确的指令,并且在封闭领域的任务中编造事实(“产生幻觉”)的情况更少。这些结果表明,InstructGPT 模型比 GPT-3 更可靠,也更容易控制。
在这里插入图片描述

回复示例

作者还给出了gpt3和instrcutGPT的部分经过特意挑选的回复示例,通过观察这些示例,我们发现instrcutGPT确实完成了进化。

在这里插入图片描述

在这里插入图片描述

社会影响

通过SFT和人类反馈强化学习(RLHF)的方法,InstructGPT 显著提升了语言模型的安全性和实用性,减少了生成虚假、有毒或无用内容的可能性。这对于构建更值得信赖的 AI 系统至关重要。

然而,InstructGPT 的进步也带来了一些潜在的社会挑战。首先,模型的训练依赖人类标注员的偏好,而这些偏好可能受到公司价值观、文化、地域或个人主观性的影响,导致模型输出可能存在隐性偏见。

总结

通过监督微调(SFT)和基于人类反馈的强化学习(RLHF),GPT3得以进化为InstructGPT,显著提升了遵循用户意图和指令的能力,同时改善了输出内容的安全性和实用性。

这一工作开启了基于人类反馈微调的大模型新范式。

后续

  • InstructGPT 的成功为 ChatGPT 的诞生奠定了关键技术基础。不到一年后, 2022 年 11 月 30 日ChatGPT 由 OpenAI 正式推出。
  • InstructGPT 是 OpenAI 最后一篇公开的核心技术论文,之后 OpenAI 减少了核心技术论文的发表。
### SFT强化学习中的应用实现 #### 超参数微调(Supervised Fine-Tuning, SFT) 超参数微调(SFT)是一种常见的方法,用于调整预训练模型以适应特定的任务需求。尽管SFT通常依赖于大量标注数据,在某些情况下也可以结合强化学习(RL),从而减少对监督数据的依赖并提高模型性能。 在当前讨论中提到的研究表明,即使没有传统的监督细调(SFT),仅依靠强化学习也能显著提升大型语言模型(LLM)的推理能力[^2]。这说明了纯强化学习路径的有效性及其潜在优势——即降低数据获取成本的同时保持甚至增强模型表现。 然而,如果考虑将SFT应用于强化学习框架下,则可以通过以下方式实现: 1. **初始化阶段**: 使用已有高质量对话或其他形式的人类反馈作为初始输入源进行初步SFT处理; 2. **混合训练模式**: 将部分经过人工筛选后的正向样本加入到整个训练过程中去引导策略网络更好地理解目标领域内的语义关系; 3. **持续交互优化**: 基于环境返回信号不断更新权重直至达到预期效果为止。 下面给出一段伪代码表示上述逻辑流程的一部分: ```python def sft_reinforcement_learning(model, env, episodes=1000): optimizer = Adam(model.parameters(), lr=learning_rate) for episode in range(episodes): state = env.reset() while True: action_probabilities = model(state) action_distribution = Categorical(action_probabilities) sampled_action = action_distribution.sample() next_state, reward, done, _ = env.step(sampled_action.item()) loss = compute_loss(reward, action_distribution.log_prob(sampled_action)) optimizer.zero_grad() loss.backward() optimizer.step() if done: break state = next_state return model ``` 值得注意的是,虽然这种方法理论上可行,但在实际操作层面仍需克服诸多挑战比如计算资源消耗巨大等问题。因此具体实施方案还需根据项目实际情况灵活调整。 有关此主题更深入探讨可以参考相关文献资料进一步研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值