最近 ChatGPT 非常火,不过 OpenAI 还没发布它的论文,依据它的详情页面和介绍能够发现它是依据 InstructGPT 计划做的,咱们能够先从 InstructGPT 入手看看它是怎么经过学习人类喜好提高模型作用的。

我是 Andy.Qin,一个想创造哆啦 A 梦的 Maker,更多好文章能够到我的博客:qin.news

论文来自 OpenAI 的 《Training language models to follow instructions with human feedback》

OpenAI 的 GPT-3,本质上是依据上下文的生成模型。 这意味着当给 GPT-3 某种上下文内容时,它会测验填充其他的内容。例如,假设给它句子的前半部分,它将测验扩大推测句子的下半部分,给一个问句,会给出答复,本来的初衷只能用来生成文字,但大道至简,一通百通,已然能够了解文字,那么全部依据自然言语的使命都有了被 GTP-3 涉足的或许性,假设给它上一篇论文的前半部分,它将生成其他的论文,假设给他一段代码的描述,在必定条件下,GPT-3 就能够给出代码的具体内容。

尽管今日的大规模预练习言语模型 GPT-3,在广泛的自然言语处理(NLP)使命中取得了惊人的功用,但这些模型经常会生成与用户期望不一致的非预期输出。此外,这些产出也或许带有成见、虚伪或有害、或许造成负面的社会影响的信息。

经过 《Training language models to follow instructions with human feedback》论文中的练习计划得到的 InstructGPT,能够很大程度上缓解上述的问题。

让咱们来看个 InstructGPT 和 GPT3 的比方。

相同输入 Write a short story about the moon and the stars.

InstructGPT:

Write a short story about the moon and the stars:
Once upon a time, the moon and the stars lived together in the sky. They were the best of friends, and they loved spending their time together. The moon would light up the sky at night, and the stars would twinkle and shine. They were always happy and they never fought.
But one day, the moon and the stars began to grow apart. The moon started to feel left out and the stars began to ignore her. The moon didn’t understand what was happening, and she felt very lonely.
One night, the moon decided to take a walk through the sky. She passed by all the other planets and stars, but they all just ignored her. The moon began to cry and she felt more alone than ever.
Suddenly, the moon heard a voice. It was the sun. He had been watching the moon from a distance and he had seen how sad she was. The sun told the moon that he loved her and that he would always be there for her. The moon was so happy to hear this, and she felt much better.
The moon and the sun went back to the sky and they were finally able to be happy again.

GPT3:

Does the moon like the stars? Does the moon like the stars? Does the moon like the stars? Does the moon like the stars? Does the moon like the stars? Does the moon like the stars? Does the moon like the stars? Does the moon like the stars? Does the moon like the stars?

咱们能够看到 InstructGPT 相比 GPT3 进步很大。

首要流程

InstructGPT 首要是经过对超大言语模型的微调完结的,运用了来自人类反响的强化学习计划—— RLHF( Christiano et al., 2017; Stiennon et al., 2020)来微调 GPT-3,这种技术将人类的偏好作为激励信号来微调模型。OpenAI 雇佣了一个由 40 个来自承包商组成的团队来进行下面的步骤。

InstructGPT 浅析

  • 工程师团队规划了一个依据 prompt 练习方法的数据集,里面有大量的提示文本,而且具体阐明晰下流使命是什么。将这个练习集交给人类标示记录人类的答复,并拿这个数据集去经过 prompt 的方法微调 GPT-3。
  • 微调后的模型姑且称为 GPT-3-1 吧,用 GPT-3-1 去猜测第一步的数据集的使命得到 N 个成果,而且让标示人员标示每个选项的好坏并把这个标示后的数据集用来练习奖赏模型(RM)。
  • 运用 PPO 的战略来更新参数,拿 GPT-3-1 再猜测一次数据集的成果经过第二步的奖赏模型进行打分,核算奖赏(reward)。最后将这个奖赏分数经过 PPO 给到 GPT-3-1 进行练习。

当然上面这个方法或许会引起在在其它一些学术 NLP 使命上的表现很差,会让看到的运用者很担心作用然后不挑选这个模型。为了缓解这个问题,在微调期间,混合了一小部分用于练习 GPT-3 的原始数据,并经过将 PPO 更新与增加预练习散布 (PPO-ptx) 对数似然的更新混合进行练习。

与 GPT-3 的输出相比,打标签者明显更喜爱 InstructGPT 输出。在咱们的测验集上,1.3B 参数 InstructGPT 模型的输出优于 175B GPT-3 的输出,尽管参数少了 100 多倍。OpenAI 还探求了 InstructGPT 的功用,发现它能够遵从指令来答复有关代码的问题,有时还会遵从不同言语的指令,尽管这些指令在微调中非常稀有。 相比之下,GPT-3 尽管能够履行这些使命,但需要更细心的提示,而且不必定会遵从指示。 这个成果令人兴奋,由于它标明咱们的模型能够了解“遵从指令”的概念。

InstructGPT 依然或许无法遵从指令、假造虚伪的作业、对简单问题给出长长的答案,或许无法检测到带有过错前提的指令。总的来说成果标明,运用人类偏好微调大型言语模型能够明显改善它们在广泛使命中的行为,尽管要提高它们的安全性和可靠性还有许多作业要做。

咱们来看下每一步的细节吧!

RLHF

全称是 reinforcement learning from human feedback。依据论文中引证的论文,分为 RL 和 HF 两个部分。咱们先从 RL 部分的论文 《Deep Reinforcement Learning from Human Preferences》开始看起。

RL 部分摘自博主 云端FFF

奖赏函数规划是强化学习中的一个难题。从本质上讲,奖赏函数是对使命方针的一种笼统,也是咱们向 agent 传达使命方针的桥梁。当使命非常杂乱时,很难将方针转化为奖赏函数这种形式化、数字化的表征。试想一下,怎么为煎鸡蛋这个使命规划奖赏函数?

尽管将煎鸡蛋这个使命数字化笼统为奖赏函数很困难,可是咱们人类履行这个使命则没什么难度,也便是说,咱们能够以相对低的成本获取许多完结这个使命的专家轨道,这样咱们就能够做仿照学习(IL),比方咱们能够先用逆强化学习(IRL)方法从专家轨道中恢复奖赏函数,再用这个奖赏函数做 RL。这种方法尽管有效,可是仍存在约束,假设使命太难了,以至于普通人很难完结呢?比方遥控玩具飞机做特技,或许控制一个虚拟机器人后空翻,这些特殊使命需要练习有素的专业人士供给专家轨道,成本就又上去了。

从供给奖赏函数到供给使命轨道,咱们下降了对人能力的要求,然后下降成本。按这个思路持续下去,尽管咱们不能给出杂乱使命的完好轨道,可是点评某条轨道的作用仍是比较简单的。比方后空翻使命,咱们一眼就能看出某段轨道是不是后空翻,而且能对完结质量给出大约的点评。明显,能够把这个点评作为这一段轨道的 return,履行 MC 类的 RL 方法

但咱们普通人不是专业裁判,且一般没有一个翔实的点评规范,难以给出安稳的定量点评分数。所以咱们再次下降要求,只需人类定性地比照两条轨道哪个比较好就行了。

InstructGPT 浅析

这篇论文提出的便是一种利用上述 “人类偏好” 进行 DRL 的方法,非正式地说, agent 的方针是经过向人类发出尽量少的偏好比较请求,生成人类喜爱的轨道。

HF 的论文是《Learning to Summarize with Human Feedback》。

HF 这篇论文的其亮点在于:以人类偏好替代自动化评测方法(如ROUGE、BLEU)为练习方针,用人类反响作为奖赏进行强化学习,功用表现非常惊艳。

InstructGPT 浅析

关于较为杂乱的 NLP 使命,怎么进行评测、怎么结构精准的丢失函数。

已困扰了 NLP researchers 多年。以文本摘要为例,若选用自动化目标,模型的生成成果将逐步迫临数据集内人工手写的摘要。但这种点评方法其实并不契合咱们真正的练习方针。咱们希望生成的并非“与数据集附近的摘要”,而是一篇“好的摘要”——它应该精简、精确、概括性强、言语连接流畅。用 BLEU 和 ROUGE 明显评测不了这些维度。

此外,过度仿照数据集内容还存在许多更深层的隐患。大量数据集,比方本作业选用的 TL;DR 数据集,都是直接从网络上爬取下来的。其内容是由不计其数、五花八门的互联网用户上传。其质量良莠不齐是一方面,更严峻的是其间不乏一些风险暴力、实在性存疑的言辞。这些互联网的暗面是咱们不希望 AI 学到的。

全体流程可概括为以下 4 步:

  • 练习初始摘要模型 Supervised Baseline。
  • 构建人类反响数据集,不断人工比较两篇摘要优劣。
  • 用上述“人类反响数据集”练习一个Reward Model,仿照人类偏好对摘要打分
  • 用强化学习的方法持续练习 Supervised Baseline,每一步的奖赏由上述 Reward Model 给出,然后学习契合人类偏好的摘要生成战略。

人工标示

为了第一个 InstructGPT 模型,咱们要求标示者自己编写提示。 这是由于咱们需要一个相似指令的提示的初始来源来引导这个过程,而这些类型的提示并不经常提交给供给了 API 上的线上的 GPT-3 模型。 咱们要求贴标签者写出三种类型的提示:

  1. 简单:咱们仅仅要求贴标签者提出一个任意使命,一同保证使命具有足够的多样性。
  2. Few-shot:咱们要求标示者提出一条指令,以及该指令的多个查询/呼应对。
  3. 依据用户:咱们在 OpenAI API 的候补名单请求中陈述了许多用例。

依据这些提示,咱们生成了三个用于微调过程的不同数据集(类别散布见下方图表):(1) 咱们的 SFT 数据集,带有用于练习咱们的 SFT 模型的标签器演示,(2) 咱们的 RM 数据集,带有用于练习的模型输出的标签器排名,和 (3) 咱们的 PPO 数据集,没有任何人工标签,用作 RLHF 微调的输入。

InstructGPT 浅析

InstructGPT 浅析

在筛选标示者上,与供应商紧密合作,经过入职流程、为每个使命供给具体的阐明、有个聊天室帮助答复问题等等来帮助标示者们在同个使命下有相同的偏好。

InstructGPT 浅析

InstructGPT 浅析

完好实例能够下载下方的文档:

[

[PUBLIC] InstructGPT: Final labeling instructions

Final labeling instructions You are given a text-based description of a task, submitted by a user. This task description may be in the form of an explicit instruction (e.g. “Write a story about a wise frog.”). The task may also be specified indirectly, for example by using several examples of th…

](docs.google.com/document/u/…)

InstructGPT 浅析

InstructGPT 浅析

InstructGPT 浅析

有监督微调(SFT)

运用了有监督学习在咱们的标签演示中微调 GPT-3。 咱们练习了 16 个epochs,运用余弦学习率衰减和 0.2 的残差丢失。 咱们依据验证集上的 RM 分数进行终究的 SFT 模型挑选。 与 Wu 等人相似 (2021),咱们发现咱们的 SFT 模型在 1 个时期后对验证丢失过度拟合; 可是,咱们发现尽管存在这种过度拟合,但更多时期的练习有助于 RM 分数和人类偏好评级。

奖赏建模(RM)

移除了终究反嵌入层的 SFT 模型开始,咱们练习了一个模型来接纳提示和呼应,并输出标量奖赏。 在本文中,咱们只运用 6B RM,由于这样能够节省大量核算,而且咱们发现 175B RM 练习或许不安稳,因而不太合适用作 RL 期间的值函数。

在 Stiennon 等人 (2020) 的研讨中,RM 在同一输入的两个模型输出之间进行比较的数据集上进行练习。 他们运用穿插熵丢失,将比较作为标签——奖赏的差异代表人类贴标签者更喜爱一种反响的对数几率。

InstructGPT 浅析

InstructGPT 浅析

强化学习(RL)

按照 Stiennon 等人 (2020),咱们运用 PPO 在咱们的环境中微调了 SFT 模型(Schulman 等人,2017)。 该环境是一个 bandit 环境,它出现随机的客户提示并期望对提示的呼应。 给定提示和呼应,它会产生由奖赏模型确定的奖赏并结束 episode。 此外,咱们在每个token上添加了 SFT 模型的每个 token 的 KL penalty,以减轻奖赏模型的过度优。 值函数从 RM 初始化。 咱们称这些模型为“PPO”。

咱们还测验将预练习梯度混合到 PPO 梯度中,以修复公共 NLP 数据集上的功用回归。 咱们称这些模型为“PPO-ptx”。 咱们在 RL 练习中最大化以下组合方针函数:

InstructGPT 浅析

基线模型(Baseline)

咱们将 PPO 模型的功用与咱们的 SFT 模型和 GPT-3 进行了比较。 咱们还与 GPT-3 进行了比较,当它被供给一个 few-shot 前缀以“提示”它进入指令跟随模式(GPT-3-prompted)时。 此前缀添加到用户指定的指令之前。

咱们还在 FLAN(Wei 等人,2021 年)和 T0(Sanh 等人,2021 年)数据集大将 InstructGPT 与微调 175B GPT-3 进行了比较,这两个数据集都包括各种 NLP 使命,并关于每个使命结合了自然言语指令(数据集在包括的 NLP 数据集和运用的指令风格方面有所不同)。 咱们分别在大约 100 万个示例上对它们进行微调,并挑选在验证集上取得最高奖赏模型分数的检查点。

点评

为了咱们的言语使命,咱们运用相似于 Askell 等人的结构。 (2021),他们定义了有帮助、诚笃和无害的模型。

模型应该遵从阐明,但也能够从几回提示或其他可解释的模式(例如Q: {question}\nA:)中推断出目的。 由于给定提示的目的或许不清楚或不置可否,因而咱们依赖于贴标签者的判别,而咱们的首要目标是贴标签者的偏好评级。 可是,由于咱们的标示者不是生成提示的用户,因而用户的实际目的与标示者仅阅览提示后以为的目的之间或许存在差异。

目前尚不清楚怎么衡量生成模型的是否诚笃,这需要将模型的实际输出与其对正确输出的“崇奉”进行比较,而且由于模型是一个大黑盒子,咱们无法推断出它的崇奉。 相反,咱们运用两个目标来衡量实在性——模型关于世界的陈述是否实在:(1) 点评咱们的模型在封闭域使命上假造信息的倾向,以及 (2) 运用了 TruthfulQA 数据集。

衡量言语模型的损害也带来了许多挑战。运用一套更具体的署理规范,旨在捕获已布置模型中行为的不同方面,这些行为终究或许是有害的:咱们让标签点评输出在客户助理的上下文中是否不合适,诋毁受维护的类别 ,或包括色情或暴力内容。 咱们还在旨在丈量偏差和毒性的数据集上对咱们的模型进行基准测验,咱们能够将定量点评分为两个独立的部分:

  • API 散布点评。 咱们的首要目标是人类对一组提示的偏好评级,这些提示来自与咱们的练习散布相同的来源。 当运用来自 API 的提示进行点评时,咱们只挑选咱们未包括在培训中的客户的提示。 可是,鉴于咱们的练习提示旨在与 InstructGPT 模型一同运用,它们很或许不利于 GPT-3 基线。 因而,咱们还点评了在 API 上提交给 GPT-3 模型的提示; 这些提示一般不是“instruction following”风格,而是专门为 GPT-3 规划的。 在这两种情况下,关于每个模型,咱们核算其输出优于基线战略的频率; 咱们挑选咱们的 175B SFT 类型作为基准,由于它的功用接近中心水平。 此外,咱们要求标示者以 1-7 的李克特量表来判别每个呼应的全体质量,并为每个模型输出收集一系列元数据。

InstructGPT 浅析

  • 对公共 NLP 数据集的点评。 咱们点评两种类型的公共数据集:那些捕捉言语模型安全性方面的数据集,特别是实在性、毒性和成见,以及那些捕捉传统 NLP 使命(如问答、阅览了解和摘要)的零样本功用的数据集。 咱们还在 RealToxicityPrompts 数据集上对毒性进行了人体点评(Gehman 等人,2020 年)。 咱们正在发布一切依据采样的 NLP 使命的模型样本。

总结

相比于大规模的预练习,经过与人类对齐的方法的练习成本更低而且能到达更好的作用,相同也能取得更大的商业成本效益。InstructGPT 将“遵从指令”泛化为咱们不对其进行监督的设置,例如非英言语语使命和与代码相关的使命,具体原因还不知道能够持续研讨下去。

遵从指令的话像在下面这个博文中有 ChatGPT 把自己想象成一个命令行终端的作用。

Building A Virtual Machine inside ChatGPT

不过由所以与人类的偏好对齐,会受到人类的价值观、成长经历、人种、性别、崇奉等的影响,也许在国内做这个更具有优势?那么怎么下降标示人员受到自己崇奉、价值观等等的影响标示出中立的数据也是比较难的,其次是究竟什么样的成果是更契合绝大多数实际用户的偏好的呢?

也许咱们能够经过更多的方法如更好的过滤数据的战略等等来削减一些有损害的数据。比方在国内政治、黄色、暴力等等是绝对不允许输入和输出的。

RLHF 也许也有改善的空间,强化学习那块研讨短缺,找时间补补。

不过目前连 ChatGPT 也无法避免假造现实的问题,这方面看起来也是个很好的方向,也许得用一种方法让模型学会说”没有答案“。

对我来说这篇论文最大的意义是用强化学习的思路来改善模型的作用、以及怎么更好的让标示人员给出更中立、规范的标示、怎么更好的点评生成模型。

本文正在参加 人工智能创作者扶持计划