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) 解决问题的第一步,是定位问题。所谓定位问题,就是找到源代码当中导致这个问题的那一句或者那几句代码。有时候解决这个问题需要修改的代码和直接导致这个问题的代码是不同的。我们这里说的定位问…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...