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节
相关文章:
ChatGPT⼊门到精通(3):ChatGPT 原理
OpenAI在2022年11⽉份发布ChatGPT,强⼤的⽂字对话、创意写作能⼒,全球掀起了⼀ 波AI浪潮。本⽂对ChatGPT的技术原理、厉害之处、可能的落地⽅向等⽅⾯进⾏了全⾯ 的解析,看完后会对ChatGPT有更深⼊的了解。 ⼀、前⾔ 2022年11⽉30⽇&#x…...
nginx配置keepalive长连接
nginx之keepalive详解与其配置_keepalive_timeout_恒者走天下的博客-CSDN博客 为什么要有keepalive? 因为每次建立tcp都要建立三次握手,消耗时间较长,所以为了减少tcp建立连接需要的时间,就可以设置keep_alive长连接。 nginx中keep_alive对…...
Thread.enumerate方法
Thread.enumerate方法的作用是将当前线程所对应的的线程组包含的所有线程放入一个数组 参见源码注释 /*** Copies into the specified array every active thread in the current* threads thread group and its subgroups. This method simply* invokes the {@link java.lan…...
* 号靠近数据类型,和靠近变量名, 号靠近数据类型,和靠近变量名,有什么区别
文章目录 一、int* age 和 int *age,* 号靠近数据类型,和靠近变量名,有什么区别:1. int* age:2. int *age: 二、int& age 和 int &age,& 号靠近数据类型,和靠近变量名,有什么区别&a…...
为了做好农业,拼多多请来顶尖农业专家当独立董事
8月29日,拼多多发布截至6月30日的2023年第二季度业绩报告。财报显示,拼多多集团今年第二季度收入为523亿元,同比增长66%,远超市场预期。 财报发布的同时,拼多多还宣布,其董事会已聘任荷兰瓦赫宁根大学终身…...
Linux服务器安装部署MongoDB数据库 – 【无公网IP远程连接】
文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 前言 MongoDB是一个基于分布式文件存储的数据库。由 C 语言编写,旨在为 WEB 应用提供可扩展的高…...
Python+PIL+qrcode实现二维码自由—普通二维码+彩色二维码+logo二维码+动态二维码(附完整代码)
有时候我们需要自己制作一个二维码,然后进行打印下来,或者说在二维码中提前写上一段话比如搞笑的话,然后印在衣服上,然后穿出去玩!的🤣 那么今天我们分享一下制作二维码的几种方式: 哎&#x…...
【Spring Data JPA】JPA 常用查询函数
文章目录 前言函数查询表格 前言 函数查询的表格参考了官网的 2.7.3 版本的文档,JPA 的这种函数式查询方法改动不大,如果想知道更多的复杂查询,可以参考这篇文章 【Spring Data JPA】基于 JpaRepository 增删改查 官方文档地址 Spring Data…...
Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数
我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 在看这篇帖子前,请先看我的另一篇帖子《Visual Studio 2022的MFC框架——应用程序向导》。 当程序调用了CWinApp类的构造…...
【网络】多路转接——poll | epoll
🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 书接上文五种IO模型 | select。 poll | epoll 🍧poll🧁认识接口🧁简…...
音视频 ffmpeg命令视频录制(Windows)
先安装dshow软件 Screen Capturer Recorder, 项目地址:https://sourceforge.net/projects/screencapturer/files/ 然后查看可用设备名字:ffmpeg -list_devices true -f dshow -i dummy [dshow 0509d6c0] DirectShow video devices (some ma…...
【拾枝杂谈】从游戏开发的角度来谈谈原神4.0更新
君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,结合最近的学习内容和以后自己的目标,今天又开了杂谈这个新坑,分享一下我在学习游戏开发的成长和自己的游戏理解,当然现在还是一枚…...
QT设置mainwindow的窗口title
QT设置mainwindow的窗口title 在QT程序中,通常会有**aaaa-[bbbbbbb]**这种形式的title,对于刚上手qt的程序员同学,可能会简单的以为修改这种title,就是使用setWindowTitle这个接口,其实只对了一半,这种形式…...
SaaS多租户系统架构设计
前言:多租户是SaaS(Software-as-a-Service)下的一个概念,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作的实际需求,通过互联网…...
Java自定义捕获异常
需求分析 ElectricalCustomerVO electricalCustomerVO new ElectricalCustomerVO(); electricalCustomerVO.setElcNumber(chatRecordsLog.getDeviceNumber()); List<ElectricalCustomerVO> electricalCustomerlist electricalCustomerMapper.selectElectricalCustomer…...
力扣--数组类题目27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 示例 1: 输入:nums [3,2,2,3], val 3 输出:2, nums [2,2] 解释:函数应该返回新的长度 2, 并且 n…...
实际并行workers数量不等于postgresql.conf中设置的max_parallel_workers_per_gather数量
1 前言 本文件的源码来自PostgreSQL 14.5,其它版本略有不同 PostgreSQL的并行workers是由compute_parallel_worker函数决定的,compute_parallel_worker是估算扫描所需的并行工作线程数,并不是您在postgresql.conf中设置的max_parallel_work…...
java定位问题工具
一、使用 JDK 自带工具查看 JVM 情况 在我的机器上运行 ls 命令,可以看到 JDK 8 提供了非常多的工具或程序: 接下来,我会与你介绍些常用的监控工具。你也可以先通过下面这张图了解下各种工具的基本作用: 为了测试这些工具&#x…...
【Java】基础入门 (十六)--- 异常
1.异常 1.1 异常概述 异常是指程序在运行过程中出现的非正常的情况,如用户输入错误、除数为零、文件不存在、数组下标越界等。由于异常情况再程序运行过程中是难以避免的,一个良好的应用程序除了满足基本功能要求外,还应具备预见并处理可能发…...
[javaWeb]Socket网络编程
网络编程:写一个应用程序,让这个程序可以使用网络通信。这里就需要调用传输层提供的 api。 Socket套接字 传输层提供协议,主要是两个: UDP和TCP 提供了两套不同的 api,这api也叫做socket api。 UDP和 TCP 特点对比: UDP: 无连…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
