【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型 您所在的位置:网站首页 darknet结构 【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型

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

2022-12-31 20:02| 来源: 网络整理| 查看: 265

InstructGPT:遵循人类反馈指令来训练语言模型

《Training language models to follow instructions with human feedback》

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

相关博客【自然语言处理】【ChatGPT系列】Chain of Thought:从大模型中引导出推理能力【自然语言处理】【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. 数据集

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

​ 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}(k 2 ​)个比较结果给标注者。因为比较数据是与每个标注任务非常相关的,我们发现若对一个数据集中的比较数据进行简单的 shuffle,数据集上的单次传播会导致奖励模型过拟合。相反,我们将每个prompt \text{prompt}prompt的所有( k 2 ) \begin{pmatrix}k \ 2\end{pmatrix}(k 2 ​)比较数据作为单个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 (θ)=−(k 2 ​)1 ​E (x ,y w ​,y l ​)∼D ​lo g (σ(r θ​(x ,y w ​)−r θ​(x ,y l ​))) 其中,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 y w ​是样本对y w y_w y w ​和y l y_l y l ​中更喜欢的补全y w y_w y w ​,并且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 )−βlo g (πϕRL ​(y ∣x )/x SFT (y ∣x ))]+γE x ∼D p re t r ain ​​lo g (πϕRL ​(x )) 其中,π ϕ 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}D p re t r ain ​是预训练分布。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 分布上的结果

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

​ 相较于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上进行评估,结果上并没有显著的改善。

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

​ 上图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%相比略有下降。

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

​ 公共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 数据集上的结果

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

​ 相较于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更高。

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

​ 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. 定性结果

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

​ 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年代的法国电影)或者约束对语言模型很有挑战时(用指定的句子数撰写摘要)效果会下降。

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

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

Original: https://blog.csdn.net/bqw18744018044/article/details/128347351Author: BQW_Title: 【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型

相关阅读 Title: 目标检测综述

原创:悬鱼铭

目标检测(Object Detection)任务是计算机视觉中非常重要的基础问题,也是解决图像分割、目标跟踪、图像描述等问题的基础。目标检测是检测输入图像是否存在给定类别的物体,如果存在,输出物体在图像中的位置信息(矩形框的坐标值表示,Xmin、Ymin、Xmax、Ymax)。

*[En]*

**

区域选取:采用滑动窗口(Sliding Windows)算法,选取图像中可能出现物体的位置,这种算法会存在大量冗余框,并且计算复杂度高。特征提取:通过手工设计的特征提取器(如SIFT和HOG等)进行特征提取。特征分类:使用分类器(如SVM)对上一步提取的特征进行分类。

传统算法HOG+SVM的作用如下:

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

2014年的R-CNN(Regions with CNN features)使用深度学习实现目标检测,从此拉开了深度学习做目标检测的序幕。目标检测大致可以分为一阶段(One Stage)模型和二阶段(Two Stage)模型。目标检测的一阶段模型是指没有独立地提取候选区域(Region Proposal),直接输入图像得到图中存在的物体类别和相应的位置信息。典型的一阶段模型有SSD(Single Shot multibox-Detector)、YOLO(You Only Look Once)系列模型等。二阶段模型是有独立地候选区域选取,要先对输入图像筛选出可能存在物体的候选区域,然后判断候选区域中是否存在目标,如果存在输出目标类别和位置信息。经典的二阶段模型有R-CNN、SPPNet、Fast R-CNN、Faster R-CNN

下图总结了目标检测中一些经典模型的发展历程:

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

**

多数一阶段模型是利用预设的锚框(Anchor Box)来捕捉图像可能存在物体的区域,图像中包含物体的框远少于总共的锚框,因而在训练分类器时正负样本数目极不平衡,这会导致分类器训练的效果不好。

二阶段模型在会修正候选框的位置,带来更高的定位精度,同时也增加了模型复杂度。

接下来,简单介绍二阶段模型的发展过程。

R-CNN

首先使用无监督的选择性搜索(Selective Search, SS)方法将输入图像中颜色、纹理相近的区域合并,产生2000个候选区域;

然后截取这些候选区域相应的图像,裁剪缩放至固定的尺寸,依次送入CNN特征提取网络提取特征;

特征送入每一类的SVM分类器,判断是否属于此类;

使用线性分类器修正框位置和大小,最后对检测结果进行非极大值抑制(Non-Maximum Suppression,NMS)。

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

SPPNet

在RCNN中,要对候选区域裁剪缩放至固定的尺寸,会破坏截取图像的长宽比,损失一些信息。针对以上问题,SPPNet 提出了空间金字塔池化(Spatial Pyramid Pooling)层,该层置于 CNN的末端,输入不需要缩放至指定的大小。下图第一行是 R-CNN,第二行是 SPPNet,对比可以发现它们的区别。

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

SPPNet 的思路是对于任意大小的 feature map 首先分成 16、4、1 个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。

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

Fast R-CNN

Fast R-CNN 的思路与 SPPNet 一致,区别在于 Fast R-CNN 使用感兴趣区域池化( Region-of-Interest Pooling )而非空间金字塔池化。Fast R-CNN 相比 R-CNN 使用全连接网络代替之前的 SVM 分类器和线性回归器进行物体分类和检测框的修正。Fast R-CNN 有两个输出,一个是通过 softmax 层进行类别预测,另一个输出物体的检测框。

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

Faster R-CNN

Faster R-CNN 在 Fast R-CNN 的基础上,将其最耗时的候选区域提取用一个区域候选网络(Region Proposal Network,RPN)进行替代。在 faster R-CNN 中,一幅输入图像先由 RPN 提取候选区域,再取出各个候选区域对应的特征图,送入 Fast R-CNN (独立于 RPN 的后半部分)进行物体分类和位置回归。

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

接下来,简单介绍一阶段模型的发展过程。

R-CNN 系列将目标检测问题归结为分类问题,即先寻找目标可能存在的区域(Bounding box),然后对这些Box分类,从而确定目标。YoLo 则将目标检测问题转换为一个回归问题(Regreesion problem),直接预测出 boudning box 和相关的类别信息。YoLo 是一个可以端到端训练的单个网络(single network),它不需要单独的搜索 Region Proposals,也不需要单独的 Classifier,因此其检测速度特别快,YoLo 可以达到 45 FPS,而 Fast YoLo 可以达到 155FPS。YoLo 对背景的识别效果较好,且有一定的迁移性,但是 YoLo 最大的问题是对小目标的检测不准确。

YOLO v1

将输入图像()划分为个

【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型网格,如果一个物体的中心落在某个网格,则这个网格负责这个物体的检测。

每个网格预测 B 个 Bounding Box 的位置,这个 Box 的置信度得分,以及 Box 中是否存物体的概率。

Bounding Box 包含五个参数(中心 x 坐标,中心 y 坐标,宽度,高度,置信度)

置信度得分表示该网格包含一个对象的可能性:Pr(containing an object) x IoU(pred, truth); 其中Pr =概率。

如果网格包含一个对象,则它将预测该对象属于每个类别的 *概率

将输入图像划分为

【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型个网格,每个网格预测B 个Bounding Box以及置信度,则最终的预测编码为。

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

YOLO v2

YOLO v2 在 YOLO v1 的基础上做出了改进,大体可以分为网络结构的改善、先验框的设计及训练技巧。

网络结构的改善,提出了一个全新的网络结构,称之为 DarkNet。

【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型 BN层:在卷积层后面添加了批归一化(BN)层。 用连续 3×3 卷积替代了 v1 版本中的 7×7 卷积,这样既减少了计算量,又增加了网络深度。此外,DarkNet 去掉了全连接层与 Dropout 层。

Passthrough 层:DarkNet 还进行了深浅层特征的融合。

先验框的设计,YOLO v2 首先使用了聚类的算法来确定先验框的尺度。

训练技巧,YOLO v2 采取了多种尺度的图片作为训练的输入。模型在训练过程中,每隔 10 个批次就改变输入图片的大小。

YOLO v3

YOLO v3 在 YOLO v2 的基础上做出了一些改动。

YOLO v3是使用了 Logistic 函数代 Softmax函数。原因在于,Softmax函数输出的多个类别预测之间会相互抑制,只能预测出一个类别,而Logistic分类器相互独立,可以实现多类别的预测。

YOLO v3 采用了更深的网络作为特征提取器(DarkNet-53),包含53个卷积层。为了避免深层网络带来的梯度消失问题,DarkNet-53借鉴了ResNet的残差思想,在基础网络中大量使用了残差连接。

最后,简单总结目标检测的论文下载链接。

目标检测英文综述

Object Detection in 20 Years: A Survey A Survey of Deep Learning-based Object Detection Recent Advances in Deep Learning for Object Detection Imbalance Problems in Object Detection: A Review Deep Domain Adaptive Object Detection: a Survey Foreground-Background Imbalance Problem in Deep Object Detectors: A Review

目标检测论文

Selective Search for Object Recognition R-CNN Fast R-CNN Faster R-CNN YOLO v1-You Only Look Once: Unified, Real-Time Object Detection YOLO v2-YOLO9000: Better, Faster, Stronger YOLO v3: An Incremental Improvement

参考文献:

深度学习之PyTorch物体检测实战,董洪义 百面深度学习,葫芦娃 目标检测(3)-SPPNet YOLO系列模型总结 Object Detection Part 4: Fast Detection Models RCNN、Fast RCNN、Faster RCNN对比

Original: https://blog.csdn.net/kaikeba0826/article/details/124589367Author: CV算法恩仇录Title: 目标检测综述

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/279260/

转载文章受原作者版权保护。转载请注明原作者出处!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有