ChatGPT技术解构

news2024/11/26 18:23:09

ChatGPT的训练主要分为三个步骤,如图所示:

Step1:

使用有监督学习方式,基于GPT3.5微调训练一个初始模型;训练数据约为2w~3w量级(根据InstructGPT的训练数据量级估算,参照https://arxiv.org/pdf/2203.02155.pdf P33 Table6),由标注师分别扮演用户和聊天机器人,产生人工精标的多轮对话数据;值得注意的是,在人类扮演聊天机器人时,会得到机器生成的一些建议来帮助人类撰写自己的回复,以此提高撰写标注效率。

以上精标的训练数据虽然数据量不大,但质量和多样性非常高,且来自真实世界数据,这是很关键的一点。经过第一步,微调过的GPT3.5初步具备了理解人类Prompt所包含意图的能力,可以根据不同意图给出高质量的回答。

Step2:

收集相同上文下,根据回复质量进行排序的数据:即随机抽取一大批Prompt,使用第一阶段微调模型,产生多个不同回答,之后标注人员对结果排序,形成 C^{2}_{n} 组训练数据对,使用pairwise loss来训练Reward Model,从而可以预测出标注者更喜欢哪个输出。这种比较学习可以给出相对精确的reward值。

这一步使得ChatGPT从命令驱动转向了意图驱动。训练数据不需过多,维持在万量级即可,因为它不需要穷尽所有的问题,只是要告诉模型人类的喜好,强化模型意图驱动的能力。

Step3:

使用PPO来微调第一阶段的模型。核心思想是随机抽取新的Prompt,用第二阶段的Reward Model给产生的回答打分,这个分数即回答的整体reward;进而将此reward回传,由此产生的策略梯度可以更新PPO模型参数;整个过程迭代数次直到模型收敛。

以上三个步合称为文献中提到的 RLHF(Reinforcement Learning from Human Feedback) 技术。

相关技术

InstructGPT

ChatGPT是InstructGPT的兄弟模型(sibling model),后者经过训练以遵循Prompt中的指令,提供详细的响应。InstructGPT是OpenAI在今年3月在Training language models to follow instructions with human feedback中提出的模型,整体流程和以上的ChatGPT流程基本相同,除了在数据收集和基座模型(GPT3 vs GPT 3.5),以及第三步初始化PPO模型时略有不同。

在InstuctGPT的工作中,与ChatGPT类似,给定Instruction,需要人工写回答。首先训练一个InstructGPT的早期版本,使用完全人工标注的数据,数据分为3类:Instruction+Answer,Instruction+多个examples和用户在使用API过程中提出的需求。从第二类数据的标注,推测ChatGPT可能用检索来提供多个In Context Learning的示例,供人工标注。剩余步骤与以上ChatGPT相同。

尤其需要重视但往往容易被忽视的,即OpenAI对于数据质量和数据泛化性的把控,这也是OpenAI的一大优势:

1)寻找高质量标注者:寻找在识别和回应敏感提示的能力筛选测试中,表现良好的labeler;

2)使用集外标注者保证泛化性:即用未经历以上1)步骤的更广大群体的标注者对训练数据进行验证,保证训练数据与更广泛群体的偏好一致。

在完成以上工作后,我们可以来看看InstuctGPT与GPT3的区别,通过下图可以明显看出:

GPT3的回答简短,回复过于通用毫无亮点;而InstructGPT“侃侃而谈”,解释自由主义为何愚蠢,显然模型学到了对于此类问题人们更想要的长篇大论的回答。

GPT3只是个语言模型,它被用来预测下一个单词,丝毫没有考虑用户想要的答案;当使用代表用户喜好的三类人工标注为微调数据后,1.3B参数的InstructGPT在多场景下的效果超越175B的GPT3: 

InstuctGPT的工作具有开创性,它挖掘了GPT3学到的海量数据中的知识和能力,但这些仅通过快速的In-context的方式较难获得;可以说,InstuctGPT找到了一种面向主观任务来解锁GPT3强大语言能力的方式。

PPO

PPO(Proximal Policy Optimization) 一种新型的Policy Gradient算法(Policy Gradient是一种强化学习算法,通过优化智能体的行为策略来解决在环境中实现目标的问题)。我们只需了解普通的Policy Gradient算法对步长十分敏感,但是又难以选择合适的步长,在训练过程中新旧策略的的变化差异如果过大则不利于学习。

而PPO提出了新的目标函数可以在多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以确定的问题。由于其实现简单、性能稳定、能同时处理离散/连续动作空间问题、利于大规模训练等优势,近年来收到广泛的关注,同时也成为OpenAI默认强化学习算法。

GPT与强化学习

再往前回溯,其实在2019年GPT2出世后,OpenAI就有尝试结合GPT-2和强化学习。在NIPS2020的Learning to Summarize with Human Feedback中,OpenAI对于摘要生成任务,利用了人类反馈对强化学习模型进行训练。可以从这篇工作的整体流程图中,看出三步走的核心思想: 收集反馈数据 -> 训练奖励模型 -> PPO强化学习。

 RLHF第一阶段,针对多个候选摘要,人工排序(这里就体现出OpenAI的钞能力,按标注时间计费,标注过快的会被开除);第二阶段,训练排序模型(依旧使用GPT模型);第三阶段,利用PPO算法学习Policy(在摘要任务上微调过的GPT)。

文中模型可以产生比10倍大模型容量更好的摘要效果。但文中也同样指出,模型的成功部分归功于增大了Reward Model的规模,而这需要很大量级的计算资源,训练6.7B的强化学习模型需要320 GPU-days的成本。

另一篇2020年初的工作,是OpenAI的Fine-Tuning GPT-2 from Human Preferences。同样首先利用预训练模型,训练Reward模型;进而使用PPO策略进行强化学习,整体步骤初见ChatGPT的雏形。

而RLHF的思想,是在更早的2017年6月的OpenAI Deep Reinforcement Learning from Human Preferences提出,核心思想是利用人类的反馈,判断最接近视频行为目标的片段,通过训练来找到最能解释人类判断的奖励函数,然后使用RL来学习如何实现这个目标。

可以说,ChatGPT是站在InstructGPT以及以上理论的肩膀上完成的一项出色的工作,它们将LLM (large language model) / PTM (pretrain language model) 与 RL (reinforcement learning) 出色结合,证明这个方向可行。

WebGPT和CICERO

WebGPT是2021年底OpenAI的工作,其核心思想是使用GPT3模型强大的生成能力,学习人类使用搜索引擎的一系列行为,通过训练奖励模型来预测人类的偏好,使WebGPT可以自己搜索网页来回答开放域的问题,而产生的答案尽可能满足人类的喜好。

Cicero是Meta AI上个月发布的可以以人类水平玩文字策略游戏的AI系统, 其同样可以与人类互动,可以使用战略推理和自然语言与人类在游戏玩法中进行互动和竞争。Cicero的核心是由一个对话引擎和一个战略推理引擎共同驱动的,而战略推理引擎集中使用了RL,对话引擎与GPT3类似。

应用难点

对于ChatGPT的规模,目前没有更多信息支撑,所以无法明确如此智能的ChatGPT是在何规模下达成的。 最早的175B的GPT-3代号是Davinci,其他大小的模型有不同的代号。然而自此之后的代号几乎是一片迷雾,不仅没有任何论文,官方的介绍性博客也没有。OpenAI称Davinci-text-002/003是GPT-3.5,而它们均为InstrucGPT类型的模型,ChatGPT是基于其中一个微调模型得到,固由此推测ChatGPT可能是千亿模型。

大家一般没有机会接触千亿模型(Bloom之前没有开源的千亿模型,GPT-3也是收费的),不了解现在千亿模型的能力边界,对全量微调这个级别的模型也无从估计。ChatGPT的推断成本是比较高的。根据GPT3.5(Davinci)的成本推测:

1k tokens≈700 words为0.02美元,则换算后,一篇2k字的文章,直接调用需要0.4人民币,若保守按照日活1w用户,人均10篇文章计算,则每日调用成本为:10000x10x0.4=40000元。

和以前的模型比较,以BERT和T5为代表的早期Transformer和现在的大模型已不是一个量级。事实上11月28日OpenAI上新了text-davinci-003几乎没有引起国内的任何讨论,如果ChatGPT(11.30发布)不是免费试用,或许也不会引起这么大的反响。

同一时期的工作还有Deepmind的Sparrow和Google的LaMDA,效果与ChatGPT应该不相上下。同样以上提到的WebGPT和Cicero也在国内没有太大的水花。这两年LLM发展已经到了这个层级,或许因为成本或者工程化难度的问题,某种层面上在国内被忽视了。而此次ChatGPT正好找到了好的“曝光点”,一炮而红。

从OpenAI的成功可以看出,优秀的数据是一种极大的优势——除去技术上的考量,OpenAI很少开源数据,显然他们在数据上也下了大功夫,训练语料质量和开源的C4或The Pile不能同日而语;对于我们目前核心使用的扩增模型,Bloom作为千亿模型有很多待挖掘的能力。Bloom的微调任务中缺乏生成式的对话和问答,某些表现不如ChatGPT也在预料之中(实际上在Bloom的测试中,唯一与InstructGPT有重合的任务,是Bloom表现更好)。但是对于很多任务来说,配合In-context Learning,这个差距会被进一步缩小。

所以,我们应该思考如何利用这些令人激动的最新成果,而其中关键是如何找到适合我们入口的方式。比如使用ChatGPT,按不同需求生成高质量小样本数据,克服现有数据难获得的瓶颈;进而利用现有Bloom(GPT3模型)进行数据扩增。

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

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

相关文章

【内网安全-防火墙】防火墙、协议、策略

目录 一、基础知识 1、防火墙五个域 2、协议模型 二、出入站策略 1、单个机器防火墙 2、域控的防火墙 3、安全策略 一、基础知识 1、防火墙五个域 1、Untrust(不信任域,低级安全区域): 用来定义Internet等不安全的网络,用于网络入口线的接入 ——…

沁恒 CH32V003J4M6 开发测试

一、概述 具体看图,SOP8价格在0.6R,TSSOP20价格在0.7R,优势太大了 二、开发准备 通过原厂可以拿到样片,目前我拿到这颗是SOP8,另外官方淘宝可以买到TSSOP20的测试板,也带样片购买WCHLINK,TB…

Mysql 进阶(面向面试篇)锁

全局锁、表级锁(表锁、元数据锁、意向锁(意向共享锁、意向排它锁))、行级锁(行锁(共享锁、排它锁)、间隙锁、临键锁) 表级锁(表锁(表锁分为:表共…

仅差一步!如何缩短加入购物车与成单的距离?

不知不觉,2022年已接近尾声,经历了卡塔尔世界杯、黑色星期五等跨境电商狂欢节后,不少跨境电商卖家都在开展复盘行动,为接下来的圣诞节运营计划打下扎实基础。时常关注跨境电商行业的人都知道,衡量跨境电商广告效率的关…

Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)

一、函数 函数是完成某个功能的代码段,可被其他代码调用,调用的代码可以将数据传递给函数,函数可将对数据的处理结果返回给调用代码。 def mysubt( a, b 0 ): # 定义一个自己的减法函数,第二个参数为默认值为0的默认参数c a -…

2023年湖北报考施工员要多少钱?甘建二告诉您

2023年湖北报考施工员要多少钱?甘建二告诉您 2023年湖北报考施工员要多少钱,甘建二告诉您 2023年武汉报考施工员要多少钱,甘建二告诉您 2023年黄冈报考施工员要多少钱,甘建二告诉您 2023年黄石报考施工员要多少钱,甘…

HBase Java API 开发:批量操作 第3关:批量导入数据至HBase

每一次只添加一个数据显然不像是大数据开发,在开发项目的时候也肯定会涉及到大量的数据操作。 使用Java进行批量数据操作,其实就是循环的在Put对象中添加数据最后在通过Table对象提交。 如何进行批量操作呢,讲到批量操作,相信大…

秋招必备!阿里产出的高并发+JVM豪华套餐送给你,绝对硬核干货

**3、设计了方案,但细节掌握不透彻:**讲不出方案要关注的技术点和可能带来的消极影响。比如读性能有瓶颈会引入缓存,但是忽视了缓存命中率、数据一致性、热点key等问题。 面对马上就要到来的双十一的秒杀环节,你是否已经有备无患…

[附源码]Node.js计算机毕业设计高校第二课堂管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

数据结构为何重要(《数据结构与算法图解》by 杰伊•温格罗)

本文内容借鉴一本我非常喜欢的书——《数据结构与算法图解》。学习之余,我决定把这本书精彩的部分摘录出来与大家分享。 基础数据结构:数组 数组是计算机科学中最基本的数据结构之一。如果你用过数组,那么应该知道它就是一个含有 数据的列表…

免费U盘文件恢复,你不知道的10款u盘恢复软件

U盘是我们在工作和生活中经常使用的移动存储设备。在操作U盘时,里面重要的文件可能会因为疏忽而被删除。通过电脑回收站、备份等方法都不能恢复U盘里面的数据,我们该怎么办?其实U盘删除的文件在删除后不会被完全删除,通过u盘恢复软…

以太网 STP、RSTP、MSTP基础配置、STP生成树安全保障操作命令介绍

2.13.0 以太网 STP、RSTP、MSTP配置、生成树安全保障操作 主要参考:华为S2750, S5700, S6700 V200R005(C00&C01&C02&C03) 产品文档 《命令手册》 MSTP快速生成树STP配置RSTP配置MSTP配置生成树的安全保障操作(1)根桥保护&#xf…

jdk1.8下载与安装教程(win11)

一、JDK下载 1.首先在Oracle官网上下载jdk1.8 打开官网:https://www.oracle.com/ 2.选择Developer Services的Java 3.选择Oracle JDK 4.选择Java8 Window点击: jdk-8u351-windows-x64.exe下载 5.接受Oracle Java SE的Oracle技术网络许可协议 …

Folate-PEG-DBCO,DBCO-PEG- FA,叶酸聚乙二醇环辛炔

●中文名:叶酸聚乙二醇环辛炔,叶酸聚乙二醇二苯基环辛炔,DBCO-PEG-叶酸 ●英文名:FA-PEG-DBCO , Folate-PEG-DBCO,DBCO-PEG- FA,DBCO-PEG-Folate,DBCO-PEG- Folic acid ●外观以及…

游戏合作伙伴专题:BreederDAO 与 SuperGaming 建立 SuperCharged 合作伙伴关系

BreederDAO 很高兴地宣布与 SuperGaming 建立合作伙伴关系,SuperGaming 是一家充满激情的游戏工作室,希望通过 Tower Conquest:Metaverse Edition 进军 Web 3 行业,这是一款基于 Polygon 区块链的免费多人塔防游戏。 征服新领域 S…

产品设计学习过程中的技术和方法

在产品设计的过程中,当你心中有创意设计时,你需要写下这个创意设计,并生成一个例子标记,以便总结你以前的想法。此时,你需要设计性能。在设计性能的过程中,我们需要使用各种设计工具,这些设计工…

自定义Springboot Starter

1.创建一个父项目&#xff1a; demo 1.1 项目结构&#xff1a; 1.2 pom文件内容&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/X…

大四web前端网页制作课作业——HTML+CSS+JavaScript仿小米手机商城网站(37页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

Windows + Pycharm + Docker 配置GPU跑深度学习【不常见GPU问题】

Windows Pycharm Docker 配置GPU跑深度学习 核心配置方法回顾&#xff0c;与 GPU无法使用的解决方案。 1. 更换镜像源 用于加速资源下载&#xff01;修改配置文件: daemon.json 添加国内镜像源&#xff1a; "registry-mirrors": ["https://registry.docke…

yolov5修改骨干网络--原网络说明

yolov5l网络示意图&#xff1a; 以yolov5s为例&#xff08;模型都是在yolov5l上修改了depth_multiple和width_multiple&#xff0c;上面图形是画的yolov5l的&#xff0c;下面的yaml是yolov5s的目的是为了更好的计算网络信息&#xff09; nc: 80 # number of classes depth_mu…