ChatGPT⼊门到精通(3):ChatGPT 原理

OpenAI在2022年11⽉份发布ChatGPT,强⼤的⽂字对话、创意写作能⼒,全球掀起了⼀
波AI浪潮。本⽂对ChatGPT的技术原理、厉害之处、可能的落地⽅向等⽅⾯进⾏了全⾯
的解析,看完后会对ChatGPT有更深⼊的了解。

⼀、前⾔

2022年11⽉30⽇,ChatGPT发布,5天内涌⼊100W⽤户。
他拥有持续的上下⽂对话能⼒,同时⽀持⽂章写作、诗词⽣成、代码⽣成等能⼒。
如果⽤旧技术去理解他,我们通常会认为他的背后是由复合Agent组合起来⽀撑的。
复合Agent是什么意思呢?即有若⼲个术业有专攻的Agent:有⼀个负责聊天对话的,⼀
个负责诗词⽣成的,⼀个负责代码⽣成的, ⼀个负责写营销⽂案的等等等等。
每个Agent只擅⻓做⾃⼰的那部分事情,⽽在⽤户使⽤的过程中,系统会先判定⽤户的意
图是什么,应该是哪个Agent,然后再将⽤户的命令分发给对应的agent去解决并提供答
案。
因此看起来是很厉害的机器⼈,背后其实是若⼲个术业有专攻的机器⼈。事实上Siri、⼩
爱、⼩度,⼩冰甚⾄包括各个平台的客服机器⼈都是这种模式。这样当你要上线⼀个新能
⼒(例如写古诗),你只需要新增训练⼀个Agent,然后将这个Agent接⼊到总控的分类
意图器下就⾏。
这也是当前时代的⼀个缩影,不管外⾏⼈如何看待你从事的⾏业,不管媒体是如何⼀次次
⼈云亦云地说警惕AI取代⼈类,你⼀直都知道,你在做的只是训练出⼀个术业有专攻的机
器⼈⽽已,离真正的⼈⼯智能⼗万⼋千⾥。
但ChatGPT的能⼒不再是这种模式了,他所采⽤的模式是⼤语⾔模型+Prompting。所有
的能⼒通过⼀个模型实现,背后只有⼀个什么都会的机器⼈(即⼤语⾔模型),并⽀持⽤
户借助⽂字下达命令(即Prompting,提⽰/指⽰)。
虽然这种能⼒的表现还不算完美,但是他开启了⼀条⼀种通向“通⽤型⼈⼯智能”的道路,
曾经科幻故事⾥的Jarvis,moss好像真的有了那么⼀点可能。⽽这才是7年前,我踏⼊这
个⾏业所憧憬的东⻄啊。
可能你对我的震撼有点⽆法理解,我接下来会讲明⽩他的技术原理,带你慢慢感知这项技
术的厉害之处。

⼆、ChatGPT原理

⾸先,我们要弄明⽩,NLP任务(⾃然语⾔处理,AI的⼀个技术领域,即⽂本类的AI任
务)的核⼼逻辑是⼀个“猜概率”的游戏。
⽐如说,“我今天被我⽼板___”,经过⼤量的数据训练后,AI预测空格出会出现的最⾼概
率的词是“CPU了”,那么CPU就会被填到这个空格中,从⽽答案产⽣——“我今天被我⽼
板CPU了”。
虽然⾮常不可思议,但事实就是这样,现阶段所有的NLP任务,都不意味着机器真正理解
这个世界,他只是在玩⽂字游戏,进⾏⼀次⼜⼀次的概率解谜,本质上和我们玩报纸上的
填字游戏是⼀个逻辑。只是我们靠知识和智慧,AI靠概率计算。
⽽在⽬前的“猜概率”游戏环境下,基于⼤型语⾔模型(LLM,Large Language Model)演
进出了最主流的两个⽅向,即Bert和GPT。
其中BERT是之前最流⾏的⽅向,⼏乎统治了所有NLP领域,并在⾃然语⾔理解类任务中
发挥出⾊(例如⽂本分类,情感倾向判断等)。
⽽GPT⽅向则较为薄弱,最知名的玩家就是OpenAI了,事实上在GPT3.0发布前,GPT⽅
向⼀直是弱于BERT的(GPT3.0是ChatGPT背后模型GPT3.5的前⾝)。
接下来我们详细说说BERT和GPT两者之间的差别。
BERT:双向 预训练语⾔模型+fine-tuning(微调)
GPT:⾃回归 预训练语⾔模型+Prompting(指⽰/提⽰)
每个字都认识,连到⼀起就不认识了是吗哈哈。没关系,接下来我们把这些术语逐个拆解
⼀遍就懂了。
1、什么是“预训练模型”?
我们通常认知⾥的AI,是针对具体任务进⾏训练。例如⼀个能分辨猫品种的Agent,需要
你提供A-缅因猫,B-豹猫这样的数据集给他,让它学习不同品种之间的特征差异,从⽽学
会分辨猫品种这项能⼒。
但⼤语⾔模型不是这样运作的,他是通过⼀个⼤⼀统模型先来认识这个世界。再带着对这
个世界的认知对具体领域进⾏降维打击。
在这⾥让我们先从从NLP领域的中间任务说起。像中⽂分词,词性标注,NER,句法分
析等NLP任务。他们本⾝⽆法直接应⽤,不产⽣⽤户价值,但这些任务⼜是NLP所依赖
的,所以称之为中间任务。
在以前,这些中间任务都是NLP领域必不可少的。但是随着⼤型语⾔模型的出现,这些中
间任务事实上已经逐步消亡。⽽⼤型语⾔模型其实就是标题中的“语⾔预训练模型”。
他的实现⽅式是将海量的⽂本语料,直接喂给模型进⾏学习,在这其中模型对词性、句法
的学习⾃然⽽然会沉淀在模型的参数当中。我们看到媒体对ChatGPT铺天盖地的宣传⾥
总是离不开这样⼀句话——在拥有3000亿单词的语料基础上预训练出的拥有1750亿参数
的模型。
这⾥⾯3000亿单词就是训练数据。⽽1750亿参数就是沉淀下来的AI对这个世界的理解,
其中⼀部分沉淀了Agent(代理、中间⼈)对各类语法、句法的学习(例如应该是两个馒
头,⽽不是⼆个馒头,这也是中间任务为什么消亡的原因)。⽽另外⼀部分参数参数则储
存了AI对于事实的认知(例如美国总统是拜登)。
也就是经过预训练出⼀个这样的⼤语⾔模型后,AI理解了⼈类对语⾔的使⽤技巧(句法、
语法、词性等),也理解了各种事实知识,甚⾄还懂得了代码编程,并最终在这样的⼀个
⼤语⾔模型的基础上,直接降维作⽤于垂直领域的应⽤(例如闲聊对话,代码⽣成,⽂章
⽣成等)。
⽽BERT和GPT两者都是基于⼤语⾔模型的,他们在这⼀点上是相同的。他们的不同在于
双向/⾃回归,fine-tuning/Prompting这两个维度,我们接下来会重点弄明⽩这四个术语。
2、猜字谜的两种⽅式,BERT、GPT
BERT 和 GPT 都是基于 Transformer ⽹络架构和预训练语⾔模型的思想⽽提出的。
它们都可以在不同语⾔任务上达到最先进的⽔平。BERT 和 GPT 展⽰了预训练语⾔模型
对于⾃然语⾔理解和⽣成任务的巨⼤潜⼒,在诸多任务中取得了突破性进展。
BERT,全称为 Bidirectional Encoder Representations from Transformers,是由 Google
AI Language 团队在 2018 年提出的预训练语⾔模型。它主要⽤于⾃然语⾔理解,具体应
⽤如下:问答系统、句⼦相似度⽐较、⽂本分类、情感分析、命名实体识别等。BERT 的
训练过程分为预训练和微调两部分。预训练是 BERT 模型的基础部分,它包括使⽤⼤量
的⽂本来训练语⾔模型。微调过程是在预训练模型的基础上,使⽤更⼩的标记数据来调整
模型参数。
BERT是“双向”预训练法,是指这个模型在“猜概率的时候”,他是两个⽅向的信息利⽤起
来同时猜测。例如“我__20号回家”,他在预测的时候,是同时利⽤“我”+“20号回家”两端的
信息来预测空格中的词可能为“打算”。有点像我们做英⽂的完形填空,通常都是结合空格
两端的信息来猜测空格内应该是哪个单词。
GPT(Generative Pre-trained Transformer)则是由 OpenAI 研究团队在 2018 年提出的
⼀种语⾔模型。它能够完成各种⾃然语⾔处理任务,在⽂本⽣成⽅⾯表现尤为优秀,可以
⽣成各种类型的⽂本,如⽂章、诗歌、对话等。其主要具体应⽤如下:⽂本⽣成、⽂本⾃
动完成、语⾔翻译、对话⽣成、摘要⽣成等。
⽽GPT使⽤的是“⾃回归”预训练法,就是猜概率的时候从左往右做预测,不会利⽤⽂本中
右侧的内容,和BERT相反。这就有点像我们写作⽂的时候,我们肯定是⼀边写⼀边想。
BERT 和 GPT 的主要区别在于它们所采⽤的预训练⽅法不同。BERT 是使⽤双向的预训
练⽅法,即同时预测⽂本中的上下⽂信息,⽽ GPT 是使⽤单向的⾃回归预训练⽅法,即
从前到后⽣成下⼀个单词或句⼦。这意味着 BERT 可以更好地处理需要理解整个句⼦或
段落的任务,⽽ GPT 则更适合⽣成下⼀个单词或句⼦,两者基本理念的区别导致BERT
在之前更擅⻓⾃然语⾔理解类任务,⽽GPT更擅⻓⾃然语⾔⽣成类任务(例如聊天、写
作⽂)。——注意,我说的是之前,后⾯的章节我会介绍现在的情况发⽣了什么变化。
BERT和GPT各⾃优缺点:
BERT优点:性能优越,⼴泛应⽤于NLP下游任务。缺点:⽆法直接⽣成⻓⽂本。
GPT优点:语⾔⽣成和理解能⼒强,可⽣成⻓连贯⽂本。缺点:性能不及BERT,表现不太稳
定。
BER Trepresents语义信息更加丰富,是⽬前最优秀的语⾔表⽰模型。但⽣成能⼒受限。
GPT⽣成效果更⾃然,语义和语法更加连贯,但对语义理解仍略显不⾜,对 DOMAIN 敏感度
⾼。
BERT和GPT各有优缺点,实际应⽤中通常会根据具体任务选择使⽤BERT还是GPT,亦或是
将⼆者结合,发挥各⾃的优势,达到最佳效果。

3、微调 vs 提⽰(咒语)

假设现在预训练好的⼤模型要针对具体领域⼯作了,他被安排成为⼀名鉴⻩师,要分辨⽂
章到底有没有在搞⻩⾊。那么BERT和GPT的区别在哪⾥呢?
BERT:fine-tuning(微调)。微调是指模型要做某个专业领域任务时,需要收集相关的
专业领域数据,做模型的⼩幅调整,更新相关参数。
例如,我收集⼀⼤堆标注数据,A-是⻩⾊,B-没有搞⻩⾊,然后喂给模型进⾏训练,调整
他的参数。经过⼀段时间的针对性学习后,模型对于分辨你们是否搞⻩⾊的能⼒更出⾊
了。这就是fine-tuning,⼆次学习微调。
GPT:Prompting。prompt是指当模型要做某个专业领域的任务时,我提供给他⼀些⽰
例、或者引导。但不⽤更新模型参数,AI只是看看。
例如,我提供给AI模型10张⻩⾊图⽚,告诉他这些是搞⻩⾊的。模型看⼀下,效果就提
升了。⼤家可能会说,这不就是fine-tuning吗?不是⼀样要额外给⼀些标注数据吗?
两者最⼤的区别就是:这种模式下,模型的参数不会做任何变化升级,这些数据就好像仅
仅是给AI看了⼀眼——嘿,兄弟,参考下这个,但是别往⼼⾥去。
不可思议吧,但他成功了!⽽更令⼈疯狂的是,到⽬前为⽌,关于prompt明明没有对参
数产⽣任何影响,但确实⼜明显提升了任务的效果,还是⼀个未解之谜。暂时⽽⾔⼤家就
像程序员对待bug⼀样——I don’t know why , but it work lol.
这种Prompt其实就是ICT(in-Context Learning),或者你也可以称为Few shot
Promot,⽤⼤⽩话说就是“给你⼀点⼩提⽰”。
同时还有另外⼀种Promot,称之为Zero shot Promot。ChatGPT就是Zero shot promot模
式,⽬前⼀般称之为instruct了。
这种模式下⽤户直接⽤⼈类的语⾔下达命令,例如“给我写⾸诗”,“给我做个请教条”,但
是你可以在命令的过程中⽤⼀些⼈类语⾔增强AI的效果,例如“在输出答案之前,你先每
⼀步都想⼀想”。就只是增加这样⼀句话,AI的答案效果就会明显提升。
你可能会问这是什么魔法咒语?!
有⼀个⽐较靠谱的猜测是这句话可能让AI回想起了学习的资料中那些推理知识好像前⾯都
会有这句话。
然后这⼀切莫名激活起了他死去的记忆,不⾃觉开始仿造那些严密的推理过程中⼀步步推
导。⽽这些推导会将⼀个复杂问题分解成若⼲⼦问题,AI因为对这些⼦问题的推导,从⽽
导致最终答案效果提升。
综上对⽐下来,你会发现好像GPT这种模式⽐起BERT模式更符合我们对⼈⼯智能的想
象:通过海量的知识成⻓起来,然后经过稍微引导(Prompt),他就能具备不同领域的
强⼤能⼒。

最后总结⼀下,ChatGPT背后的GPT模型是什么?

在⼀个超⼤语料基础上预训练出的⼤语⾔模型(LLM),采⽤从左到右进⾏填字概率预
测的⾃回归语⾔模型,并基于prompting(提⽰)来适应不同领域的任务。
如果只基于上⾯的描述,你可能⼤概弄懂了他背后的原理,但是对于为什么他这么⽜逼,
你仍然⽆法理解。没关系,我们接着进⼊第4节

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

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

相关文章

libdrm全解析四十 —— 源码全解析(37)

接前一篇文章:libdrm全解析三十九 —— 源码全解析(36) 本文参考以下博文: DRM 驱动程序开发(VKMS) 特此致谢! 前一篇文章讲解完了资源的释放流程中的munmap()和drmIoctl(DRM_IOCTL_MODE_DEST…

配置环境变量的作用

配置环境变量的作用 一般运行过程:寻找QQ.exe所在的目录,输入QQ.exe配置环境变量:把QQ所在的路径配给操作系统Path, 在任何路径下都能运行QQ.exe 举例: 定义变量:SCALA_HOME SCALA_HOME、JAVA_HOME 等这…

【论文精读】Learning Transferable Visual Models From Natural Language Supervision

Learning Transferable Visual Models From Natural Language Supervision 前言Abstract1. Introduction and Motivating Work2. Approach2.1. Creating a Sufficiently Large Dataset2.2. Selecting an Efficient Pre-Training Method2.3. Choosing and Scaling a Model2.4. P…

基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)

前言:本文为手把手教学ADC采样及各式滤波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学,通过各式常见滤波的实验结果进行分析对比,搭配VOFA工具直观的展示滤波效果。ADC与滤波算法都是嵌入式较为…

第十六章 ObjectScript - 日期和时间值

文章目录 第十六章 ObjectScript - 日期和时间值日期和时间值当地时间UTC Time日期和时间转换$H 格式的详细信息 第十六章 ObjectScript - 日期和时间值 日期和时间值 当地时间 要访问当前进程的日期和时间,可以使用 $HOROLOG 特殊变量。因此,在许多 …

【FreeRTOS】信号量的相关函数使用及示例解释

FreeRTOS中的信号量是一种用于任务间同步的机制。它可以用来实现任务之间的互斥访问共享资源或者等待某个事件发生。 文章目录 信号量类型1. 二进制信号量(Binary Semaphore):2. 计数信号量(Counting Semaphore)&…

python in excel 如何尝鲜 有手就行

众所周知,微软在8月下旬放出消息python已入驻excel,可到底怎么实现呢。 今天我就将发布python in excel的保姆级教程,开始吧! 获取office 365 账号 首先我们要有微软office365 这时候需要再万能的某宝去找一个账号,…

Android JNI系列详解之ndk-build工具的使用

一、Android项目中使用ndk-build工具编译库文件 之前介绍过CMake编译工具的使用,今天介绍一种ndk自带的编译工具ndk-build的使用。 ndk-build目前主要有两种配置使用方式: 如上图所示,第一种方式是Android.mkApplication.mkgradle的方式生成…

5.Redis-string

string 字符串 字符串类型是 Redis 最基础的数据类型,关于字符串需要特别注意: 1.⾸先Redis中所有 key 的类型都是字符串类型,⽽且其他⼏种数据结构也都是在字符串类似基础上构建的,例如 list 和 set 的元素类型是字符串类型。 2…

Web_单一视频文件mp4转换为m3u分段ts文件实现边下边播

一、下载ffmpeg: Builds - CODEX FFMPEG @ gyan.dev 二、转换视频文件: 先解压缩,会看到如下结构: 进入bin目录,把需要转换的视频文件复制过来,同时新建一个文件夹用来存放转换后的文件,然后按住Shift键同时单击鼠标右键,选择打开Powershell窗口: 输入以下命令(根据…

【管理运筹学】第 7 章 | 图与网络分析(1,图论背景以及基本概念、术语)

文章目录 引言一、图与网络的基本知识1.1 图与网络的基本概念1.1.1 图的定义1.1.2 图中相关术语1.1.3 一些特殊图类1.1.4 图的运算 写在最后 引言 按照正常进度应该学习动态规划了,但我想换换口味,而且动态规划听说也有一定难度,还不一定会考…

UE5- c++ websocket客户端写法

# 实现目标 ue5 c 实现socket客户端,读取服务端数据,并进行解析 #实现步骤 {projectName}.Build.cs里增加 "WebSockets","JsonUtilities", "Json"配置信息,最终输出如下: using UnrealBuildTool;…

IDEA 快捷键

方法参数顺序快速调整 参数顺序调整 交换参数位置 参数交换位置 编码过程中经常碰到函数调用的参数顺序需要调整的情况。 比如单元测试中,期望和实际值得参数顺序反了,就可以选中参数后或者光标放到要调整的参数位置,然后用 CTRL SHIFTA…

SpringBatch chunk详解

目录 一、Chunk基本概念 1. Chunk的概念: 2. 配置Chunk: 3. Chunk的示例配置: 4. Chunk的执行流程:

maven报错:[ERROR] 不再支持源选项 7。请使用 8 或更高版本。

解决方案 pom.xml文件中增加maven编译的java.version jdk版本设置&#xff0c;以及maven.compiler.source 资源编译jdk版本设置和maven.compiler.target 资源构建jdk版本设置 JDK&#xff1a;6~8 一般都是1.6&#xff0c;1.7&#xff0c;1.8的写法。 <properties><…

前端面试基础面试题——4

1.谈谈你对 ES6 的理解 2.说说你对 promise 的了解 3.解构赋值及其原理 4.Vue常用的修饰符及使用的场景 5.vue 中 key 值的作用 6.什么是 vue 的计算属性&#xff1f; 7.watch的作用是什么 8.计算属性的缓存和方法调用的区别 9.响应式系统的基本原理 10.vue-loader …

基于科大讯飞AIGC创作平台,构建数字人虚拟主播

笔者为体验目前数字人虚拟主播创作视频的质量&#xff0c;特意制作了一段测试视频。 基于讯飞智作创建 总体感受&#xff0c;数字人虚拟主播具有成本低、可定制性强等优点&#xff0c;但是也存在缺乏人情味、技术限制和法律问题等缺点。因此&#xff0c;在使用数字人虚拟主播时…

opencv 提取选中区域内指定hsv颜色的水印

基于《QT 插件化图像算法研究平台》做的功能插件。提取选中区域内指定hsv颜色的水印。 《QT 插件化图像算法研究平台》有个HSV COLOR PICK功能&#xff0c;可以很直观、方便地分析出水印 的hsv颜色&#xff0c;比如, 蓝色&#xff1a;100,180,0,255,100,255。 然后利用 opencv …

QtConcurrent和QFuture的使用

在Qt中&#xff0c;有时候我们会遇到这样一种情况&#xff0c;需要执行一个很长时间的操作&#xff0c;这时候我们的主界面就会卡住。我们的通常做法就是把这个很长时间的操作扔到线程里去处理&#xff0c;可以使用标准库中的线程也可以使用QThread。 如果我们要在这个很长时间…

C# 跨线程访问窗体控件

在不加任何修饰的情况下&#xff0c;C# 默认不允许跨线程访问控件&#xff0c;实际在项目开发过程中&#xff0c;经常使用跨线程操作控件属性&#xff0c;需要设置相关属性才能正确使用&#xff0c;两种方法设置如下&#xff1a; 方法1&#xff1a;告诉编译器取消跨线程访问检…