InstructGPT 精简总结:Training language models to follow instructions with human feedback

  • 2022年发表。
  • 出自论文:《Training language models to follow instructions with human feedback》,OpenAI。
  • 与 chatgpt 最相近的工作。
  • 在OpenAI官网中,又称为Aligning language models to follow instructions

文章目录

  • 1、提出动机
  • 2、模型结构
  • 3、训练机制
    • 3.1、数据的收集
    • 3.2、SFT
    • 3.3、RLHF
      • 3.3.1、Train reward model
      • 3.3.2、Train policy with PPO
  • 4、与先前GPT的区别

1、提出动机

  • GPT-3虽牛,但仍会生成一些带偏见、不真实、有害的负面信息,有时候一本正经胡说八道。这从做研究的角度来看,确实没啥,因为你只要在某个数据集上碾压对手,那就是牛的。但对于工业实践来说,你带有这些问题的话,特别是对于大公司来说,肯定会被用户骂死,骂到产品下线为止。
  • 且GPT-1, GPT-2, GPT-3的主要任务还是续写即文字接龙,不太擅长与听你指令干活。比如,你输入“给我写一份方案”,GPT很可能输出的是“主题是关于如何入门深度学习”,而不是给你生成出一份方案。
  • InstructGPT因此而提出,它提出了一个叫 “align” 即对齐的概念,指的是使模型输出与人类真是意图更为接近,即对齐,更符合人类偏好。

2、模型结构

  • 模型结构就不说了(大致结构也就是transformer的decoder结构);因为训练机制和数据才是gpt的重点!
  • 可参看我之前对GPT系列的讲解:GPT系列:GPT, GPT-2, GPT-3精简总结 (模型结构+训练范式+实验)

3、训练机制

InstructGPT的训练机制主要分为了3步:

  • 1、SFT:Supervised Fine-Tuning,有监督微调。
  • 2、训练奖励模型
  • 3、强化学习(PPO方法)

注:其中第2,3步合起来也就是常听到的RLHF了,基于人类反馈的强化学习。

在这里插入图片描述

3.1、数据的收集

在这里插入图片描述

3.2、SFT

Supervised Fine-Tuning

SFT做的事情其实就是语言模型做的预训练。和GPT-3区别在于,InstructGPT的数据为人工标的高质量数据。

  • gpt3中对于某个下游任务,采用的是few-shot的形式(任务描述+例子+prompt),通常采用固定的任务描述形式,且需要人为去测试哪种任务表述方式好。很明显了,这种方式和实际场景中用户的表述存在很大的gap。
  • InstructGPT在SFT中标注的数据正是为了消除这种gap的。
  • 具体数据来源从gpt3的真实用户请求中采样了大量下游任务的描述,然后标注人员对任务描述续写,从而得到高质量回答。真实用户请求又被称为某个任务的指令,所以也就是概念 “基于人类反馈的指令微调” 的由来。

3.3、RLHF

Reinforcement Learning from Human Feedback

3.3.1、Train reward model

这一步单独生成了一个reward model(打分模型)用于PPO里打分。
训练步骤如下:

  • 1、基于SFT训练好的模型,对输入(提问)生成多个输出(答案)(根据输出概率分布进行采样即可得到多个输出或是beam-search类的方法等),然后人工去给这些输出打分。
  • 2、使用第一步得到的样本集,训练模型,模型的输入为一个提问+一个答案,模型的输出为对该答案的打分。【gpt模型下游的softmax改为MLP】
  • 3、既然是排序问题,那loss用的是排序问题里常用的pairwise ranking loss。其中,K就是模型生成K个答案,论文采用的是K=9;这个loss就是计算了两两的答案的损失。也就是希望真实排序靠前标签对应的打分比排序靠后的标签对应的打分要高;最后再除与所有可能的组合数(从K个里选2个)。长得也就是LR的loss形式:sigmoid+log。
  • 4、有了loss那就能反向传播更新模型参数了。
    -

3.3.2、Train policy with PPO

Proximal Policy Optimization:强化学习PPO模型是OpenAI 2017年的工作。
⭐⭐⭐这一步用到的模型是:
1、用于强化学习的SFT模型(用于生成答案)。
2、原SFT模型(用于计算loss中的KL散度,为了保证PPO学习出的模型的预测不至于偏离原预训练模型的预测太多,因为RL就是用SFT模型初始化的)
3、reward model(用于对生成的答案打分;相当于作为老师,来对模型的回答进行‘批改’,让模型愈发把知识‘对齐’到我们想要的样子。)。

⭐ 为啥需要PPO这一步呢?使用强化学习(而非监督学习)的方式更新语言模型,最大的优势是在于能够使得模型更加自由的探索更新方向,从而突破监督学习的性能天花板。
⭐ 在reward model训练完之后有奖励模型咯,用它来作为PPO训练的value function。

PPO算法更新参数的大致流程如下图:
图源于:https://mp.weixin.qq.com/s/1v4Uuc1YAZ9MRr1UWMH9xw在这里插入图片描述

  • 输入x是第三个数据集里的prompt,而输出y则是强化学习的SFT模型的输出。y会随着模型参数的更新而不一样,这里有区别与监督学习,监督学习中,训练多个epoch时同一个x对应的y是一样的,但强化学习中同样的x对应的y是会随着模型更新而变化的。

  • 这里我简单讲讲,因为主要思想也挺简单的,即使我没搞过强化学;李沐老师说如果前面标的数据够多,其实这一步可能并不需要。

  • PPO的主要思想。 强化学习的模型称为策略模型,又称为策略。其中rθ是RM,为了确保RM打分不至于被过度优化,增加了个log项,那是KL散度,为了保证PPO学习出的强化学习SFT的预测不至于偏离原SFT模型的预测太多,因为RL就是用SFT模型初始化的。这就是PPO的主要思想。

  • 语言模型预训练项。 另外地,InstructGPT在PPO的loss基础上加上了预训练损失,为了防止强化学习SFT模型只对打分这个任务过度拟合,导致泛化性能损失,所以加上了预训练语言模型的损失来确保模型在公开NLP数据集上的表现。加上了这一项,PPO就变为了PPO-ptx。

  • 有了loss就能反向传播更新模型参数了。
    在这里插入图片描述
    解释版:
    在这里插入图片描述

4、与先前GPT的区别

  • 解决 GPT-3 的输出与人类意图之间的 Align 问题;
  • InstructGPT的输出比GPT3的输出更好,更真实可靠,更丰富。
  • InstructGPT对有害结果的生成控制地更好,但对于偏见问题没有明显改善。
  • InstructGPT泛化性更好,在缺乏人类指令数据上也表现不错;
  • InstructGPT基于SFT后的模型在公开数据集上表现也不错。







参考链接:
[1] 李沐:InstructGPT论文精读

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 赋予文字无限力量:“由文本生成一切”的一年

作者:Daniel Bashir TL;DR:得益于最新的技术进展,人工智能模型现在能将文本转化为其他形态。这篇文章回顾了 AIGC 的发展历程及现状,并预测未来的发展。 “一种基于文本指令创建绘图的算法” - MidJourney 你现在看到的是文字——…

TFT-液晶显示屏的结构和原理

TFT-LCD (薄膜晶体管 液晶显示屏)的结构组成分为:背光部分,上下偏光片,液晶模组、TCON板 1. 背光模组部分 又分为: (1)灯珠(冷阴极管):背光光源 …

np.random.uniform()

no.random.uniform(low,high,size) 每个参数都什么意思可以在其他博客中找到,今天想详细介绍一下size 上代码: import numpy as npmax 10 min 1 x, y np.random.uniform(min, max, (2,)) print(x) print(y) import numpy as npmax 10 min 1 x, y…

CSS样式

目录 1.语法风格&代码规范: (1)语法规范 (2)注释 (3)代码风格 (4)注意事项 2.选择器分类 (1)基础选择器 1)标签选择器 2)类选择器 3)id选择器 4)通配符选择器 (2)复合选择器 1)后代选择器 (重要) 2&…

springboot+mysql学生个性的宿舍分配管理系统-计算机毕业设计源码01236

摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,学生个性的宿舍…

Vue学习(MVVM、入门练习)-学习笔记

文章目录 Vue学习&#xff08;MVVM、入门练习&#xff09;-学习笔记入门实例 Vue学习&#xff08;MVVM、入门练习&#xff09;-学习笔记 入门实例 <!DOCTYPE html> <html> <head><title></title><link rel"stylesheet" type"…

打开一个窗体的代码css,css+js实现点击文字或按钮弹出一个div窗口-编码类-艾雪雪aixuee.com-恭喜你终于发现了这个宝藏!...

css部分&#xff1a; .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; z-index:1001; -moz-opacity: 0.8; opacity:.80; filter: alpha(opacity88); } .white_mrc { display: none; width: 250px; height: 400px; padding…

html 点击文字转换窗口,css+js实现点击文字或按钮弹出一个div窗口-编码类-艾雪雪-恭喜你终于发现了这个宝藏...

css部分&#xff1a; .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; z-index:1001; -moz-opacity: 0.8; opacity:.80; filter: alpha(opacity88); } .white_mrc { display: none; width: 250px; height: 400px; padding…

雪雪不吃香菜

确定项目 立项——产品说明书——需求文档——需求评审 详细概要设计——编码——自测——提测 测试计划——编写测试用例——测试用例评审——提测 开发环境(开发专用) 测试环境(测试专用) 提测——冒泡测试(测试流程是否通过)——功能测试——禅道记录BUG——回归测试(验…

chatgpt赋能python:Python聊天工具:简单易用的即时通讯方式

Python聊天工具&#xff1a;简单易用的即时通讯方式 在当今数字化社会&#xff0c;通讯技术持续发展&#xff0c;人们借助各种出色的工具保持着联系。聊天软件应运而生&#xff0c;已成为人们常用的即时通讯工具。而Python聊天工具则以简单易用的方式&#xff0c;为用户提供了…

Edge安装插件错误(download interrupted)解决办法

微软Edge无法安装插件的原因大概率是host的问题 修改即可!!! win10系统host路径: C:\Windows\System32\drivers\etc 把host文件复制到桌面上 用记事本打开(便于编辑) 把以下复制到文本当中 13.107.9.158 mesedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com #Edge商店拓展…

没有域名怎么用宝塔面板搭建网站?

其实没有域名也是可以用ip地址&#xff0c;搭建网站的&#xff0c;在宝塔面板部署网站的时候&#xff0c;填上ip地址就行。 如果想要搭建多个网站&#xff0c;可以在后面加上端口号

宝塔环境搭建教程

阿里云ECS服务器搭建宝塔环境教程-保姆级教程 1.建立远程连接 2.输入密码后登入服务器 3.从宝塔官网复制下载安装代码 4.粘贴到图二服务器命令行&#xff0c;按回车 5.耐心等到下图出现&#xff0c;点击y 6.耐心等待宝塔环境的网址、账号、密码出现&#xff0c;可以将其保存…

frp内网穿透搭建-宝塔版

一、搭建frp准备 下载frp部署文件&#xff1a;https://github.com/fatedier/frp/releases把防火墙安全端口打开&#xff0c;默认7500&#xff0c;7000&#xff0c;其他的自行设置打开&#xff0c;如阿里云服务器要打开端口规则。 二、配置frps服务端 把frps、frps.ini、LICE…

使用宝塔搭建一个简单的网页

1.首先在百度上搜索“宝塔”进入其中&#xff0c;找到相应的脚本。 2.将相应的脚本进行复制&#xff0c;粘贴在CentOS上运行 3.运行过程中的选择都为yes&#xff0c;随后等候其安装成功就行了。 4.根据安装成功后的页面提示的有内网地址和账户密码。复制内网地址进入&#xff…

树莓派宝塔搭建NAS私有云盘nextcloud

树莓派宝塔搭建NAS私有云盘nextcloud 其余树莓派搭建文章前言准备工作BUGBUG1BUG2 成功界面开启外部存储 其余树莓派搭建文章 树莓派宝塔搭建NAS私有云盘nextcloud 树莓派宝塔搭建图床Chevereto 树莓派宝塔部署hexo博客 前言 我本来是在树莓派3B上搭建了hexo博客和图床&…

服务器+宝塔+Chevereto 搭建个人图床

服务器+宝塔+Chevereto 搭建个人图床 先附上我的demo: http://img.xubean.top/ 步骤: 前去github下载压缩包。在宝塔面板新建网站,并且创建一个数据库。将下载的压缩包解压至你新建的网站的目录。注意这里需要更改一个东西。打开新建的网站,跟着提示一步步配置。1. 下载压…

宝塔nginx文件服务器,借助宝塔使用nginx搭建webdav服务端

前言 之前webdav一直使用的是 坚果云 &#xff0c;但是它对请求次数存在限制&#xff0c;某些时候同步会出现问题。所以我决定自己在vps上搭建webdav服务。 vps环境 系统&#xff1a;CentOS 7.3 宝塔&#xff1a;7.1.1 宝塔安装 自行参考&#xff1a;宝塔官网 1.重新安装nginx …

宝塔搭建网站

宝塔搭建网站 1.首先登陆宝塔页面 2.点开侧边栏 网站 选项 点开网站&#xff0c;然后点击添加站点&#xff0c;域名按照自己喜好来填写即可&#xff0c;可以选择创建数据库&#xff0c;其他选项默认就行。 3.点开侧边栏 文件 选项 打开文件选项&#xff0c;接着点击上传&a…

利用Docker和宝塔搭建FRP内网穿透

小老百姓成本能省则省&#xff0c;能多利用则多利用设备价值&#xff0c;一台放wordpress和测试站点服务器虽然配置不高&#xff0c;但为了发挥更多价值&#xff0c;可以用于日常开发&#xff0c;避免多花费租用其它内网穿透产品。 本教程是在不改变宝塔部署的产品之间&#x…