Training language models to follow instructions with human feedback

Training language models to follow instructions with human feedback

概述

更大的模型本质上对于使模型更好地服从用户的意图没有帮助(没有与用户对齐aligned)。文章使用fine-tuning with human feedback方法将语言模型与用户意图在一系列对齐。首先收集标注者对于理想模型行为的演示用于微调GPT-3(监督学习),然后收集对于模型输出的排名的数据集使用从人类反馈的强化学习进一步微调这个监督模型,得到的称为InstructGPT。在人类评估上,1.3B的InstructGPT比175BGPT-3更好,尽管参数少100倍。InstructGPT展现出真实性的提高,不可接受的输出生成的减少,同时在公开NLP数据集上的极小回归性能。尽管InstructGPT仍然会有简单的错误,但是结果表明对于将语言模型与人类意图对齐,fine-tuning with human feedback是一个很有潜力的方向。

Training language models to follow instructions with human feedback_第1张图片

方法

整体方法

  • 步骤一:收集演示数据,并且训练一个监督策略(policy)
  • 步骤二:收集对比数据,并且训练一个奖励模型
  • 步骤三:使用PPO训练一个对抗于奖励模型的策略(policy)

步骤二和步骤三可以被连续地迭代;更多对比数据在当前最好地策略下得到,被用于训练一个新的RM和一个新的策略。实际上,大部分对比数据来自监督策略,一些来自PPO策略。

Training language models to follow instructions with human feedback_第2张图片

数据集

  • SFT数据集:用于训练SFT模型的标注者的演示
  • RM数据集:用于训练RMs模型的标注者对于模型输出的排名
  • PPO数据集:用于作为RLHF fine-tuning的输入没有任何人类的标注

任务

  • 直接根据自然语言指令确定任务:e.g. “Write a story about a wise frog”
  • 间接通过few-shot examples:e.g. giving two examples of frog stories, and prompting the model to generate a new one;或者隐式续写:e.g. providing the start of a story about a frog

人类数据收集

招募了由40个承包商组成的团队,挑选对于不同人口群体偏好敏感,善于识别有潜在危害的输出的标注者

模型

  • Supervised fine-tuning(SFT):使用监督学习在标注者演示数据上fine-tune GPT-3,使用余弦学习率衰减,0.2的residual dropout训练16个epoch,根据在验证集上的RM分数选择最后的SFT,出现了过拟合现象,但有助于提高RM分数以及人类偏好率
  • Reward modeling(RM):输入一个prompt和response,输出一个标量reward,使用了6B的RMs,在对于相同输入的两个模型输出之间对比的数据集上训练RM,使用交叉熵损失函数,对比作为标签,奖励的差异代表了一个响应会比另一个响应更被人类标注者喜欢的对数概率,由于在每个标注任务之间的对比非常相关,简单地打乱这些对比到一个数据集中,在数据集上地一个单步传播会导致RM过拟合,文章将同个prompt的所有对比作为一个单步batch元素,这样计算更高效,因为不再过拟合,所以在验证集上表现更好,reward model的损失函数是:

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

其中 r θ ( x , y ) r_\theta(x,y) rθ(x,y)是reward model对于prompt x x x和completion y y y在参数 θ \theta θ时的标量输出, y w y_w yw y w y_w yw y l y_l yl对中更被喜欢的completion,并且 D D D是人类对比数据集,由于RM loss对于reward偏移是不变的,所以在进行RL之前,使用一个bias使标注者的解释达到一个为0的平均分

  • Reinforcement learning(RL):使用PPO在文章中的环境中fine-tune SFT模型,给环境一个prompt和一个response,通过reward model给出奖励分数,在每个token添加来自SFT模型的KL penalty来减轻reward model的过度优化,PPO-ptx混合预训练梯度到PPO梯度中以修复在公开NLP数据集上的性能回归,在RL训练中最大化以下组合目标函数:

o b j e c t i v e ( ϕ ) = E ( x , y ) ∼ D π ϕ R L [ r θ ( x , y ) − β log ⁡ ( π ϕ R L ( y ∣ x ) / π S F T ( y ∣ x ) ) ] + γ E x ∼ D p r e t r a i n [ log ⁡ ( π ϕ R L ( x ) ) ] objective(\phi)=E_{(x,y)\sim D_{\pi_{\phi}^{RL}}}[r_{\theta}(x,y)-\beta\log(\pi_{\phi}^{RL}(y|x)/\pi^{SFT}(y|x))]+\gamma E_{x\sim D_{pretrain}}[\log(\pi_{\phi}^{RL}(x))] objective(ϕ)=E(x,y)DπϕRL[rθ(x,y)βlog(πϕRL(yx)/πSFT(yx))]+γExDpretrain[log(πϕRL(x))]

其中 π ϕ R L \pi_{\phi}^{RL} πϕRL是学习到的RL策略, π S F T \pi^{SFT} πSFT是监督训练的模型, D p r e t r a i n D_{pretrain} Dpretrain是预训练分布,KL reward系数 β \beta β和预训练损失系数 γ \gamma γ分别控制了KL penalty和预训练梯度的强度,对于PPO模型, γ \gamma γ为0

Baselines

SFT和GPT-3,在FLAN和T0数据集上比较,都是由一系列NLP任务组成,对每个任务结合了自然语言指令

评估

在API分布上评估人类偏好率,在公开数据集上评估,评估模型的安全性,以及传统NLP任务
言指令

你可能感兴趣的:(语言模型,人工智能,自然语言处理)