InstructGPT——ChatGPT前身

这篇具有很好参考价值的文章主要介绍了InstructGPT——ChatGPT前身。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ChatGPT

We trained this model using Reinforcement Learning from Human Feedback (RLHF), using the same methods as InstructGPT, but with slight differences in the data collection setup.

ChatGPT is fine-tuned from a model in the GPT-3.5 series, which finished training in early 2022.

从ChatGPT”方法“原文可以看出,其使用的网络模型来自GPT-3.5,其原始模型在2022年已经训练完成,之后使用InstructGPT中的方法进行微调。 鉴于ChatGPT的论文还没有发表,故了解InstructGPT的实现对理解ChatGPT大有帮助。

Training language models to follow instructions with human feedback(InstructGPT)

1. “有害”信息

因为GPT的训练数据集非常大,故其中一定会包含很多的”有害“信息。例如:种族歧视、性别歧视以及违法暴力等。对于一个NLP模型来说,其本身不知道这些信息在人类社会是有害的。因此,对于训练好的GPT模型需要进行人为的引导来告诉它什么是对的,什么是错的。InstructGPT中通过人类反馈在原有GPT模型上做微调实现了人类的意图与NLP之间的契合。

2. RLHF—reinforcement learning from human feedback

InstructGPT——ChatGPT前身

如图,InstructGPT的微调分为三个阶段:

第一阶段:手动选择问题并给出答案,对SFT做有监督学习

  1. 首先标注员提出问题(prompt)
  2. 标注员对提出的问题作出合理的解释(output)
  3. 使用监督学习的方法利用1、2收集到的“prompt-output”数据对SFT做微调。

第二阶段:让训练好的SFT模型回答一些问题,人工对这些问题排序。之后利用这些数据训练一个RM模型对回答的结果进行打分。

  1. 首先由标注员向模型输入一个问题(prompt)
  2. 之后模型会输出不止一个答案(如图为A、B、C和D,类似于beam search方法)
  3. 标注员对这些答案做排序(如图为D>C>A=B)
  4. 由1、3得到的数据集训练一个RM模型,其作用是对输出的答案排序。

第三阶段:如图,根据RM模型的打分结果代替人工来继续优化SFT模型

由微调过程可以看到需要大量的标注员。

3. 三个模型

  1. SFT—Supervised fine-tuning

    利用监督学习方法对GPT模型做微调。

  2. RM—Reward modeling

    对SFT模型做更改,将最后的softmax层改为一个线性层,将所有词的输出投影到一个值上面作为output的分数。可以理解成为GPT加了一个下游任务。

    之后,训练一个RM模型,大小比SFT要小很多,主要任务是对SFT输出的值打分(输出标量奖励)。

    损失函数Pairwise Ranking Loss:
    l o s s ( θ ) = − 1 ( K 2 ) E ( x , y w , y l ) ∼ D [ l o g ( σ ( r θ ( x , y w ) − r θ ( x , y l ) ) ] loss(\theta ) = - \frac{1}{\binom{K}{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))]
    对于输入 x x x,取出一对 y w y_w yw y l y_l yl答案。假设 y w y_w yw的排序比 y l y_l yl要高,将两个答案分别放入 r θ r_\theta rθ奖励模型中算出奖励分数。因为 y w y_w yw的排序比 y l y_l yl的高,故前者的奖励分数比后者要高,在此使用逻辑回归的方法使两者的差越大越好。其中 σ \sigma σ代表sigmod函数。

    对于每个prompt有9个output,故一共有 ( 9 2 ) = 36 \binom{9}{2}=36 (29)=36种选择方法。

  3. RL—Reinforcement learning

    使用PPO方法。

    在 RL 训练中最大化以下组合目标函数:

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

    其中: π ϕ P L \pi_{\phi}^{PL} πϕPL是学习到的奖励策略, π S F T \pi^{SFT} πSFT是第一步得到的SFT模型, D p r e t r a i n D_{pretrain} Dpretrain是预训练的分布。 KL 奖励系数 β \beta β和预训练损失系数 γ \gamma γ 分别控制 KL 惩罚和预训练梯度的强度
    该模型还尝试将预训练梯度混合到 PPO 梯度中,以修复公共 NLP 数据集上的性能回归。 称这 些模型为“PPO-ptx”。对于“PPO”模型, γ \gamma γ设置为0,InstructGPT中 γ \gamma γ不为0。

4. 总结:四个阶段—GPT的“社会化”过程
  1. 学习文字接龙:

    GPT-3通过无监督学习进行序列到序列的生成。

  2. 人类引导文字接龙的方向:

    使用人工标注的prompt-output数据集对GPT-3进行微调生成SFT。

  3. 模仿人类的喜好:

    训练一个RM模型使其学习人类的喜好并输出一个分数。

  4. 用增强学习向模拟老师学习:

    利用增强学习的技术使用RM模型对SFT进行微调。

GPT从第1阶段开始在大量的数据集中学习知识,此时GPT像一个孩子一样想到什么就说什么。在2、3和4阶段中,人类一步一步引导GPT说出适合人类社会的答案以及规避“有毒”的答案使其逐渐融入人类社会,并最终实现了令人惊艳的效果。文章来源地址https://www.toymoban.com/news/detail-414210.html

到了这里,关于InstructGPT——ChatGPT前身的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • InstructGPT 与 ChatGPT的学习与解读

    最近ChatGPT大火,简单整理了一些文章和帖子。 ps.此时ChatGPT还没公布相应的论文,所有以下内容为官网发布内容,以及一些合理的推测。 相比于GPT,2022年初推出的InstructGPT在某种程度上更像是ChatGPT的“直系前辈”。因为InstructGPT大量的使用到了人类反馈与指导,在大力出奇迹

    2023年04月15日
    浏览(25)
  • ChatGPT的来源-InstructGPT论文简要介绍

    现在大火的ChatGPT功能十分强大,不仅可以回答用户问题,编写故事,甚至还可以写代码。ChatGPT跟OpenAI之前发表的InstructGPT使用的模型方法比较类似,只是训练的数据不同,为了探索ChatGPT的原理,笔者找来2022年3月发表的InstructGPT的论文,做了简要的介绍。 ChatGPT,美国OpenAI 研

    2024年02月02日
    浏览(34)
  • model.train()和model.eval()两种模式的原理

    1. model.train() 在使用 pytorch 构建神经网络的时候,训练过程中会在程序上方添加一句model.train(),作用是 启用 batch normalization 和 dropout 。 如果模型中有BN层(Batch Normalization)和 Dropout ,需要在 训练时 添加 model.train()。 model.train() 是保证 BN 层能够用到 每一批数据 的均值和方差

    2024年02月20日
    浏览(26)
  • InstructGPT论文详解(学习ChatGPT必看论文)

    返回论文和资料目录 继 ChatGPT 大火后,越来越多人想了解 ChatGPT 相关技术。OpenAI官网虽然没有给出 ChatGPT 足够详细的信息,但给出了一篇推荐阅读论文 InstructGPT ,经过对比,可以发现两者技术相差不大,所以完全可以通过 InstructGPT 了解 ChatGPT 。下面就给出InstructGPT内容详解

    2024年02月03日
    浏览(29)
  • GPT3.5 , InstructGPT和ChatGPT的关系

    GPT-3.5 系列是一系列模型,从 2021 年第四季度开始就使用文本和代一起进行训练。以下模型属于 GPT-3.5 系列: code-davinci-002 是一个基础模型,非常适合纯代码完成任务 text-davinci-002 是一个基于 code-davinci-002 的 InstructGPT 模型 text-davinci-003 是对 text-davinci-002 的改进 gpt-3.5-turbo-030

    2023年04月09日
    浏览(31)
  • GPT3.5, InstructGPT和ChatGPT的关系

    GPT-3.5 系列是一系列模型,从 2021 年第四季度开始就使用文本和代一起进行训练。以下模型属于 GPT-3.5 系列: code-davinci-002 是一个基础模型,非常适合纯代码完成任务 text-davinci-002 是一个基于 code-davinci-002 的 InstructGPT 模型 text-davinci-003 是对 text-davinci-002 的改进 gpt-3.5-turbo-030

    2024年02月01日
    浏览(29)
  • 模型训练时使用的 model.train() 和模型测试时使用的 model.eval()

    在 PyTorch 中,模型训练时使用的  model.train()  和模型测试时使用的  model.eval()  分别用于开启和关闭模型的训练模式和测试模式。 model.train()  会将模型设置为训练模式,启用 Dropout 和 Batch Normalization 等训练时特有的操作。这种模式适用于训练阶段,由于 Dropout 在每次迭代时

    2024年02月11日
    浏览(31)
  • 【pytorch】同一个模型model.train()和model.eval()模式下的输出完全不同

    测试时为什么要使用model.eval() - 小筱痕 - 博客园 (cnblogs.com) 输出不同的原因是由于student模型中的某些层的行为不同。一些层,如dropout和batch normalization,在训练和评估过程中的行为是不同的。 在训练过程中,dropout层会随机将一部分输入置为零,这有助于防止过拟合。dropou

    2024年02月12日
    浏览(40)
  • LLM:Training Compute-Optimal Large Language Models

    论文:https://arxiv.org/pdf/2203.15556.pdf 发表:2022 前文回顾: OpenAI在2020年提出《Scaling Laws for Neural Language Models》:Scaling Laws(缩放法则)也一直影响了后续大模型的训练。其给出的 结论是最佳计算效率训练涉及在相对适中的数据量上训练非常大的模型并在收敛之前early stopping 。

    2024年01月20日
    浏览(36)
  • 03-25 周一 论文阅读 Train Large, Then Compress: Rethinking Model Size for Effcient Trainning and Inference

    03-25 周一 论文阅读 Train Large, Then Compress: Rethinking Model Size for Effcient Trainning and Inference of Transformers 时间 版本 修改人 描述 V0.1 宋全恒 新建文档  Lizhuohan是单位是UC Berkeley(加州大学伯克利分校)。这可以从文献的作者信息中得到确认,其中提到了 “1UC Berkeley” 作为其隶属单

    2024年04月27日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包