【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型

news2025/1/11 15:07:34
InstructGPT:遵循人类反馈指令来训练语言模型
《Training language models to follow instructions with human feedback》

论文地址:https://arxiv.org/pdf/2203.02155.pdf

相关博客
【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型
【自然语言处理】【ChatGPT系列】大模型的涌现能力
【自然语言处理】【文本生成】CRINEG Loss:学习什么语言不建模
【自然语言处理】【文本生成】使用Transformers中的BART进行文本摘要
【自然语言处理】【文本生成】Transformers中使用约束Beam Search指导文本生成
【自然语言处理】【文本生成】Transformers中用于语言生成的不同解码方法
【自然语言处理】【文本生成】BART:用于自然语言生成、翻译和理解的降噪Sequence-to-Sequence预训练
【自然语言处理】【文本生成】UniLM:用于自然语言理解和生成的统一语言模型预训练
【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态

一、简介

​ 使语言模型更大并不能使其更好的遵循人类的指令。例如,大语言模型能够为用户生成不诚实、有毒性或者简单没什么帮助的输出。换句话说,这些没有并没有与用户对齐。本文展示了一种将语言模型对齐至用户意图的方法,其通过人类反馈在广泛的任务上进行微调。开始于一组标注者撰写的 prompts \text{prompts} prompts和提交至 OpenAI API \text{OpenAI API} OpenAI API prompts \text{prompts} prompts,然后收集一个由期望模型行为组成的标注者演示数据集,并使用监督学习的方法来微调 GPT-3 \text{GPT-3} GPT-3模型。之后,再收集一个模型输出排序的数据集,其使用来自人类反馈的强化学习进一步微调该监督模型。我们称得到的模型为 InstructGPT \text{InstructGPT} InstructGPT。在我们的 prompt \text{prompt} prompt分布上进行人类评估, 1.3B \text{1.3B} 1.3B参数的 InstructGPT \text{InstructGPT} InstructGPT模型的输出由于 175B GPT-3 \text{175B GPT-3} 175B GPT-3的输出,尽管有100倍参数量的差距。此外, InstructGPT \text{InstructGPT} InstructGPT模型在真实性和减少生成毒性上有改善。尽管 InstructGPT \text{InstructGPT} InstructGPT仍然会犯一些小错误,结果显示基于人类反馈的微调是一个对齐人类意图和语言模型的有前景的方向。

二、方法和实验细节

1. High-level \text{High-level} High-level方法

​ 本文的方法论遵循Ziegler et al.Stiennon et al.的工作,并且以及被应用于文本续写和摘要领域。起始时包含:预训练语言模型、 prompt \text{prompt} prompt分布(期望模型能够产生出的对齐输出)以及一队训练有素的人类标注师团队。然后应用下面三个步骤:

  • **步骤1:**收集演示数据 (demonstration data) \text{(demonstration data)} (demonstration data),并训练一个有监督的 policy \text{policy} policy

    标注者会提供 prompt \text{prompt} prompt演示数据,然后使用监督学习的方式在该数据上微调预训练的 GPT-3 \text{GPT-3} GPT-3模型。

  • **步骤2:**收集比较数据,并训练 reward \text{reward} reward模型

    给定一个输入后,模型会产生多个输出。标注者会指出哪个输出更喜欢,从而收集模型输出之间的比较数据集。基于该数据集训练一个 reward \text{reward} reward模型来预测人类偏好的输出。

  • **步骤3:**使用 PPO \text{PPO} PPO来针对 reward \text{reward} reward模型优化 policy \text{policy} policy

    reword \text{reword} reword模型的输出作为奖励。使用 PPO \text{PPO} PPO算法微调有监督的 policy \text{policy} policy来优化该奖励。

​ 步骤2和3可以连续迭代。在当前最优的 policy \text{policy} policy上收集更多的比较数据,然后用来训练新的 reword \text{reword} reword模型和新的 policy \text{policy} policy

2. 数据集

请添加图片描述

prompt \text{prompt} prompt数据集主要由提交给 OpenAI API \text{OpenAI API} OpenAI API的文本 prompt \text{prompt} prompt组成,特别是在 Playground \text{Playground} Playground接口上使用早期版本的 InstructGPT \text{InstructGPT} InstructGPT模型。在本文中,不使用来自使用产品 API \text{API} API的用户数据。基于用户 ID \text{ID} ID创建训练、验证和测试集,因此验证集和测试集不包含来自训练集中用户的数据。

​ 为了训练初始的 InstructGPT \text{InstructGPT} InstructGPT模型,要求标注者编写 prompts \text{prompts} prompts。这是因为需要类似指令的 prompt \text{prompt} prompt来引导流程,并且这种类型的 prompt \text{prompt} prompt并不会通过 API \text{API} API提交给正常的 GPT-3 \text{GPT-3} GPT-3。我们要求标注者撰写三种 prompts \text{prompts} prompts

  • Plain:要求标注者提出一个任意的任务,这样就能确保任务的多样性;
  • Few-shot:要求标注者提出一个 instruction \text{instruction} instruction,以及对应于该 instruction \text{instruction} instruction的多个 query/response \text{query/response} query/response对;
  • User-based:在 OpenAI API \text{OpenAI API} OpenAI API的等待列表中有大量的陈述用例。要求标注者针对用例来提出 prompts \text{prompts} prompts

对于这些 prompt \text{prompt} prompt,产生了用于微调的三个数据集:(1) SFT \text{SFT} SFT数据集,用来训练 SFT \text{SFT} SFT模型的演示数据;(2) RM \text{RM} RM数据集,标注者对模型输出进行了排序的数据集,用于训练 reword \text{reword} reword模型的数据;(3) PPO \text{PPO} PPO数据集,不需要任何人工标注,被用于 RLHF \text{RLHF} RLHF微调的输入数据。 SFT \text{SFT} SFT数据集包含13k的训练 prompts \text{prompts} prompts RM \text{RM} RM数据集包含33k的训练 prompts \text{prompts} prompts PPO \text{PPO} PPO数据集包含31k训练 prompts \text{prompts} prompts

​ 为了对数据集有一个直观感受,上表1展示了 API prompt \text{API prompt} API prompt的用例类别分布。大多数用例都是生成式的,而不是分类或者 QA \text{QA} QA。上表2也展示了一些说明性的 prompts \text{prompts} prompts

3. 任务

​ 训练任务有两个来源:(1) 由标注者编写的 prompts \text{prompts} prompts数据集;(2) 通过 API \text{API} API提交至早期 InstructGPT \text{InstructGPT} InstructGPT模型的 prompts \text{prompts} prompts数据集。这些 prompt \text{prompt} prompt非常多样,包括:生成、问答、对话、摘要、抽取和其他自然语言任务。数据集的96%是英文,但是我们还研究了本文模型回答其他语言的指示能力和完成代码任务的能力。

​ 对于每个自然语言 prompt \text{prompt} prompt,任务通常通过自然语言指令直接指定(例如:写一个关于聪明青蛙的故事),但也可以间接通过少数的几个例子指定(例如:提供一个故事的开头)。在每个例子中,要求标注者推断写下 prompt \text{prompt} prompt用户的意图,并要求跳过哪些意图不明确的 prompt \text{prompt} prompt。此外,标注者也被要求考虑隐含的意图,例如:真实性、潜在的毒性和偏见。

4. 人类数据收集

​ 为了能够产生演示数据 (demonstration) \text{(demonstration)} (demonstration)和比较数据 (comparison) \text{(comparison)} (comparison),在 Upwork \text{Upwork} Upwork ScaleAI \text{ScaleAI} ScaleAI上雇佣了40人的团队。相比于早期在摘要任务上收集人类偏好的数据,本文的输入涵盖了更加广泛的任务,偶尔还会包含有争议和敏感的话题。我们的目标是挑选一组标注者,其对不同人口群体的偏好更敏感,善于识别潜在有害的输出。因此,我们进行了筛选测试来衡量标注者在这些维度上的表现。我们选择在测试上表现好的标注者。

​ 在训练和评估时,对齐的准则可能存在冲突:例如用户请求可能有害的响应。在训练过程中,优先考虑对用户有帮助的。然而,在评估时要求标注者优先考虑真实性和有害性。

​ 正如Stiennon et al.的工作,我们在项目的过程中与标注者紧密合作。我们有一个培训项目标注者的入职流程,为每项任务撰写详细的说明,并在共享聊天室中回答标注者的问题。

​ 作为一个初步的研究,为了观察模型泛化到其他标注者偏好的能力,额外雇佣了一个独立的标注团队,其不产生任何的训练数据。这些标注者来自相同的供应商,但是不进行筛选测试。

​ 尽管任务很复杂,我们发现标注者之间的一致性非常高:经过培训的标注者有 72.5 ± 1.5 % 72.5\pm1.5\% 72.5±1.5%同意彼此意见,未经培训的标注者则有 77.3 ± 1.3 % 77.3\pm1.3\% 77.3±1.3%同意彼此意见。

5. 模型

​ 基础模型为 GPT-3 \text{GPT-3} GPT-3。该模型在广泛的网络数据上进行训练,并能够适应广泛的下游任务。基于该模型,使用三种不同的技术训练模型:

  • 监督微调 (Supervised fine-tuning,SFT) \text{(Supervised fine-tuning,SFT)} (Supervised fine-tuning,SFT)

    在标注数据上使用监督学习来微调 GPT-3 \text{GPT-3} GPT-3。训练16个epochs,使用cosine学习率衰减,以及0.2的残差dropout。基于验证集上的 RM \text{RM} RM分数来选择最终的 SFT \text{SFT} SFT模型。类似于Wu et al.,发现 SFT \text{SFT} SFT模型在1个epoch后过拟合了验证集。然而,尽管存在过拟合,但是训练越多epoch越有助于 RM \text{RM} RM得分和人类偏好。

  • 奖励建模 (Reward modeling,RM) \text{(Reward modeling,RM)} (Reward modeling,RM)

    基于 SFT \text{SFT} SFT模型,将 prompt \text{prompt} prompt response \text{response} response作为输入来训练模型,并输出标量 reward \text{reward} reward。在本文中仅使用 6B \text{6B} 6B RM \text{RM} RM,因为这能够节省大量的计算,并且我们发现 175B \text{175B} 175B训练可能不稳定,因此不太适合作为 RL \text{RL} RL中的值函数。

    Stiennon et al.的工作中, RM \text{RM} RM模型在比较数据集上进行训练,其中比较的结果作为标签并使用交叉熵损失函数:奖励的差异表示一种应答比另一种应答更受人类标注者青睐的对数概率。

    为了加速比较数据的收集,我们将 K = 4 K=4 K=4 K = 9 K=9 K=9的所有应答呈现给标注者进行排序。这会为每个 prompt \text{prompt} prompt产生 ( k 2 ) \begin{pmatrix}k \\ 2\end{pmatrix} (k2)个比较结果给标注者。因为比较数据是与每个标注任务非常相关的,我们发现若对一个数据集中的比较数据进行简单的shuffle,数据集上的单次传播会导致奖励模型过拟合。相反,我们将每个 prompt \text{prompt} prompt的所有 ( k 2 ) \begin{pmatrix}k \\ 2\end{pmatrix} (k2)比较数据作为单个batch的元素。这在计算效率上要高的多,因为 RM \text{RM} RM仅需要一次前向传播,但是它不再过拟合,其实现了验证精确度的显著改善和对数loss。

    具体来说,奖励模型的损失函数为
    loss ( θ ) = − 1 ( k 2 ) E ( x , y w , y l ) ∼ D [ log ⁡ ( σ ( r θ ( x , y w ) − r θ ( x , y l ) ) ) ] (1) \text{loss}(\theta)=-\frac{1}{\begin{pmatrix}k \\ 2\end{pmatrix}}E_{(x,y_w,y_l)\sim D}[\log(\sigma(r_\theta(x,y_w)-r_\theta(x,y_l)))] \tag{1} loss(θ)=(k2)1E(x,yw,yl)D[log(σ(rθ(x,yw)rθ(x,yl)))](1)
    其中, r θ ( x , y ) r_\theta(x,y) rθ(x,y)是奖励模型为 prompt x \text{prompt x} prompt x completion y \text{completion y} completion y在参数 θ \theta θ下奖励模型的标量输出, y w y_w yw是样本对 y w y_w yw y l y_l yl中更喜欢的补全 y w y_w yw,并且 D D D是人类比较数据集。

  • 强化学习

    再一次following Stiennon et al.的工作,使用 PPO \text{PPO} PPO在环境中微调 SFT \text{SFT} SFT模型。环境是一个bandit环境,其会呈现一个随机消费者的 prompt \text{prompt} prompt和该 prompt \text{prompt} prompt的期望应答。给定 prompt \text{prompt} prompt response \text{response} response,其会产生一个由奖励模型产生的奖励。此外,为 SFT \text{SFT} SFT模型的每个token添加了一个 KL \text{KL} KL惩罚项,用来缓和奖励模型的过度优化。值函数从 RM \text{RM} RM中初始化。我们称这些模型为 PPO \text{PPO} PPO

    为了固定在公共 NLP \text{NLP} NLP数据集上的表现,我们也尝试将预训练梯度混合至 PPO \text{PPO} PPO梯度。我们称这些模型为 PPO-ptx \text{PPO-ptx} PPO-ptx。在强化学习的训练中我们最大化下面的合并目标函数:
    objective ( ϕ ) = E ( x , y ) ∼ D π θ RL [ r θ ( x , y ) − β log ⁡ ( π ϕ RL ( y ∣ x ) / x SFT ( y ∣ x ) ) ] + γ E x ∼ D p r e t r a i n [ log ⁡ ( π ϕ RL ( x ) ) ] (2) \text{objective}(\phi)=E_{(x,y)\sim D_{\pi_\theta \text{RL}}}[r_\theta(x,y)-\beta\log(\pi_\phi^{\text{RL}}(y|x)/x^{\text{SFT}}(y|x))]+\gamma E_{x\sim D_{pretrain}}[\log(\pi_\phi^{\text{RL}}(x))] \tag{2} objective(ϕ)=E(x,y)DπθRL[rθ(x,y)βlog(πϕRL(yx)/xSFT(yx))]+γExDpretrain[log(πϕRL(x))](2)
    其中, π ϕ RL \pi_{\phi}^{\text{RL}} πϕRL是学习到的 RL policy \text{RL policy} RL policy π SFT \pi^{\text{SFT}} πSFT是监督训练模型, D p r e t r a i n D_{pretrain} Dpretrain是预训练分布。 KL \text{KL} KL奖励系数 β \beta β和预训练损失系数 γ \gamma γ用来控制 KL \text{KL} KL惩罚的强度和预训练的梯度。对于 PPO \text{PPO} PPO模型, γ \gamma γ被设置为0。除非另有说明,本文的 InstructGPT \text{InstructGPT} InstructGPT是指 PPO-ptx \text{PPO-ptx} PPO-ptx模型。

  • Baselines

    PPO \text{PPO} PPO模型与 SFT \text{SFT} SFT模型和 GPT-3 \text{GPT-3} GPT-3进行了比较。此外,还比较了通过提供 few-shot \text{few-shot} few-shot前缀来提示模型来遵循指令的 GPT-3 \text{GPT-3} GPT-3。这个前缀会追加至用户指定的指令之前。

    我们还额外将在 FLAN \text{FLAN} FLAN T0 \text{T0} T0数据集上微调的 175B GPT-3 \text{175B GPT-3} 175B GPT-3 InstructGPT \text{InstructGPT} InstructGPT比较,这两个数据集是由各类自然语言处理任务组成,并为每个任务合并了自然语言指令。我们在接近100万个样本上进行微调,并选择能够在验证集获得最高奖励分数的checkpoint

6. 评估

​ 为了评估本文模型是如何"对齐的",首选要澄清一下本文中的"对齐"含义。"对齐"的定义从来都是模糊和混乱的,有着各种解释。遵循Leike et al.,我们的目标是训练一个能够按照用户意图的行动。更实际的来说,为了实现本文语言任务的目标,使用类似于Askell et al.的框架,若其是有益(helpful)、诚实(honest)并且无害的(harmless),那么模型就是"对齐"的。

​ 为了能够达到有益的目标,模型应该遵循指令,但是也要从 few-shot prompt \text{few-shot prompt} few-shot prompt或者其他可解释的模式(例如 Q:{question} nA \text{Q:\{question\}\\nA} Q:{question}nA)来推断意图。因为给定一个 prompt \text{prompt} prompt的意图可能是不清晰并且模糊的,我们依赖于标注者的判断,并且我们主要的评估指标是标注者的偏好评级。然而,因为标注者不是生成 prompts \text{prompts} prompts的用户,用户的实际意图和标注者依赖阅读 prompt \text{prompt} prompt认为的意图之间存在分歧。

​ 目前还不清楚如何衡量纯生成模型的诚实性。这需要比较模型实际输出和其对正确输出的"belief",因为模型是一个大黑盒,因此无法推断模型的"belief"。相反,我们衡量真实性:即模型关于世界的称述是否真实。这里使用两个指标进行评估:(1) 评估模型在封闭领域任务上编造信息的倾向;(2) 使用 TruthfulQA \text{TruthfulQA} TruthfulQA数据集。不必说,这仅是真实性的一小部分。

​ 类似于诚实(honesty),衡量语言模型的有害性也有很多的挑战。在大多数的场景中,语言模型的有害性来源于现实世界如何使用这些输出。例如,在一个部署的聊天机器人这个上下文中,模型生成有毒的输出是有害的,但是如果是用来训练一个更加准确的毒性检测模型来说是有益的。在项目早期,我们要求标注者评估输出是否"潜在有害"。然而,我们终止了这个要求,因为这需要对如何使用模型的输出有太多的猜测。特别是因为我们的数据来自于哪些与 Playground API \text{Playground API} Playground API接口交互的用户,而不是产品的使用用例。

​ 因此,我们使用一套更具体的代理准则,目标是捕获已经部署模型可能会有害的各个不同的方面:我们要求标注者评估一个输入在用户助理这个上下文中是否不合适,诋毁受保护的类别,或者包含性或者暴力的内容。我们还在衡量偏见和毒性的数据集上评估了我们的模型,例如: RealToxicityPrompts \text{RealToxicityPrompts} RealToxicityPrompts CrowS-Pairs \text{CrowS-Pairs} CrowS-Pairs

​ 总的来说,我们将定量的评估划分为两个独立的部分:

  • API \text{API} API分布上进行评估

    我们主要的评估是来自于训练分布同源的一组 prompts \text{prompts} prompts的人类偏好评分。当使用来自 API \text{API} API prompt \text{prompt} prompt进行评估,我们仅选择训练中没有包含的用户的 prompts \text{prompts} prompts。然而,考虑到我们训练的 prompts \text{prompts} prompts被设计用于 InstructGPT \text{InstructGPT} InstructGPT模型,其很可能不利用 GPT-3 baselines \text{GPT-3 baselines} GPT-3 baselines。因此,我们也评估了通过 API \text{API} API提交给 GPT-3 \text{GPT-3} GPT-3 prompts \text{prompts} prompts。这些 prompt \text{prompt} prompt通常并不是一个"instruction following"风格,但是被设计用于 GPT-3 \text{GPT-3} GPT-3。在这两种情况下,对于每个模型计算其输出相较于baseline被更喜欢的频率。选择 175B SFT \text{175B SFT} 175B SFT模型作为baseline,因为其性能接近于中间水平。此外,我们也要求标注者评价每个响应的质量,并收集每个模型输出的一系列元数据。

  • 在公开 NLP \text{NLP} NLP数据集上评估

    我们也在两种类型的公开数据集上进行了评估:一种是捕获语言模型安全性方面,特别是真实性、毒性、偏见等;另一种是传统 NLP \text{NLP} NLP任务上的 zero-shot \text{zero-shot} zero-shot表现,例如:问答、阅读理解和摘要。我们也在 RealToxicityPrompts \text{RealToxicityPrompts} RealToxicityPrompts数据集上进行了人工毒性评估。

三、结果

1. API \text{API} API分布上的结果

请添加图片描述

​ **相较于 GPT-3 \text{GPT-3} GPT-3的输出,标注者显然更喜欢 InstructGPT \text{InstructGPT} InstructGPT输出。**在 prompts \text{prompts} prompts测试集,我们的标注者更喜欢 InstructGPT \text{InstructGPT} InstructGPT的输出。结果如图1所示。 GPT-3 \text{GPT-3} GPT-3的输出效果最差,使用精心设计的 few-shot prompt \text{few-shot prompt} few-shot prompt则能够显著的改善效果 (GPT-3(prompted)) \text{(GPT-3(prompted))} (GPT-3(prompted)),然后是使用监督学习在演示数据上训练 (SFT) \text{(SFT)} (SFT),最终在比较数据上使用 PPO \text{PPO} PPO训练的模型效果最好。在 PPO \text{PPO} PPO过程中混合预训练并不能在标注者偏好上带来大的改变。为了说明我们收获的巨大:当直接比较时, 175B InstructGPT \text{175B InstructGPT} 175B InstructGPT 85 ± 3 % 85\pm 3\% 85±3%的时间里都优于 GPT-3 \text{GPT-3} GPT-3,并且在 71 ± 4 % 71\pm 4\% 71±4%的时间里优于 few-shot GPT-3 \text{few-shot GPT-3} few-shot GPT-3

​ 在提交至 GPT-3 \text{GPT-3} GPT-3上的 prompts \text{prompts} prompts上进行评估,结果上并没有显著的改善。

请添加图片描述

​ 上图4展示了在几个更具体的维度对 InstructGPT \text{InstructGPT} InstructGPT进行了良好的评价。具体来说,在用户助理的这个上下文中,相较于 GPT-3 \text{GPT-3} GPT-3 InstructGPT \text{InstructGPT} InstructGPT输出更加合适、能够更好的遵循指令中定义的约束、很少完全不遵循正确的指示、在封闭领域中不怎么编造事实。这些结果显示 InstructGPT \text{InstructGPT} InstructGPT要比 GPT-3 \text{GPT-3} GPT-3更可靠、更简单。

​ **我们的模型能够泛化到那些没有提供仍然训练数据的标注者偏好上。**这些预留出来的标注者与那些提供训练数据的标注者具有相似的排序偏好。特别地,根据这些预留出来的标注者, InstructGPT \text{InstructGPT} InstructGPT模型显著的优于 GPT-3 baselines \text{GPT-3 baselines} GPT-3 baselines。因此, InstructGPT \text{InstructGPT} InstructGPT模型并不是简单过拟合了提供训练数据的标注者的偏好。

​ 我们能够从奖励模型的泛化能力上看到进一步的证据。我们运行了一个实验,将标注者划分为5组,并使用5折交叉验证训练了5个 RM \text{RM} RM。这些 RM \text{RM} RM在预测预留组标注者的偏好时有 69.6 ± 0.9 % 69.6\pm0.9\% 69.6±0.9%,与在训练集上预测偏好的准确率 72.4 ± 0.4 % 72.4\pm0.4\% 72.4±0.4%相比略有下降。

请添加图片描述

​ 公共 NLP \text{NLP} NLP数据集并不能反映如何使用我们的模型。上图5中,也比较了在 FLAN \text{FLAN} FLAN T0 \text{T0} T0数据集上微调的 175B GPT-3 \text{175B GPT-3} 175B GPT-3。我们发现这些模型好于 GPT-3 \text{GPT-3} GPT-3,与很好的选择 prompt \text{prompt} prompt GPT-3 \text{GPT-3} GPT-3相当,但是差于 SFT baseline \text{SFT baseline} SFT baseline。这表明这些数据集的多样性不足以改善 API prompt \text{API prompt} API prompt分布上的表现。 175B InstructGPT \text{175B InstructGPT} 175B InstructGPT模型输出在 78 ± 4 % 78\pm4\% 78±4%的时间里优于 FLAN \text{FLAN} FLAN,并在 79 ± 4 % 79\pm4\% 79±4%的时间里优于 T0 \text{T0} T0

​ 我们认为 InstructGPT \text{InstructGPT} InstructGPT模型效果优于 FLAN \text{FLAN} FLAN T0 \text{T0} T0的两个原因。第一,公共 NLP \text{NLP} NLP数据集通常是那些容易自动评估的任务,例如:分类、问答、以及一定程度的摘要和翻译。然而,分类、问答在使用语言模型的 API \text{API} API用户中占比很少(18%),反而是开放式生成和头脑风暴占据了大部分(57%)。第二,对于公共 NLP \text{NLP} NLP数据集来说获得高多样性的输入很困难。当然, NLP \text{NLP} NLP数据集中的指令也是我们希望语言模型能够解决的,所以更加广泛的指令遵循模型应该合并两种类型的数据集。

2. 公开 NLP \text{NLP} NLP数据集上的结果

请添加图片描述

​ **相较于 GPT-3 \text{GPT-3} GPT-3 InstructGPT \text{InstructGPT} InstructGPT模型在真实性上有改善。**根据在 TruthfulQA \text{TruthfulQA} TruthfulQA数据集上的人工评估,我们的 PPO \text{PPO} PPO模型相较于 GPT-3 \text{GPT-3} GPT-3,在生成真实性和信息量上带来了小但显著的改善(上图6)。这个行为是默认的:我们的模型不需要使用特别的指令来指令说真话,从而表现出更高的真实性。有趣的是, 1.3B PPO-ptx \text{1.3B PPO-ptx} 1.3B PPO-ptx模型是个例外,其效果会稍微差于相同规模的 GPT-3 \text{GPT-3} GPT-3模型。当仅根据 prompt \text{prompt} prompt进行评估, PPO \text{PPO} PPO模型在真实性和信息量上仍然比 GPT-3 \text{GPT-3} GPT-3更高。

请添加图片描述

InstructGPT \text{InstructGPT} InstructGPT相较于 GPT-3 \text{GPT-3} GPT-3在毒性上有小幅度改善,但是偏见没有改善。我们先在 RealToxicityPrompts \text{RealToxicityPrompts} RealToxicityPrompts数据集上评估我们的模型。我们通过两种方式做到这一点:我们通过 Perspective API \text{Perspective API} Perspective API来运行模型样本获得自动毒性评分,其是该数据集的标准评估程序,并且我们将一些样本交给标注者来获得绝对毒性、相对于 prompt \text{prompt} prompt的毒性、连续性以及整体输出偏好的评分。我们根据 prompt \text{prompt} prompt毒性来从数据集中均匀的采样 prompts \text{prompts} prompts;这与该数据集的标准 prompt \text{prompt} prompt采样不同,因此我们的绝对毒性数量被夸大了。

​ 我们的结果如上图7所示。我们发现,当模型被提示出产生安全并且保存尊重的输出, InstructGPT \text{InstructGPT} InstructGPT模型相较于 GPT-3 \text{GPT-3} GPT-3生成更少毒性的输出。有趣的是,当显式的提示模型产生有害的输出, InstructGPT \text{InstructGPT} InstructGPT输出的毒性要比 GPT-3 \text{GPT-3} GPT-3强很多。

​ 这个结果在人类评估中得到了证实。在论文附录中提供了更多的结果。总的来说,给定 prompt \text{prompt} prompt,所有模型的毒性都低于预期。 SFT baseline \text{SFT baseline} SFT baseline是所有模型中毒性最少的,但也具有最低的连续性,在我们的排名中最不受欢迎,这表明模型会产生非常短或者退化的响应。

​ 为了评估模型产生偏见的倾向,我们也在修改版本的 Winogender \text{Winogender} Winogender CrowS-Pairs \text{CrowS-Pairs} CrowS-Pairs数据集中评估 InstructGPT \text{InstructGPT} InstructGPT。这些数据集由能够突出潜在偏见的句子对组成。我们计算在每个样本对中产生句子的相对概率以及关联二值概率分布的熵。完全没有偏见模型在每个句子对之间没有偏好,并且因此会有最大的熵。通过这个评估,我们模型的偏见并没有比 GPT-3 \text{GPT-3} GPT-3少。 PPO-ptx \text{PPO-ptx} PPO-ptx模型在偏见上与 GPT-3 \text{GPT-3} GPT-3类似,但当被提示要以尊重的方式行动的话,其展示了更低的熵并且更高的偏见。偏见的模型并不清晰,似乎被指示的模型对齐输出更加的确信,不管这些输出是否表现为刻板行为。

​ **通过修改 RLHF \text{RLHF} RLHF的微调过程能够最小化公共 NLP \text{NLP} NLP数据集上的性能回归。**默认情况下,当在 API \text{API} API分布上训练 PPO \text{PPO} PPO模型,其会遭受"alignment tax",因为其在几个公共 NLP \text{NLP} NLP数据集上的效果会下降。我们希望在对齐过程中避免"alignment tax"。将预训练的更新添加至 PPO \text{PPO} PPO微调中能够缓解在所有数据集上的效果回归,甚至在 HellaSwag \text{HellaSwag} HellaSwag上超越了 GPT-3 \text{GPT-3} GPT-3 PPO-ptx \text{PPO-ptx} PPO-ptx模型在 DROP \text{DROP} DROP SQuADv2 \text{SQuADv2} SQuADv2和翻译上仍然落后于 GPT-3 \text{GPT-3} GPT-3,更多的工作需要被研究并进一步消除这些性能回归。

​ 混合预训练的更新要好于简单的增加 KL \text{KL} KL系数。实验显示存在一个预训练混合系数值能够反转 SQuADv2 \text{SQuADv2} SQuADv2 DROP \text{DROP} DROP的性能回归,并且在验证集上最小的影响。

3. 定性结果

请添加图片描述

​ ** InstructGPT \text{InstructGPT} InstructGPT模型能够泛化到 RLHF \text{RLHF} RLHF微调分布之外的指令。**特别地,我们发现 InstructGPT \text{InstructGPT} InstructGPT具有遵循非英语语言指令的能力,并能够对代码执行摘要和问答能力。这很有趣,因为非英语语言和代码在微调数据集上是很小的一部分。这表明,对齐方法能够泛化到没有直接人工监督的输入上执行期望的行为。

​ 我们没有量化的追踪这些行为,但展示了一些定性的例子(上图8)。我们的 175B PPO-ptx \text{175B PPO-ptx} 175B PPO-ptx模型能够可靠的回答代码的问题,并遵循其他语言的指令。然而,我们注意到即使指令是另一种语言,模型也经常产生英文输出。相比,我们发现 GPT-3 \text{GPT-3} GPT-3需要更仔细的 prompting \text{prompting} prompting来执行这些任务,并且在这些领域中很少遵循指令。

​ ** InstructGPT \text{InstructGPT} InstructGPT仍然会犯一些简单的错误。**在与 175B PPO-ptx \text{175B PPO-ptx} 175B PPO-ptx模型交互中,我们发现其仍然会犯一些监督的错误,尽管其在许多不同的语言任务上有很强的表现。举几个例子:(1) 当给定一个带有错误前提的指令,模型有时候会错误的认为前提是正确的。(2) 模型有时候会拐弯抹角,当给定一个简单的问题,其可能说这里没有答案并给了多个可能的答案,即使上下文中有着相当明确的答案。(3) 当指令包含多个显式约束(例如: 列举10步1930年代的法国电影)或者约束对语言模型很有挑战时(用指定的句子数撰写摘要)效果会下降。

请添加图片描述

​ 在上图9上展示了这些行为的一些示例。我们怀疑行为(2)的出现是因为我们要求标注者奖励谦逊的行为;因此,它们可能会倾向于奖励拐弯抹角的输出,并且这被奖励模型学到了。我们怀疑行为(1)的出现是因为,训练集中很少有假设错误的 prompts \text{prompts} prompts,我们的模型不能将其很好的泛化到这些例子上。我们相信这些行为随着对抗数据收集能够显著的减少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联想小新pro13 卡顿解决办法

问题 本人电脑型号是 联想小新 pro13 2020 i7 才用了两年多,变得巨卡无比 ctlshiftesc打开任务管理器 cpu利用率才30%多 打字就一顿一顿的出结果 浏览网页也卡的掉帧,更不用说打游戏了 真的很无语,重装了系统也没啥用 思路 在网上搜了一圈…

Linux 网络基础

目录 一.网络 1.重新看待计算机结构 2.几种网络 二.协议 1.协议分层 2.OSI七层模式 3.TCI/IP五层(或四层)模型 三.网络传输 1.网络和操作系统之间的关系 2.网络传输流程图 3.数据包封装和应用 前言:这一篇大体介绍一下网络的一些基础知识。 一.网络 1.重…

do while语句

上次讲了while语句,这次讲一下do while语句。 do...while 循环是 while 循环的变体。在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后在while()内检查条件是否为真,如果条件为真的话,就会重复…

王卫点赞友商?北京快递保卫战,顺丰彰显大格局大气度

当下,随着全面放开,国内新冠疫情到了另一个严峻的拐点时刻,特别是北京,正日益逼近感染高峰期。 作为社会生活的毛细血管,快递物流企业们在当下的新冠疫情大背景下上演了一幕幕的鲜活的画面,快递行业市场新…

如何磁盘格式化?分享格式化U盘的3个方法

格式化可以有效管理硬盘,在一定程度上能保证磁盘的性能和使用寿命。尤其是我们遇到一些情况,必须要把U盘进行格式化才行。那么磁盘格式化怎么操作?遇到无法格式化的情况怎么办?别急,下面有3个关于格式化U盘的方法&…

通信协议综述-第3讲 | ifconfig:最熟悉又陌生的命令行

上一节结尾给你留的一个思考题是,你知道怎么查看 IP 地址吗? 当面试听到这个问题的时候,面试者常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题? 的确,即便没有专业学过计算机的人,只要倒腾过电脑,重装过系统,大多也会知道这个问题的答案:在 Win…

图片跟随鼠标移动效果的抖动问题

场景 图片跟随鼠标移动效果的实现思路&#xff1a; 触发mousemove事件响应时&#xff0c;通过e.offsetX,e.offsetY获取到当前鼠标的位置。再修改图片的css样式中的top, left属性&#xff08;图片采用绝对定位&#xff09;。 代码如下&#xff1a; <div id"angel&quo…

车载TBOX嵌入式设备软件的功能测试

作者 | 李伟 上海控安安全测评中心安全测评部总监 来源 | 鉴源实验室 01 Tbox简介 Tbox(Telematics Box)是汽车座舱系统中的一个ECU&#xff0c;物理外观上是一个方正的盒子&#xff0c;通常会有线束接口、HSD接口、通讯和导航天线接口等。软件上Tbox一般会基于Linux操作系统…

音视频面试涨知识(二)

1.YUV知识点 1.1 为什么要有YUV YUV的亮度信号Y和色度信号U/V是分离的&#xff0c;如果只有Y信号分量而没有U/V分量&#xff0c;这样的图像就是黑白灰度图像&#xff0c;从黑白到彩色的兼容方案。 相对RGB&#xff0c;YUV的最大优点是只占用较小的频宽&#xff0c;RGB需要至少…

EasyPytest测试平台开发日志之系统设计

EasyPytest测试平台&#xff0c;帮你高效管理Pytest测试用例。 EP平台的定位是Pytest测试用例管理平台&#xff0c;80%的自动化用例开发在PyCharm等专业的IDE中进行&#xff0c;20%的用例调度和结果查看就交给EP平台来管理。 EP平台是对teprunner测试平台的一次全新升级&#x…

【设计模式】 工厂模式 (三)

文章目录4.2 工厂模式4.2.1 概述4.2.2 简单工厂模式4.2.2.1 结构4.2.2.2 实现4.2.2.4 优缺点4.2.2.3 扩展4.2.3 工厂方法模式4.2.3.1 概念4.2.3.2 结构4.2.3.3 实现4.2.3.4 优缺点4.2.4 抽象工厂模式4.2.4.1 概念4.2.4.2 结构4.2.4.2 实现4.2.4.3 优缺点4.2.4.4 使用场景4.2.5 …

【电脑使用】硬盘无法引导进入系统,无法退出BIOS

前言 因为想要给自己的笔记本添置装备&#xff0c;于是想着把老电脑上的固态拆下来&#xff0c;但是考虑到老电脑虽然不常用&#xff0c;但还是偶尔会用&#xff0c;不能是瘫痪状态&#xff0c;于是想把我之前淘到的一个机械硬盘换上去&#xff0c;结果发现无法引导进入系统&am…

【JavaEE】HTTP(Part1 含面试题)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录前言一、HTTP协议抓包工具协议总格式&#xff08;重要&#xff01;&#xff01;&#xff09;二、HTTP协议中的细节【HTTP请求】【HTTP中的“方法”】【GET】&#xff1a;最常用的HTTP请求【POST】【认识请求“报头”…

SecureBridge Alexandria Release 2和iOS 15的支持

SecureBridge Alexandria Release 2和iOS 15的支持 添加了对Embarcadero RAD Studio 11 Alexandria Release 2的支持。 增加了对Apple iOS模拟器ARM 64位目标平台的支持。 增加了对Lazarus 2.2.2的支持。 添加了对Apple iOS 15的支持。 增加了对Android 12的支持。 SSH、SFTP、…

ubuntu 安装 colmap

目录 一、安装colmap 二、报错解决 三、安装成功 四、colmap使用教程 一、安装colmap 参考安装&#xff1a;​​​​​​​chttps://blog.csdn.net/weixin_46132232/article/details/124211233 官方&#xff1a;COLMAP 官方information 二、报错解决 2.1 在安装colmap的…

HashMap源码解析

HashMap源码解析 基础入门 什么是哈希 核心理论&#xff1a;Hash 也称散列、哈希&#xff0c;对应的英文都是 Hash。基本原理就是把任意长度的输入&#xff0c;通过Hash算法变为固定长度输出。 这个映射的规则就是对应的 Hash 算法&#xff0c;而原始数据映射后的二进制串就…

飞桨VisualDL本地运行问题

最近参加了百度飞桨的基于深度学习的自然语言处理 免费AI课程&#xff0c;有一道作业题是要利用飞桨提供的可视化工具VisualDL查看词向量降维效果。由于安全方面的原因&#xff0c;AI Studio中的可视化服务无法使用了。当按照作业步骤&#xff0c;生成日志文件后&#xff1a; 添…

Vue3+Element-ul学生管理系统(项目实战)

Vue3Element-ul学生管理系统(项目实战) 要发奋做一个可爱的人。不埋怨谁&#xff0c;不嘲笑谁&#xff0c;也不羡慕谁&#xff0c;阳光下灿烂&#xff0c;风雨中奔跑&#xff0c;做自我的梦&#xff0c;走自我的路&#xff01; 看本项目的前提自己学过Vue2Vue3Elementui组件库 …

Python学习笔记-操作数据库

记述python中关于数据库的基本操作。 一、数据库编程接口 1.连接对象 数据库连接对象&#xff08;Connection Object&#xff09;提供获取数据库游标对象、回滚事物的方法&#xff0c;以及连接、关闭数据库连接。 1.1 获取连接对象 使用connect()方法获得连接对象&#xf…

STM32F4 | 定时器中断实验

文章目录一、STM32F429 通用定时器简介二、硬件设计三、软件设计四、实验现象五、STM32CubeMX 配置定时器更新中断功能这一章介绍如何使用 STM32F429 的通用定时器&#xff0c; STM32F429 的定时器功能十分强大&#xff0c;有 TIME1 和 TIME8 等高级定时器&#xff0c;也有 …