ChatGPT 中,G、P、T 分别是什么意思?
流行的技术名词按发音难度排序,ChatGPT 肯定排在前面。
到底它为什么叫做 ChatGPT 呢?
先说 GPT:Generative Pre-Training Transformer
Generative 生成式
虽然我们已经习惯了话唠的机器人絮絮叨叨的说个不停,但这只是众多的人工智能模型的一种方式。比如还有识别类的(Congnition):人脸识别,车牌识别这些,还有语音识别,文字识别各种识别任务。(在提到模型的时候,也常常被叫做判别模型,discriminative)。Generative 这个大的种类里面有几个小分支,DALLE 的画图的用的是对抗网络方式 GAN (这个晚些可以分析),现在最火的Stable Diffusion, MidJourney 走向了另外一个分支,叫做 Difusion,而 ChatGPT 又是一个分支,就是转换器 Transformer。
而 Transformer Generative 的语言模型的核心,通俗的说就是「顺口溜」。
当看了足够多的文本以后,发现有一些语言模式是反复出现的。它之所以可以准确的填补「锄禾日当__ 」的空格,不是因为它在自己的大脑子里面重构了一副农民劳动的场景,仅仅是不过脑子,顺口溜出来的。
你问它: 3457 * 43216 = ,它回答 149575912 (这是错的。正确结果是 149397712)。之所以结果的 2 是对的,仅仅因为它读了太多的文字资料以后,隐约感觉到
7 结尾的文字,乘号,6 结尾的文字,和 2 结尾的文字比较「押韵」
从语感上比较像一首诗,所以它就学会了这样的文字,而不是学会了计算。
生成式模型努力解决的问题,就是给定一些字,预测如果是人类会写什么字。
在 BERT 那个年代,为了训练,大家常常把一句话中随机几个单词遮起来,让计算机用现有的模型预测那几个单词,如果预测准了,就继续加强,如果预测错了,就调整模型,直到上百万上亿次训练之后越来越准。只不过 ChatGPT 的 Generative 的部分,不仅仅把文字,还把上下文、intention(意图)也放进去做训练和预测。
Pre-Training 预训练
以前很多的人工智能模型都是为了一个目标训练的。比如给我 1000 张猫的照片,我就很容易的可以训练出来一个模型,判断一个图片是有猫还是没有猫。这些都是专用的模型。
而 Pre-Training 模型不是为了特定的目标训练,而是预先训练一个通用的模型。如果我有特定的需求,我可以在这个基础上进行第二次训练,基于原来已经预训练的模型,进行微调(Fine- Tuning)。
这事儿就像家里请了个阿姨,她已经被劳务公司预训练了整理家务的知识,在此之前已经被小学老师预训练了中文对话,到了我家里面我只要稍微 fine tune 一些我家里特定的要求就好了,而不需要给我一个「空白」的人,让我从教汉语开始把她彻底教一遍才能让她干活。
ChatGPT 的预训练就是给了我们所有人(尤其是创业者,程序员)一个预先训练好的模型。这个模型里面语言是强项,它提供的内容无论多么的胡说八道,至少我们必须承认它的行文通畅程度无可挑剔。这就是他 pre-training 的部分,而回答的内容部分,正是我们需要 fine tuning 的。我们不能买了个 Apache 服务器回来,不灌内容,就说他输出的内容不够呀。
Transformer 转换器
变电器就是一种 transformer:220伏电进,12伏出。
语言的转换器就是把语言的序列作为输入,然后用一个叫做编码器 encoder 的东西变成数字的表现(比如 GPT 就用 1536 个浮点数(也叫 1536 维向量)表示任何的单词,或者句子,段落,篇章等),然后经过转化,变成一串新的序列,最后再用 decoder 把它输出。这个转换器,是这个自然语言处理的核心。
比如如果给 ChatGPT 输入「Apple」这个词,它给你返回
[ 0.0077999732, -0.02301609, -0.007416143, -0.027813964, -0.0045648348, 0.012954261,.....0.021905724, -0.012022103, -0.013550568, -0.01565478, 0.006107009]
这 1536 个浮点数字来表示 Apple(其中一个或着多个维度的组合表达了「甜」的含义,另外一堆表达了「圆」的含义,还有一大堆共同表达了「红」等等属性组合,至于具体哪些表达了这些,不得而知)
然后这堆数字,再交给 decoder,并且限定中文的话,它会解码成为「苹果」,限定西班牙语的话,它会解码成「manzana」,限定为 emoji 的话,就输出「」。总之,通过编码,转换,解码,它就完成了从 Apple 到目标输出语言的转化。
ChatGPT 所做的事情远远多于翻译。但核心上,它就是把一个语言序列,转换为了另外一堆语言序列,这个任务完成得如此的好,以至于让人产生了它有思想的错觉。
GPT 生成式预训练转化器
把上面三段话加在一起,GPT 就是
一个预先训练好的,用生成的方式,把输入文字转化成输出文字的翻译
除了这个以外的各种能力和各种定义,大多数是这个翻译官的应用场景而不是它本身。
ChatGPT 是啥?
刚才解释了 GPT,那 ChatGPT 呢?
OpenAI 用这个名字描述他们正在做的这个模型,历史的版本包括 GPT-1, GPT-2(这个模型是开源的),GPT-3(这个就是传说中 175B 参数的大模型)。而这些都是生成式的,也就是给的 prompt(提示词),它负责补全(completion)。但是这个东西用于聊天不是很好用,因为本来就不是为聊天这个场景准备的。
所以在 GPT-3 基础上发展出了下一代模型 InstructGPT,专注于让这个模型可以听懂指令。在上面继续发展出了 ChatGPT,就是对于对话场景,比如多轮对话,还有一些安全边界设定等,进行了加强。但这个模型是基于 GPT-3 上面的,可以说严格意义是 GPT-3 模型上面的一个微调(Fine Tuning)的产物。
希望这样梳理可以帮助大家了解这个奇怪的名字背后的思考。从这个角度来说,这是少有的几个准确的描述了它是什么的一个名字(和 Web3 这个名字产生鲜明对比)
欢迎转发给对 ChatGPT 感兴趣的朋友。欢迎专业人士指正(我其实不懂自然语言处理里面的细节)
原文链接:https://mp.weixin.qq.com/s/vXoYeA7w6l_WiKmDHogdTA
ChatGPT 中,G、P、T 分别是什么意思?的更多相关文章
- linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其它g++版本号未知)
一.描写叙述 眼下已经linux64位系统中g++4.4.7下发现了该bug.其它的版本号还未測试. 经測试,假设传入wcsncpy函数第一个參数(即目标缓冲区)的地址不能被4整除的话就必然会发生段错 ...
- Js中/g \s 什么意思
Js中/g \s 什么意思 js里elm.value.replace(/[\s ]+/g, ''),是什么意思 比如/[\s]是什么意思 elm是表单吧.将elm表单的值中的空白字符替换 replac ...
- MS Chart 折线图——去除时间中的时、分、秒,按天统计【转】
MS Chart 折线图——去除时间中的时.分.秒,按天统计 private void Form2_Load(object sender, EventArgs e){ str ...
- PTA 05-树7 堆中的路径 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径 (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ...
- c#中分布方法和分部类
将同一个类编写在多个文件中,类的各个文件名不同,类名相同,类名前加partial关键字,这种类型叫分部类. 在分部类中可以建立分部方法,方法名前加关键字partial,分部方法只能将方法分成两部分,即 ...
- 正则表达式中/g的含义
关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?” 为了解答“正则表达式(/[^0-9]/g,'')中的" ...
- EFI主板和GPT分区表安装系统以及转换GPT分区表的方法
现在硬盘越来越大,而原来的MBR分区方式,超过2T的硬盘就会识别不全,只有使用GPT的方式才可以,但是GPT如果用原来的BIOS是无法引导装系统了,不过如果你的主板支持EFI,那么可以用GPT+EFI ...
- IP协议和网络传输中的封装与分用。
关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析. 1.四层模型中的最下层是链 ...
- d3.js svg中 g 标签问题一览
svg 中的g标签, 算是比较特殊 1 没有x y属性 2 没有width height 属性 3 不能fill 4 .... g标签基本只管分组问题, 其他功能一概不提供 要解决这些问题, 直接在g ...
- Flask中g对象,以及g,session,flash之间的区别
一.g对象的使用 专门用来存储用户信息的g对象,g的全称的为global g对象在一次请求中的所有的代码的地方,都是可以使用的 g对象的使用: 设置:g.变量名= 变量值 获取:g.name 注意:g ...
随机推荐
- Mindjet MindManager 拖动页面
常规的软件是按住空格建+鼠标左健 进行拖放,但 MindManager 不支持,如何对Mindjet MindManager 拖动页面? 按住 鼠标右键 直接拖拽 配合 Ctrl+滚轮 放大缩小,一起 ...
- VS 2019 目标框架中看不到 Net Core 3.X
VS 2019 目标框架中没有 .NET Core 3.X..Net 5.0 https://dotnet.microsoft.com/download/dotnet-core/3.0 Visual ...
- Mycat 学习笔记
概述 1. Mycat 是什么? Mycat 是数据库中间件,连接 Java 应用程序和数据库,它的作用如下: 读写分离 数据分片:垂直拆分(分库).水平拆分(分表).垂直+水平拆分(分库分表) 多数 ...
- 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~!
全球最大同性交友网站 GitHub 是所有程序员的最爱,但是国内开发者访问Github 很不稳定,克隆开源项目也慢的离谱,常常clone失败. 之前大家或绕道码云(GitLab)或修改host文件,但 ...
- 【C++】使用 curl 库配置 HTTP 的 Post/Get 请求响应数据(封装一个简单类)
2023.7.18 Update: [LibCurl]C++使用libcurl实现HTTP POST和GET 要想使用 LibCURL 库,首先需配置 CURL 库 参考链接:[C++开源库]Wind ...
- 2023 中国 Serverless 用户调查,邀您填写!
当前云计算已成为数字时代的基础设施,支撑众多企业进行数字化转型升级.随着企业上云的范围更加广泛,国内云计算正在迈向云原生时代.Serverless技术因其以应用为中心.屏蔽底层复杂逻辑,灵活扩展,按需 ...
- 基于 Serverless+OSS 分分钟实现图片秒变素描
简介: 在阿里云Serverless函数计算服务中部署普通图片转素描图函数服务,实现将批量上传到指定OSS桶内的图片自动转换为素描图并保存到另一个OSS桶内 场景介绍 小明接到学校老师安排的任务,需要 ...
- vue配置proxy实现跨域
- zzuli 1023
java 读入单个字符 import java.util.Scanner; public class Main{ public static void main(String args[]){ Sca ...
- poj 3246 简单线段树
线段树还真有点难写... #include <iostream> #include <cstdio> #include <cstring> #include < ...