流行的技术名词按发音难度排序,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 分别是什么意思?的更多相关文章

  1. linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其它g++版本号未知)

    一.描写叙述 眼下已经linux64位系统中g++4.4.7下发现了该bug.其它的版本号还未測试. 经測试,假设传入wcsncpy函数第一个參数(即目标缓冲区)的地址不能被4整除的话就必然会发生段错 ...

  2. Js中/g \s 什么意思

    Js中/g \s 什么意思 js里elm.value.replace(/[\s ]+/g, ''),是什么意思 比如/[\s]是什么意思 elm是表单吧.将elm表单的值中的空白字符替换 replac ...

  3. MS Chart 折线图——去除时间中的时、分、秒,按天统计【转】

    MS Chart 折线图——去除时间中的时.分.秒,按天统计   private void Form2_Load(object sender, EventArgs e){            str ...

  4. PTA 05-树7 堆中的路径 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径   (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ...

  5. c#中分布方法和分部类

    将同一个类编写在多个文件中,类的各个文件名不同,类名相同,类名前加partial关键字,这种类型叫分部类. 在分部类中可以建立分部方法,方法名前加关键字partial,分部方法只能将方法分成两部分,即 ...

  6. 正则表达式中/g的含义

    关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”   为了解答“正则表达式(/[^0-9]/g,'')中的" ...

  7. E​F​I​主​板​和​G​P​T​分​区​表​安​装​系​统以及转换GPT分区表的方法

    现在硬盘越来越大,而原来的MBR分区方式,超过2T的硬盘就会识别不全,只有使用GPT的方式才可以,但是GPT如果用原来的BIOS是无法引导装系统了,不过如果你的主板支持EFI,那么可以用GPT+EFI ...

  8. IP协议和网络传输中的封装与分用。

    关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析. 1.四层模型中的最下层是链 ...

  9. d3.js svg中 g 标签问题一览

    svg 中的g标签, 算是比较特殊 1 没有x y属性 2 没有width height 属性 3 不能fill 4 .... g标签基本只管分组问题, 其他功能一概不提供 要解决这些问题, 直接在g ...

  10. Flask中g对象,以及g,session,flash之间的区别

    一.g对象的使用 专门用来存储用户信息的g对象,g的全称的为global g对象在一次请求中的所有的代码的地方,都是可以使用的 g对象的使用: 设置:g.变量名= 变量值 获取:g.name 注意:g ...

随机推荐

  1. 项目基于 Solon 进行构建,一般都有到哪些东西?

    例如: 每个微服务工程是采用Solon开发. 基于Solon Cloud 实现微服务的配置.服务注册.事件总线. 其中,最重要的是实现了Solon Rpc接口与RESTful接口均可以注册至任何注册服 ...

  2. 如何删除PPT中工具栏口袋动画

    口袋动画官网无法打开 http://www.papocket.com/ 插件无法使用 卸载 在[程序和功能]中卸载后,打开PPT,菜单还是存在 选项--加载项,点击以p开头的一串代码(com加载项), ...

  3. Python 将省、市 json 替换 成拼音

    1.将 city_code_cn.json 中的省.市.区,翻译成英文,或直接替换去掉省.市 如:苏州市  -> 苏州 转成拼音后就变成 Suzhou,否则就会转成 Suzhoushi 怪怪的 ...

  4. PMP 如何获取 PDU PMP 证书续证

    PMP 如何获取 PDU. PMP 证书续证  需要准备一张带支付美元的信用卡 打开官网,登录: https://ccrs.pmi.org/   内容随便填 ,可以到 https://pmichina ...

  5. JupyterLab 桌面版 !!!

    JupyterLab 是广受欢迎的 Jupyter Notebook「新」界面.它是一个交互式的开发环境,可用于 notebook.代码或数据,因此它的扩展性非常强. 用户可以使用它编写 notebo ...

  6. 浅谈splice( )与slice( )

    1.splice( ) 概念:splice( )用于修改原始数组,它可以删除.插入.替换数组的元素,并返回被删除的元素组成的新数组. 语法:splice(start,deleteCount,item1 ...

  7. 如临现场的视觉感染力,NBA决赛直播还能这样看?

    在6月16日结束的NBA总决赛中,勇士4-2击败凯尔特人,问鼎总冠军!今年的NBA总决赛吸引了众多关注,互联网各大平台的赛事直播气氛也异常热烈. 平台如何既能展现专业的赛事解说,又能与球迷观众深入互动 ...

  8. [完整]流程解决Vue3项目搭建步骤

    Vue3项目完整搭建步骤 一. 使用vite创建vue3项目 npm init vue@latest 或者npm create vite@latest进行初始化项目并创建项目名称code,进入code ...

  9. <vue 基础知识 2、插值语法> v-once,v-html,v-text,v-pre,v-cloak

    代码结构 一.     Mustache 1.效果 展示如何将数据展示在页面上 2.代码 01-Mustache.html <!DOCTYPE html> <html lang=&q ...

  10. vue-devtools调试工具