ChatGPT概述:从模型训练到基本应用的介绍
ChatGPT概述:从模型训练到基本应用的介绍
目录
本文是对ChatGPT的由来、训练过程以及实际落地场景的解释,主要内容包括如下三个方面:
1、ChatGPT是什么
2、ChatGPT的原理
3、ChatGPT的思考
4、ChatGPT的应用

ChatGPT是什么
ChatGPT可能是近期深度学习领域,讨论非常频繁的一个概念。但ChatGPT到底是一个什么,怎么给出一个定义呢。可以看下ChatGPT对自己的定义,如下图:

从定义以及我们使用过程中的感受,可以得到如下的结论:
- ChatGPT是一个语言模型
- 了解人类偏好的语言模型
- 是一个大规模预训练的模型
- 表现形式是具备高智能的对话能力
对此,新华社也给出了“新一代操作系统平台的雏形的”评价,可见ChatGPT的横空出世确实带来了一些改变。
模型具有对话能力不是很新奇的事,之前腾讯的混元、百度的ERNIE等大模型都具备对话能力,让ChatGPT出圈并持续火爆的是ChatGPT在如下的测试中也取得了让人惊讶的成绩:

上述的测试不是简单的对话能够解决的,但ChatGPT同样表现得非常出彩,那为什么ChatGPT能够这么优秀?
ChatGPT的原理
过往大模型的发展方向,不外乎:更多的数据、更大的模型结构、更精细的处理方式以及更统一的输入输出等等。但这样训练的大模型,更像是一个图书馆,或者搜索引擎,只具备知识的储存能力和简单的检索能力。
我们以“女朋友生气了怎么办”这个问题为例,过往大模型从网络数据中经过预训练,得到许许多多的答案:你也生气;讲道理;沉默是金;快速认错……但具体哪个答案更符合人类的偏好和认知,模型是不知道的,模型只能根据网络上答案给出反馈。
但可能上述的答案上下文是故意作答、心理测试题、乱写等等情况下的答案,但这些过往的大模型是不知道的。
所以历史的大模型,在训练和使用阶段是没有人工参与的,没有学习到人类的认知和偏好:仅仅是历史数据(网络数据)是存储和检索。

ChatGPT出世前,OpenAI已经进行了一系列的探索,包括生成代码的codex系列和text-davinci系列。这一系列模型的探索过程,构成了指示学习,和RLHF学习方式叠加后,ChatGPT模型才终于横空出世。
监督学习+人工反馈+强化学习 -> ChatGPT

从OpenAI的官方博客,可以看出InstrctGPT和ChatGPT的训练过程如下,存在的差异非常细微:
- 训练数据上的差异
- base模型的差异

整体的训练思路,InstrctGPT和ChatGPT是相同的,均包括三个步骤:
- 微调模型:监督学习下的微调,通过收集问题后,进行人工答案的书写,来微调GPT基模型,得到SFT模型
- 模型模型:在微调的基础上,通过模型对同一个问题产出不同答案,人工标注答案之间的优劣排序,得到RM模型
- RLHF:在SFT模型和RM模型的辅助下,通过强化学习的PPO策略,最终得到终极模型ChatGPT/InstrctGPT
微调

训练过程的第一步:微调。问题来源于早起的Platground的API,人工对问题进行答案的生成。和其他大模型的微调过程是一样的。
这一步的目的是得到后续优化的基模型,以及在强化学习过程中,提供损失函数的约束。

反馈模型

训练过程第二步:RM模型。在已经微调的SFT模型上,通过同一个问题的不同输出,进行人工优劣得分的标注,生成对应的序列。
例如对于问题P,得到的答案为A、B、C和D,人工对答案进行排序为:D>C>B=A,通过模型学习人工排序的结果。也就是让模型模仿人类排序的过程:对SFT模型的输出能够给出优劣的判断。
GPT是字粒度的输出,输出过程的每一步都是在概率分布上的采样,因此,同一个问题多次输入后,会得到不同的输出

RLHF

训练过程第三部:PPO策略的强化学习。在已有的SFT模型和RM模型上,结合PPO策略的强化学习,获得最终的ChatGPT/InstrctGPT。该步的大概流程如下:
- 输入问题后,目标模型(以SFT模型初始化获取)得到答案
- 将问题和答案输入RM模型中,得到该答案的得分
- 将该答案通过PPO策略,反馈给目标模型
- 进行模型的更新
通过损失函数可以看出,在实际的训练过程中,RM模型和最终的目标模型,均存在参数的更新

上面的三个步骤,就是InstrctGPT/ChatGPT的大概训练流程。总结起来就是下图:

ChatGPT的思考

将人类的偏好和认知引入模型训练,并不是ChatGPT或者OpenAI的首创,在2020年一篇做摘要的论文就提出了该思想。只能说是OpenAI的“钞能力”将该方法发扬光大了。
针对ChatGPT,目前其在聊天、翻译、脚本、代码、文案……等诸多领域已经崭露头角了,在ChatGPT表现其“无所不能”的同时,我们也可以考虑下其目前存在的问题有哪些呢。

目前来说,
- ChatGPT的准确性已经非常高,但对于特定问题可能在一本正经的胡说八道,当然目前其不具备联网更新能力,训练语料为2021年之前的,最新的知识可能更新是一方面的问题;
- 关于逻辑性和数据的偏见,是目前大模型普遍存在的问题,期待后续模型能够在这方面带来惊艳的表现
- 资源是限制ChatGPT普适性推广的核心关键,其训练数据规模、推理依赖的资源,都是海量的,在这些成本没有降低前,大模型应该还仅仅是固定厂商的利器。

ChatGPT的应用
随着ChatGPT的爆火,也带来了一些实际的落地应用,例如下面的几个应用,都是非常有意思的:
- 对话式PDF阅读助手:通过上传文档,然后对话沟通的方式,获取论文、文献的内容要点
- AI PPT生成:ChatGPT和AIGC结合产生的质变
- 写作:写故事、写文案、写小说、写PPT,只要是文字范围的,一切皆有可能



总的来说,期待ChatGPT后续的表现。
相关文章:
ChatGPT概述:从模型训练到基本应用的介绍
ChatGPT概述:从模型训练到基本应用的介绍 目录 本文是对ChatGPT的由来、训练过程以及实际落地场景的解释,主要内容包括如下三个方面: 1、ChatGPT是什么 2、ChatGPT的原理 3、ChatGPT的思考 4、ChatGPT的应用 ChatGPT是什么 ChatGPT可能是近…...
C语言实现扫雷【详细讲解+全部源码】
扫雷的实现1. 配置运行环境2. 扫雷游戏的初步实现2.1 建立扫雷分布模块2.2 创建名为board的二维数组并进行棋盘初始化2.3 打印棋盘3. 接下来该讨论的事情3.1 布置雷3.2 排查雷3.3 统计坐标周围有几个雷4. 完整扫雷游戏的实现4.1 game.h4.2 game.c4.3 扫雷.c1. 配置运行环境 本游…...
Vue2.0开发之——购物车案例-Goods组件封装-商品名称和图片(46)
一 概述 循环渲染Goods组件为Goods组件封装title属性为Goods组件封装pic属性 二 循环渲染Goods组件 2.1 App.vue中导入Goods组件 import Goods from /components/Goods/Goods.vue2.2 App.vue中注册Goods组件 components: {Header,Goods}2.3 循环渲染每一个商品的信息 <…...
0201基础-组件-React
1 组件和模块 1.1 模块 对外提供特定功能的js程序,一般就是一个js文件 为什么拆分模块呢?随着业务逻辑增加,代码越来越多,越来越复杂。作用:复用js,简化js,提高js运行效率 1.2 模块化 当应用…...
论文笔记 | Conducting research in marketing with quasi-experiments
这篇论文是Journal of Marketing上的论文,讲了使用准实验来进行论文研究的一些事项。外生性识别的来源、几种准实验方法的注意点还有内生性的解决。 这篇论文对于准实验或者是平常论文的展开有一个非常友善的指导功能,可以阅读~ 摘要:本文旨…...
有关Android导览(Android Navigation component)
文章目录小结有关Android导览(Android Navigation component)碰到的问题参考小结 在使用Android导览(Android Navigation component)碰到很多问题。解决了一些问题,但是“Skipped xxx frames! The application may be doing too much work on its main thread”这样…...
01 C语言计算
C语言计算 1、变量 用途:需要存放输入的数据 定义格式:数据类型 变量名(用于区分其他变量) 变量名格式:只能由字母/下划线/数字构成,首位不能是数字;且变量名不能是标识符 **变量赋值和初始…...
java单元测试简介(基于SpringBoot)
java单元测试简介(基于SpringBoot)mockitomock创建mock对象的另一种方式:Mockverifystubbing(存根)Spy(间谍)mock 静态方法mockito在springboot mock中的实战mockito 通常,在我们写单测时,会遇…...
Linux常用命令操作
文件目录操作 查看文件列表 ls #输出列表信息 ls -l #输出详细列表信息 ls -a #输出隐藏文件 ls -la #输出包含的隐藏文件及详细信息 ll # ls-l的缩写rwx分别对应读取,写入,执行权限,前面有d代表是文件夹 创建文件 touch file.txt #创建…...
SpringCloud GateWay配置—TLS 和 SSL、Http超时配置
一、TLS 和 SSL网关可以按照通常的 Spring 服务器配置侦听 HTTPS 上的请求。 以下示例演示如何执行此操作:application.ymlserver:ssl:enabled: truekey-alias: scgkey-store-password: scg1234key-store: classpath:scg-keystore.p12key-store-type: PKCS12您可以将…...
python Django中的cookies和session会话保持技术
cookies和session都是为了保持会话状态而诞生的两个存储技术会话定义: 从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话HTTP协议是无状态的,导致会话状态难以保持Cookies-定义 cookies是保存在客户端浏览器上的…...
vue3的v-model指令
1. 普通input输入框双向绑定 <template><!-- 1. 普通input输入框双向绑定 --><!-- 其实等价于:<input :modelValue"title" update:modelValue"newTitle>titlenewTitle"/> --><input type"text" v-mod…...
Matlab小波去噪——基于wden函数的去噪分析
文章目录一、问题描述二、代码问题1:原始信号加6分贝高斯白噪声问题2:确定合适的小波基函数问题3:确定最合适的阈值计算估计方法问题4:确定合适的分解层数问题5:实际信号去噪问题6:对比三、演示视频最后一、…...
分布式对象存储——Apache Hadoop Ozone
前言 本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 1. 概述 Ozone是Apache Hadoop项目的子项目…...
Linux 和数据库笔记-03
今天主要内容数据库相关介绍数据库(软件)常见类型Navicat 工具基本使用常见的数据类型和约束(重点)SQL 语句的编写(表和数据)一. 数据库是什么?为什么学习数据库软件中产生的所有数据, 最终都要存储于数据库当中测试人员如果想要进行数据查询/数据校验, 就必须掌握对数据库的基…...
布尔定律---布尔代数的基本定律
一、单变量布尔定律 1、0-1定律 2、互补定律 3、重叠定律 4、还原定律 小结:或运算和与运算定律的差别在于:所有的“|”运算符换成“&”,运算结果为 0 换成 1。这就是对偶定律。它不仅是单逻辑变量的定律,而且对于所有布尔定…...
OSG三维渲染引擎编程学习之七十五:“第七章:OSG场景图形交互” 之 “7.6 多视图”
目录 第七章 OSG场景图形交互 7.6 多视图 7.6.1 多视图描述 7.6.2 多视图相机示例 第七章 OSG场景图形交互 作为一个成熟的三维渲染引擎,需...
【计算机】单位制前缀的歧义-KB、kb、MB混用
引言 经常遇到容量、带宽的单位,MB,GB在进行单位换算时,总是傻傻分不清,查些资料浅记录一下。 公制(metric system) 又译米制,是一个国际化十进位量度系统。法国在1799年开始使用公制…...
nodejs调用浏览器打开URL链接
本文主要介绍的是node.js调用Chrome浏览器/默认浏览器打开链接地址的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 安装第三方插件open 通过open模块,可以在任何平台上打开某个浏览器网址。 通过NPM安装 npm i…...
ARM uboot 的移植2-从三星官方 uboot 开始移植
一、inand 驱动问题的解决 1、先从现象出发定位问题 (1) 解决问题的第一步,是定位问题。所谓定位问题,就是找到源代码当中导致这个问题的那一句或者那几句代码。有时候解决这个问题需要修改的代码和直接导致这个问题的代码是不同的。我们这里说的定位问…...
用ESP32和2.13寸电子价签墨水屏,DIY一个超省电的桌面网络时钟(附完整代码)
用ESP32和2.13寸电子价签墨水屏打造极简网络时钟:从硬件拆解到代码实战 在智能设备泛滥的今天,一块能安静显示时间且不打扰生活的时钟反而成了稀罕物。本文将带你用ESP32开发板和汉朔2.13寸电子价签墨水屏,打造一个年耗电量不足1度电的极简网…...
告别‘纸片人’:用AAAI 2025最新技术,打造你的高保真3D数字分身(ID-Sculpt/GraphAvatar实战)
从单张照片到高保真3D数字分身:ID-Sculpt与GraphAvatar技术实战指南 在虚拟社交、直播互动和元宇宙场景爆发的今天,一个能准确还原个人特征的3D数字分身正在从技术炫技变成刚需。传统3D建模需要专业设备和数小时扫描,而最新AAAI 2025会议亮相…...
VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存
VS2015C实战:海康MVS工业相机多机同步采图全流程解析 工业视觉检测系统中,多相机同步采图是个经典需求。上周帮朋友调试8台海康威视相机组成的检测线时,发现网上完整案例实在太少。今天我就以VS2015开发环境为例,带大家深入MVS安装…...
Halcon点云拼接实战:如何用特征模板搞定3D扫描缺失问题?
Halcon点云拼接实战:特征模板技术在工业3D扫描中的应用 在工业检测和逆向工程领域,3D扫描常常面临一个棘手问题——单次扫描无法完整捕获复杂物体的所有表面细节。想象一下,当您需要检测一个汽车发动机缸体的内部结构,或者重建一…...
串口通讯参数设置全解析:从波特率到流控制的完整配置流程
串口通讯参数设置全解析:从波特率到流控制的完整配置流程 在嵌入式系统和硬件调试领域,串口通讯就像设备间的"普通话",而参数配置则是确保双方能顺畅交流的语法规则。想象一下,当你需要让树莓派与传感器"对话&quo…...
别再死记硬背了!用‘借位法’5分钟搞定子网划分,网工面试必看
别再死记硬背了!用‘借位法’5分钟搞定子网划分,网工面试必看 刚入行的网络工程师最怕什么?十个人里有九个会说是子网划分。那些密密麻麻的二进制数字、复杂的计算公式,简直像天书一样让人望而生畏。但今天我要告诉你一个秘密&…...
Event-B精化实战(三)——分布式文件传输协议的奇偶校验优化
1. 从数值比较到奇偶校验的逻辑跃迁 第一次看到用奇偶性替代数值比较的方案时,我正坐在实验室调试一个分布式存储系统。当时系统里两个节点的指针同步逻辑已经让状态机复杂得像团乱麻,直到偶然翻到Event-B的奇偶校验优化案例,才恍然大悟——原…...
Python原生AOT编译实战指南(2026 LTS版正式启用倒计时)
第一章:Python原生AOT编译的演进脉络与2026 LTS战略意义Python长期以来以解释执行和字节码(.pyc)为核心运行范式,而原生AOT(Ahead-of-Time)编译的探索始于2010年代中期的Nuitka、Cython等工具,但…...
基于TINA的英飞凌功率MOSFET SPICE瞬态仿真与损耗优化实战
1. 功率MOSFET仿真基础与TINA软件入门 电力电子工程师在设计电源系统时,最头疼的问题之一就是如何准确预测功率MOSFET的损耗。我刚开始接触这个领域时,曾经因为低估了开关损耗导致整个电源模块过热报废,损失惨重。后来发现,TINA-T…...
如何通过Winhance实现Windows系统全方位优化?从入门到精通的完整指南
如何通过Winhance实现Windows系统全方位优化?从入门到精通的完整指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/…...
