InstructionGPT

之前是写在[LLM:提示学习Prompt Learning]里的,抽出来单独讲一下。

基本原理

        在做下游的任务时,我们发现GPT-3有很强大的能力,但是只要人类说的话不属于GPT-3的范式,他几乎无法理解。例如,我们说把句子A变成句子B,这种到底是机器翻译呢,还是同语言的转述,都需要让GPT-3学习到才是可以的。

        InstructGPT/ChatGPT都是采用了GPT-3的网络结构,通过指示学习构建训练样本来训练一个反应预测内容效果的奖励模型(RM),最后通过这个奖励模型的打分来指导强化学习模型的训练。

        InstructGPT采用基于人类反馈的强化学习(RLHF)来不断微调预训练语言模型,旨在让模型能够更好地理解人类的命令和指令含义,如生成小作文、回答知识问题和进行头脑风暴等。该方法不仅让模型学会判断哪些答案是优质的,而且可以确保生成的答案富含信息、内容丰富、对用户有帮助、无害和不包含歧视信息等多种标准。

新训练范式:RLHF

大型语言模型 (Large Language Model,LLM) 生成领域的新训练范式:RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型。RLHF最早可以追溯到Google在2017年发表的《Deep Reinforcement Learning from Human Preferences》,它通过人工标注作为反馈,提升了强化学习在模拟机器人以及雅达利游戏上的表现效果。

训练流程

Step1:根据采集的SFT数据集对GPT-3进行有监督的微调(Supervised FineTune,SFT):

        首先,从测试用户提交的 prompt 中随机抽取一批,然后请专业的标注人员为这些 prompt 给出高质量答案。接下来,我们使用这些<prompt,answer>数据来Fine-tune GPT-3模型,以使其初步具备理解人类prompt中所包含意图,并根据这个意图给出相对高质量回答的能力。虽然这个过程是有效的,但显然这还不足以解决所有问题:此时的SFT模型在遵循指令/对话方面已经优于 GPT-3,但不一定符合人类偏好。

        这一步骤中包含了1.2万条训练demonstration数据,其包括prompt和labeled answer。SFT数据一部分来自使用OpenAI的PlayGround的用户,另一部分来自OpenAI雇佣的40名标注工(labeler),并且他们对labeler进行了培训。在这个数据集中,标注工的工作是根据内容自己编写指示,并且要求编写的指示满足下面三点:简单任务:labeler给出任意一个简单的任务,同时要确保任务的多样性;Few-shot任务:labeler给出一个指示,以及该指示的多个查询-响应对;用户相关的:从接口中获取用例,然后让labeler根据这些用例编写指示。

        这里使用余弦学习率衰减和残差 dropout 为0.2进行了16个epoch的训练,根据验证集上的RM分数进行最终的SFT模型选择。论文发现SFT模型在第1个epoch后会出现过拟合情况,然而后来实验发现训练更多的epoch会提高RM分数和人类偏好评分,尽管会出现过拟合,所以看来过拟合即使出现也不影响最终的学习结果。

Step2:收集人工标注的对比数据,训练奖励模型(Reword Model,RM):

具体地,Fine-tuning完之后,再给一个prompt让SFT模型生成出若干结果,通过人工为其排序,可以得到标注的排序pair;基于标注的排序结果(来自于Human Feedback),训练一个Reward Model。

Step3:使用RM作为强化学习的优化目标,利用PPO算法微调SFT模型:

使用第二步训练得到的reward model和PPO算法,对第一步的模型进行 fine-tune。具体地:用生成出来的结果训练SFT,并通过强化学习的PPO方法,最大化SFT生成出排序靠前的answer。

base模型是绿色的,RL Policy是灰色的:

[ChatGPT 背后的“功臣”——RLHF 技术详解]

[OpenAI RLHF 的第一个项目][Fine-Tuning Language Models from Human Preferences]

奖励模型(RM)

        因为训练RM的数据是一个labeler根据生成结果排序的形式,所以它可以看做一个回归模型。RM结构是将SFT训练后的模型的最后的嵌入层去掉后的模型。

        RM模型接受输入<prompt,answer>,给出评价回答质量高低的奖励值——回报分数Score。

        具体的讲,对弈每个prompt,InstructGPT/ChatGPT会随机生成K个输出( 4≤K≤9 )(可通过beam search等方法),然后它们向每个labeler成对的展示输出结果,也就是每个prompt共展示个结果,然后用户从中选择效果更好的输出。

在训练时,对多个排序结果,两两组合,形成多个训练数据对。接下来,研究者使用这个排序结果数据进行pair-wise learning to rank训练模式,训练回报模型。对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。

奖励模型的损失函数:最大化labeler更喜欢的响应和不喜欢的响应之间的差值。

        另外InstructGPT/ChatGPT将每个prompt的个响应对作为一个batch,这种按prompt为batch的训练方式要比传统的按样本为batch的方式更不容易过拟合,因为这种方式每个prompt会且仅会输入到模型中一次。

PPO-ptx模型

通过第2步得到的奖励模型来指导SFT模型的继续训练。

强化学习的三要素:策略(policy)、动作空间(action space)和奖励函数(reward function)。策略就是基于该语言模型,接收 prompt 作为输入,然后输出一系列文本(或文本的概率分布);动作空间就是词表所有 token 在所有输出位置的排列组合(单个位置通常有50k左右的token候选);奖励函数(reward)则是基于训好的RM模型计算得到初始reward,再叠加上一个约束项来;观察空间则是可能的输入token序列(即prompt),为词表所有token在所有输入位置的排列组合。

        InstructGPT的PPO数据没有进行标注,它均来自GPT-3的API的用户。既又不同用户提供的不同种类的生成任务,其中占比最高的包括生成任务(45.6%),QA(12.4%),头脑风暴(11.2%),对话(8.4%)等。

        PPO-ptx模型训练目标:

  1. 随着模型的更新,强化学习模型产生的数据和训练奖励模型的数据的差异会越来越大。作者的解决方案是在损失函数中加入KL惩罚项  来确保PPO模型的输出和SFT的输出差距不会很大。
  2. 只用PPO模型进行训练的话,会导致模型在通用NLP任务上性能的大幅下降,作者的解决方案是在训练目标中加入了通用的语言模型目标 ,这个变量在论文中被叫做PPO-ptx。

初始化时,期望在训练πϕ时能够最大化reward的得分。

为什么不用 Reward-Model 的数据直接fine-tune而用 RL

        用 supervised finetune(sft)很容易做到返回“我不知道”,但是很难让模型不去编内容。或者说,在标注的时候,对于一个模型不会的问题,标注员应该要标注为“不知道”,而不是给一个回答,不然 sft 的时候相当于训练模型怎么编答案。
        我们最好划出一个边界,哪些是模型不知道的,哪些是知道但是不确定的,哪些是知道的,并通过训练加强这些不同分类的分界,让模型能稳定回答它明确知道的东西,让模型不要回答它不知道的/错误的内容,这样才能保持或提升模型的 factual truthfulness;
        如果我们可以有一个 reward model,他根据这个边界返回 reward 就好了,这样的话模型的训练就能集中于我们上面描述的目标,这也是为啥他们要用 RL。但是实际上 InstructGPT 里的 loss 也并不是以找到这个边界为指标,而是优化正例和负例之间的差别,这使得当前的 reward model 没有做到预期的效果,还有优化的空间。[为什么不用 Reward-Model 的数据直接 fine-tune]

        关键是要有个RM模型去评估不同回答的好坏。(当然有了一个RM模型后,是否真的必须使用PPO呢?如果跑很多数据,使用第一步得到的模型loss+RM的打分差作为新loss去finetune第一步得到的模型,是不是也可以?但是有可能因为有限的Prompt,我们不能够训练无限多的Prompt,类似于强化学习中无限的环境,所以只能够通过新旧模型预测的差别来进行学习速度上的提升。)

训练细节

数据

因为InstructGPT/ChatGPT是在GPT-3基础上做的微调,而且因为涉及了人工标注,它们数据总量并不大:

其中labeler指的是openai的标注人员,customer指gpt-3 api的用户。 

论文的附录A对数据的分布进行了更详细的讨论,几个可能影响模型效果的几项:

1 数据中96%以上是英文,其它20个语种例如中文,法语,西班牙语等加起来不到4%,这可能导致InstructGPT/ChatGPT能进行其它语种的生成,但效果应该远不如英文;
2 提示种类共有9种,而且绝大多数是生成类任务,可能会导致模型有覆盖不到的任务类型;
3 40名外包员工来自美国和东南亚,分布比较集中且人数较少, InstructGPT/ChatGPT的目标是训练一个价值观正确的预训练模型,它的价值观是由这40个外包员工的价值观组合而成。而这个比较窄的分布可能会生成一些其他地区比较在意的歧视,偏见问题。

prompts示例

‘instruction-style’的user prompts示例

Illustrative user prompts from InstructGPT distribution

Use CaseExample
brainstorming

What are 4 questions a user might have after reading the instruction manual for a trash compactor?

{user manual}

1.

classification

Take the following text and rate, on a scale from 1-10, how sarcastic the person is being (1 = not at all, 10 = extremely sarcastic). Also give an explanation

{text}

Rating:

{java code}

What language is the code above written in?

extract

Extract all course titles from the table below:

| Title | Lecturer | Room |

| Calculus 101 | Smith | Hall B |

| Art History | Paz | Hall A |

Given the following list of movie titles, write down any names of cities in the titles.

{movie titles}

generation

Write a creative ad for the following product to run on Facebook aimed at parents:

Product: {product description}

Write a short story where a brown bear to the beach, makes friends with a seal, and then return home.

Here’s a message to me: — {email} —

Here are some bullet points for a reply: — {message} —

Write a detailed reply

rewrite

Translate this sentence to Spanish:

<English sentence>

Rewrite the following text to be more light-hearted:

— {very formal text}—

hatZ

The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?

AI: I am an AI created by OpenAI. How can I help you today?

Human: I’d like to cancel my subscription.

AI:

closed qa

Help me answer questions about the following short story:

{story}

What is the moral of the story?

Answer the following question:

What shape is the earth?

A) A circle

B) A sphere

C) An ellipse

D) A plane

open qa

I am a highly intelligent question answering bot. If you ask me a question that is rooted in truth, I will give you the answer. If you ask me a question that is nonsense, trickery, or has no clear answer, I will respond with "Unknown".

Q: What is human life expectancy in the United States?

A: Human life expectancy in the United States is 78 years.

Q: Who was president of the United States in 1955?

A:

How do you take the derivative of the sin function?
summarization

Summarize this for a second-grade student:

{text}

{news article}

Tl;dr:

otherstart with where
Look up "cowboy" on Google and give me the results.

less ‘instruction-style’式的GPT-3 user prompts示例

Illustrative user prompts from GPT-3 distribution: These are generally less ‘instruction-style’, and contain more explicit prompting. Note that there are some prompts where the user intent is unclear. 给人的感觉就是更more-shot一些,更in context一些,提示更多更明确。另外instructgpt有点命令的意思,如closed qa时,instruct要先说一下“请回答问题”,然后再提问?

Use CaseExample
brainstorming

Tell me a list of topics related to:

- interior design

- sustainable ecosystems

- fake plants

classification

This is a tweet sentiment classifier.

{tweet}

Sentiment: negative

===

{tweet}

Sentiment: neutral

===

{tweet}

Sentiment:

extract

Text: {text}

Keywords:

generation

This is the research for an essay:

===

{description of research}

===

Write a high school essay on these topics:

===

closed qa

When you drop a heavy stone from a tree, what happens?

A. The stone falls to the ground.

B: The stone stays in the tree.

C: The stone floats.

D: Nothing happens.

Answer:

评价

 1.3B 参数 InstructGPT 模型的输出优于 175B GPT-3 的输出,尽管参数少了 100 多倍。

InstructGPT/ChatGPT的效果是非常棒的,尤其是引入了人工标注之后,让模型的“价值观”和的正确程度和人类行为模式的“真实性”上都大幅的提升。

优点

引入了人工标注之后,让模型的“价值观”和的正确程度和人类行为模式的“真实性”上都大幅的提升。

        InstructGPT/ChatGPT的效果比GPT-3更加真实:这个很好理解,因为GPT-3本身就具有非常强的泛化能力和生成能力,再加上InstructGPT/ChatGPT引入了不同的labeler进行提示编写和生成结果排序,而且还是在GPT-3之上进行的微调,这使得我们在训练奖励模型时对更加真实的数据会有更高的奖励。作者也在TruthfulQA数据集上对比了它们和GPT-3的效果,实验结果表明甚至13亿小尺寸的PPO-ptx的效果也要比GPT-3要好。
        InstructGPT/ChatGPT在模型的无害性上比GPT-3效果要有些许提升:原理同上。但是作者发现InstructGPT在歧视、偏见等数据集上并没有明显的提升。这是因为GPT-3本身就是一个效果非常好的模型,它生成带有有害、歧视、偏见等情况的有问题样本的概率本身就会很低。仅仅通过40个labeler采集和标注的数据很可能无法对模型在这些方面进行充分的优化,所以会带来模型效果的提升很少或者无法察觉。

缺点

        InstructGPT/ChatGPT会降低模型在通用NLP任务上的效果:我们在PPO的训练的时候讨论了这点,虽然修改损失函数可以缓和,但这个问题并没有得到彻底解决。
        有时候InstructGPT/ChatGPT会给出一些荒谬的输出:虽然InstructGPT/ChatGPT使用了人类反馈,但限于人力资源有限。影响模型效果最大的还是有监督的语言模型任务,人类只是起到了纠正作用。所以很有可能受限于纠正数据的有限,或是有监督任务的误导(只考虑模型的输出,没考虑人类想要什么),导致它生成内容的不真实。就像一个学生,虽然有老师对他指导,但也不能确定学生可以学会所有知识点。
        模型对指示非常敏感:这个也可以归结为labeler标注的数据量不够,因为指示是模型产生输出的唯一线索,如果指示的数量和种类训练的不充分的话,就可能会让模型存在这个问题。
        模型对简单概念的过分解读:这可能是因为labeler在进行生成内容的比较时,倾向于给给长的输出内容更高的奖励。
        对有害的指示可能会输出有害的答复:例如InstructGPT/ChatGPT也会对用户提出的“AI毁灭人类计划书”给出行动方案。这个是因为InstructGPT/ChatGPT假设labeler编写的指示是合理且价值观正确的,并没有对用户给出的指示做更详细的判断,从而会导致模型会对任意输入都给出答复。虽然后面的奖励模型可能会给这类输出较低的奖励值,但模型在生成文本时,不仅要考虑模型的价值观,也要考虑生成内容和指示的匹配度,有时候生成一些价值观有问题的输出也是可能的。

未来工作

人工标注的降本增效。
模型对指示的泛化/纠错等能力:指示作为模型产生输出的唯一线索,模型对他的依赖是非常严重的,如何提升模型对指示的泛化能力以及对错误指示示的纠错能力是提升模型体验的一个非常重要的工作。这不仅可以让模型能够拥有更广泛的应用场景,还可以让模型变得更“智能”。
避免通用任务性能下降。

from: -柚子皮-

ref: [InstructGPT: Training language models to follow instructions with human feedback]

[ChatGPT/InstructGPT详解 - 知乎]

[GPT3.5 (Instruct GPT)]

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

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

相关文章

Android Studio Logcat日志VIVO手机显示*号问题

咨询VIVO客服 1、拨盘输入 *#06# 获取串码&#xff0c;发送给客服 2、拨号盘输入*#*#112#*#*-右上角菜单-更多-一键授权 注意不要刷机&#xff0c;恢复出厂设置&#xff0c;手动取消授权哦

【Linux】Linux任务管理与守护进程

Linux任务管理与守护进程 一、任务管理1、进程组概念2、作业概念3、会话概念4、相关操作 二、守护进程1、守护进程的创建2、守护进程的库函数 一、任务管理 1、进程组概念 在Linux中&#xff0c;每个进程除了有一个进程ID之外&#xff0c;还有一个属性是进程组(PGID)&#xff…

CAD迷你看图 mac v4.4.5

CAD迷你看图是一款小巧的DWG文件浏览小工具&#xff0c;支持AutoCAD DWG/DXF等常用图纸文件&#xff0c;可脱离AutoCAD快速浏览DWG图纸&#xff0c;并提供了平移、缩放、全屏等功能。该软件采用独特的云技术&#xff0c;根据不同DWG图纸的需要自动装载相应字体&#xff0c;解决…

木马文件检测系统 毕业设计 JAVA+Vue+SpringBoot+MySQL

项目编号&#xff1a;S041&#xff0c;源码已在 Bilibili 中上架&#xff0c;需要的朋友请自行下载。 https://gf.bilibili.com/item/detail/1104375029为了帮助小白入门 Java&#xff0c;博主录制了本项目配套的《项目手把手启动教程》&#xff0c;希望能给同学们带来帮助。 …

Linux网络编程:IP协议

目录 一. IP协议的功能 二. IP协议报头 2.1 IP报头的格式 2.2 IP报头各部分含义 三. IP报文的分片问题 3.1 什么是分片 3.2 分片的原理 3.3 合并报文 四. 网段划分 4.1 网络号和主机号 4.2 网络号和主机号的划分策略 4.3 特殊的IP地址 4.4 IP地址数量不足问题 五.…

「滚雪球学Java」:Java前序篇(章节汇总)

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

竞赛选题 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习&#xff1f;5.1.2 为什么要迁移学习&#xff1f; 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…

文心一言 VS 讯飞星火 VS chatgpt (121)-- 算法导论10.4 2题

二、用go语言&#xff0c;给定一个n结点的二叉树&#xff0c;写出一个 O(n)时间的递归过程&#xff0c;将该树每个结点的关键字输出。 文心一言&#xff1a; 在Go语言中&#xff0c;你可以使用递归函数来遍历二叉树的所有节点&#xff0c;并输出每个节点的关键字。以下是一个…

OpenLayers入门,OpenLayers从vue的assets资源路径加载geojson文件并解析数据叠加到地图上,以加载世界各国边界为例

专栏目录: OpenLayers入门教程汇总目录 前言 本章以加载世界各国边界的GeoJSON格式数据为例,讲解如何使用OpenLayers从vue的assets资源路径加载geojson文件并解析数据叠加到地图上。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@…

redis爆满导致数据丢失

记一则redis爆满导致数据丢失的一场事故 某功能上线后&#xff0c;发现出现问题&#xff0c;最后定位到了 redis. 由于存储的数据过多&#xff0c;导致阿里云4G大小的 redis 爆满&#xff0c;触发了回收策略。 于是临时扩容,运维同学当时未找到阿里云配置。 后面我用工具连接了…

【递归、搜索与回溯算法】第七节.257. 二叉树的所有路径和46. 全排列

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;递归、搜索与回溯算法 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&am…

人工智能的发展方向:探索智能未来的无限可能

原创 | 文 BFT机器人 人工智能&#xff0c;简称AI&#xff0c;是一门专注于研究计算机如何能像人类一样思考、学习和解决问题的科学。它的创造初衷是构建一个智能系统&#xff0c;能模仿、模拟甚至实现人工智能的各种功能和行为&#xff0c;随着科技的持续进步&#xff0c;人工…

低成本IC上岸攻略—IC设计网课白嫖篇

数字电路基础 清华大学 王红主讲&#xff1a;数字电子技术基础 西安电子科技大学 任爱锋主讲&#xff1a;数字电路与逻辑设计 模拟电路基础 上交大 郑益慧主讲&#xff1a;模拟电子技术基础 清华大学 华成英主讲&#xff1a;模拟电子技术基础 半导体物理&#xff1a; 西…

java--死循环与循环嵌套

1.死循环 可以一直执行下去的一种循环&#xff0c;如果没有干预不会停下来的 2.死循环的写法 3.循环嵌套 循环中又包含循环 4.循环嵌套的特点 外部循环每循环一次&#xff0c;内部循环会全部执行完一轮

【QT】对象树

一、QT对象树的概念 先来看一下 QObject 的构造函数&#xff1a; 通过帮助文档我们可以看到&#xff0c;QObject 的构造函数中会传入一个 Parent 父对象指针&#xff0c;children() 函数返回 QObjectList。即每一个 QObject 对象有且仅有一个父对象&#xff0c;但可以有很多个…

美颜SDK集成指南:为应用添加视频美颜功能

随着社交媒体和直播应用的兴起&#xff0c;视频美颜功能已成为用户追求的一项热门特性。用户希望能够在拍摄照片或进行实时视频直播时&#xff0c;使用美颜功能来增强其外观。为了满足这一需求&#xff0c;开发者可以考虑集成美颜SDK&#xff0c;为其应用增加这一吸引人的功能。…

uniapp接口请求api封装,规范化调用

封装规范和vue中的差不多&#xff0c;都是统一封装成一个request对象&#xff0c;然后在api.js里面调用。 先创建一个utils文件夹&#xff0c;然后里面创建一个request.js&#xff0c;代码如下&#xff1a; export const baseURL 基础url地址const request (options) > …

面试题:线程池执行的用户任务抛出异常会怎样?

文章目录 ThreadPoolExecutor.execute源码分析 ThreadPoolExecutor.submit源码分析 ScheduledThreadPoolExecutor.schedule源码分析 思考&#xff1a;ThreadPoolExecutor.execute发生异常时为什么要退出 ThreadPoolExecutor.execute 源码分析 看源码可以知道&#xff0c;Thre…

VScode连接的服务器上使用jupyter显示请选择内核源

问题复现 我实在VScode上用ssh-remote连接的服务器&#xff0c;想用.ipynb文件上写东西&#xff0c;结果窗口上方弹出一个输入框&#xff0c;“请键入以选择内核”&#xff1b; 在扩展里找到jupyter更新一下 之前左边的图标是灰色的&#xff0c;后来我下下载了新的版本&#…

Xcode自定义快捷键

一、新建脚本 1. 编写脚本 把脚本sh文件保存在安全的目录&#xff0c;不会被删除 我这里主要是两个常用的&#xff1a; 1.打开终端: xcode-terminal.sh #!/bin/shif [ -n "$XcodeProjectPath" ]; then open -a Terminal "$XcodeProjectPath"/.. elseo…