从0到1理解ChatGPT原理
目录
写在前面
1.Tansformer架构模型
2.ChatGPT原理
3.提示学习与大模型能力的涌现
3.1提示学习
3.2上下文学习
3.3思维链
4.行业参考建议
4.1拥抱变化
4.2定位清晰
4.3合规可控
4.4经验沉淀
机械工业出版社京东自购链接
写在前面
2022年11月30日,ChatGPT模型问世后,立刻在全球范围内掀起了轩然大波。无论AI从业者还是非从业者,都在热议ChatGPT极具冲击力的交互体验和惊人的生成内容。这使得广大群众重新认识到人工智能的潜力和价值。对于AI从业者来说,ChatGPT模型成为一种思路的扩充,大模型不再是刷榜的玩具,所有人都认识到高质量数据的重要性,并坚信“有多少人工,就会有多少智能”。
ChatGPT模型效果过于优秀,在许多任务上,即使是零样本或少样本数据也可以达到SOTA效果,使得很多人转向大模型的研究。
不仅Google提出了对标ChatGPT的Bard模型,国内涌现出了许多中文大模型,如百度的“文心一言”、阿里的“通义千问”、商汤的“日日新”、知乎的“知海图AI”、清华智谱的“ChatGLM”、复旦的“MOSS”、Meta的“Llama1&Llama2”等等。
Alpaca模型问世之后,证明了70亿参数量的模型虽然达不到ChatGPT的效果,但已经极大程度上降低了大模型的算力成本,使得普通用户和一般企业也可以使用大模型。之前一直强调的数据问题,可以通过GPT-3.5或GPT-4接口来获取数据,并且数据质量也相当高。如果只需要基本的效果模型,数据是否再次精标已经不是那么重要了(当然,要获得更好的效果,则需要更精准的数据)。
1.Tansformer架构模型
预训练语言模型的本质是通过从海量数据中学到语言的通用表达,使得在下游子任务中可以获得更优异的结果。随着模型参数不断增加,很多预训练语言模型又被称为大型语言模型(Large Language Model,LLM)。不同人对于“大”的定义不同,很难说多少参数量的模型是大型语言模型,通常并不强行区分预训练语言模型和大型语言模型之间的差别。
图注:来自《Attention Is All You Need》
预训练语言模型根据底层模型网络结构,一般分为仅Encoder架构模型、仅Decoder架构模型和Encoder-Decoder架构模型。其中,仅Encoder架构模型包括但不限于BERT、RoBerta、Ernie、SpanBert、AlBert等;仅Decoder架构模型包括但不限于GPT、CPM、PaLM、OPT、Bloom、Llama等;Encoder-Decoder架构模型包括但不限于Mass、Bart、T5等。
图注:来自《Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond》
2.ChatGPT原理
ChatGPT训练的整体流程主要分为3个阶段,预训练与提示学习阶段,结果评价与奖励建模阶段以及强化学习自我进化阶段;3个阶段分工明确,实现了模型从模仿期、管教期、自主期的阶段转变。
图注:来自url:https://openai.com/blog/chatgpt
在第一阶段的模仿期,模型将重点放在学习各项指令型任务中,这个阶段的模型没有自我判别意识,更多的是模仿人工行为的过程,通过不断学习人类标注结果让其行为本身具有一定的智能型。然而仅仅是模仿往往会让机器的学习行为变成邯郸学步。
在第二阶段的管教期,优化内容发生了方向性转变,将重点从教育机器答案内容改变为教育机器答案的好坏。如果第一阶段,重点希望机器利用输入X,模仿学习输出Y',并力求让Y'与原先标注的Y保持一致。那么,在第二阶段,重点则希望多个模型在针对X输出多个结果(Y1,Y2,Y3,Y4)时,可以自行判断多个结果的优劣情况。
当模型具备一定的判断能力时,认为该模型已经完成第二阶段的学习,可以进入第三阶段——自主期。在自主期的模型,需要通过左右互博的方式完成自我进化,即一方面自动生成多个输出结果,另一方面判断不同结果的优劣程度,并基于不同输出的效果模型差异评估,优化改进自动生成过程的模型参数,进而完成模型的自我强化学习。
总结来说,也可以将ChatGPT的3个阶段比喻为人成长的3个阶段,模仿期的目的是“知天理”,管教期的目的是“辨是非”,自主期的目的是“格万物”。
3.提示学习与大模型能力的涌现
ChatGPT模型发布后,因其流畅的对话表达、极强的上下文存储、丰富的知识创作及其全面解决问题的能力而风靡全球,刷新了大众对人工智能的认知。提示学习(Prompt Learning)、上下文学习(In-Context Learning)、思维链(Chain of Thought,CoT)等概念也随之进入大众视野。市面上甚至出现了提示工程师这个职业,专门为指定任务编写提示模板。
提示学习被广大学者认为是自然语言处理在特征工程、深度学习、预训练+微调之后的第四范式。随着语言模型的参数不断增加,模型也涌现了上下文学习、思维链等能力,在不训练语言模型参数的前提下,仅通过几个演示示例就可以在很多自然语言处理任务上取得较好的成绩。
3.1提示学习
提示学习是在原始输入文本上附加额外的提示(Prompt)信息作为新的输入,将下游的预测任务转化为语言模型任务,并将语言模型的预测结果转化为原本下游任务的预测结果。
以情感分析任务为例,原始任务是根据给定输入文本“我爱中国”,判断该段文本的情感极性。提示学习则是在原始输入文本“我爱中国”上增加额外的提示模板,例如:“这句话的情感为{mask}。”得到新的输入文本“我爱中国。这句话的情感为{mask}。”然后利用语言模型的掩码语言模型任务,针对{mask}标记进行预测,再将其预测出的Token映射到情感极性标签上,最终实现情感极性预测。
3.2上下文学习
上下文学习可以看作提示学习的一种特殊情况,即演示示例看作提示学习中人工编写提示模板(离散型提示模板)的一部分,并且不进行模型参数的更新。
上下文学习的核心思想是通过类比来学习。对于一个情感分类任务来说,首先从已存在的情感分析样本库中抽取出部分演示示例,包含一些正向或负向的情感文本及对应标签;然后将其演示示例与待分析的情感文本进行拼接,送入到大型语言模型中;最终通过对演示示例的学习类比得出文本的情感极性。
图注:来自《A Survey on In-context Learning》
这种学习方法也更加贴近人类学习后进行决策过程,通过观察别人对某些事件的处理方法,当自己遇到相同或类似事件时,可以轻松地并很好地解决。
3.3思维链
大型语言模型横行的时代,它彻底改变了自然语言处理的模式。随着模型参数的增加,例如:情感分析、主题分类等系统-1任务(人类可以快速直观地完成的任务),即使是在少样本和零样本条件下均可以获得较好的效果。但对于系统-2任务(人类需要缓慢而深思熟虑的思考才能完成的任务),例如:逻辑推理、数学推理和常识推理等任务,即使模型参数增加到数千亿时,效果也并不理想,也就是简单地增加模型参数量并不能带来实质性的性能提升。
Google于2022年提出了思维链(Chain of thought,CoT)的概念,来提高大型语言模型执行各种推理任务的能力。思维链本质上是一种离散式提示模板,主旨是通过提示模板使得大型语言模型可以模仿人类思考的过程,给出逐步的推理依据,来推导出最终的答案,而每一步的推理依据组成的句子集合就是思维链的内容。
思维链其实是帮助大型语言模型将一个多步问题分解为多个可以被单独解答的中间步骤,而不是在一次向前传递中解决整个多跳问题。
图注:来自《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》
4.行业参考建议
4.1拥抱变化
与其他领域不同,AIGC领域是当前变化最迅速的领域之一。以2023年3月13日至2023年3月19日这一周为例,我们经历了清华发布ChatGLM 6B开源模型、openAI将GPT4接口发布、百度文心一言举办发布会、微软推出Office同ChatGPT相结合的全新产品Copilot等一系列重大事件。
这些事件都会影响行业研究方向,并引发更多思考,例如,下一步技术路线是基于开源模型,还是从头预训练新模型,参数量应该设计多少?Copilot已经做好,办公插件AIGC的应用开发者如何应对?
即便如此,仍建议从业者拥抱变化,快速调整策略,借助前沿资源,以加速实现自身任务。
4.2定位清晰
一定要明确自身细分赛道的目标,例如是做应用层还是底座优化层,是做C端市场还是B端市场,是做行业垂类应用还是通用工具软件。千万不要好高骛远,把握住风口,“切准蛋糕”。
定位清晰并不是指不撞南墙不回,更多的是明白自身目的及意义所在。
4.3合规可控
AIGC最大的问题在于输出的不可控性,如果无法解决这个问题,它的发展将面临很大的瓶颈,无法在B端和C端市场广泛使用。在产品设计过程中,需要关注如何融合规则引擎、强化奖惩机制以及适当的人工介入。从业者应重点关注AIGC生成内容所涉及的版权、道德和法律风险。
4.4经验沉淀
经验沉淀的目的是为了建立自身的壁垒。不要将所有的希望寄托于单个模型上,例如我们曾经将产品设计成纯文本格式,以便同ChatGPT无缝结合,但最新的GPT4已经支持多模态输入。我们不应气馁,而是要快速拥抱变化,并利用之前积累的经验(数据维度、Prompt维度、交互设计维度)快速完成产品升级,以更好地应对全新的场景和交互形态。
以上建议希望从业者加以参考。
虽然AIGC的浪潮下存在不少泡沫,但只要我们怀揣着拥抱变化的决心,始终明确我们要到达的远方,认真面对周围的风险危机,不断在实战中锻炼自身的能力,相信终有一天,会到达我们心中所向往的目的地。
本文内容摘编自《ChatGPT原理与实战:大型语言模型的算法技术和私有化》,经出版方授权发布。(ISBN:978-7-111-73303-4)
延伸阅读
《ChatGPT原理与实战:大型语言模型的算法、技术和私有化》
刘聪 杜振东 涂铭 沈盛宇 著
BAT资深AI专家和大模型技术专家撰写
MOSS系统负责人邱锡鹏等多位专家鼎力推荐
揭开ChatGPT神秘技术黑盒!
推荐语:
BAT资深AI专家和大模型技术专家撰写,MOSS系统负责人邱锡鹏等多位专家鼎力推荐!系统梳理并深入解析ChatGPT的核心技术、算法实现、工作原理、训练方法,提供大量代码及注解。它山之石,可以攻玉,不仅教你如何实现大模型的迁移和私有化,而且手把手教你零基础搭建自己专属的ChatGPT!
机械工业出版社京东自购链接
ChatGPT原理与实战:大型语言模型的算法、技术和私有化【图片 价格 品牌 评论】-京东
相关文章:

从0到1理解ChatGPT原理
目录 写在前面 1.Tansformer架构模型 2.ChatGPT原理 3.提示学习与大模型能力的涌现 3.1提示学习 3.2上下文学习 3.3思维链 4.行业参考建议 4.1拥抱变化 4.2定位清晰 4.3合规可控 4.4经验沉淀 机械工业出版社京东自购链接 写在前面 2022年11月30日,ChatG…...
如何解决 “Component cannot be used as a JSX component“
原因是react版本与types/react版本不一致导致的, 在tsconfig.json中加入以下代码,将依赖指向项目里的node_modules "paths": {"react": [ "./node_modules/types/react" ]}改完后代码大概是长这样的 {"compilerOptions": {..."…...

小程序自定义tabbar
前言 使用小程序默认的tabbar可以满足常规开发,但是满足不了个性化需求,如果想个性化开发就需要用到自定义tabbar,以下图为例子 一、在app.json配置 先按照以往默认的形式配置,如果中间的样式特殊则不需要配置 "tabBar": {&qu…...

分布式系统第五讲:分布式事务及实现方案
分布式系统第五讲:分布式事务及实现方案 事务是一个程序执行单元,里面的所有操作要么全部执行成功,要么全部执行失败。而分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本…...

算法通关村17关 | 透析跳跃游戏
1. 跳跃游戏 题目 LeetCode55 给定一个非负整数数组,最初位于数组的第一个位置,数组中的每个元素代表你再该位置可以跳跃的最大长度,判断你是否能够达到最后一个位置。 思路 如果当前位置元素如果是3,我们无需考虑是跳几步&#…...

ARM接口编程—RTC(exynos 4412平台)
RTC简介 RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电。 RTC内部原理 RTC寄存器 RTC控制寄存器 …...

数据分享|WEKA信贷违约预测报告:用决策树、随机森林、支持向量机SVM、朴素贝叶斯、逻辑回归...
完整报告链接:http://tecdat.cn/?p28579 作者:Nuo Liu 数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。近年来网络 P2P借贷发展形势迅猛,一方面普通用户可以更加灵活、便快捷地获得中小额度的贷…...
逆市而行:如何在市场恐慌时保持冷静并抓住机会?
市场中的恐慌和波动是投资者所不可避免的。当市场出现恐慌情绪时,很多投资者会盲目跟从大众,导致决策出现错误。然而,聪明的投资者懂得在恐慌中保持冷静,并将其视为抓住机会的时机。本文将分享一些在市场恐慌时保持冷静并抓住机会…...
SpringBoot项目在Linux上启动、停止脚本
文章目录 SpringBoot项目在Linux上启动、停止脚本1. 在项目jar包同一目录,创建脚本xxx.sh【注: 和项目Jar同一目录】2. xxx.sh脚本内容,实际项目使用,只需修改jar包的名称:xxxxxx.jar3. 给xxx.sh赋予执行权限4. xxx.sh脚本的使用 …...

基于32位单片机的感应灯解决方案
感应灯是一种常见照明灯,提起感应灯,相信大家并不陌生, 它在一些公共场所、卫生间或者走廊等场所,使用的较为广泛,同时它使用起来也较为方便省电。“人来灯亮,人走灯灭”的特性,使他们在部分场景…...

机器学习——支持向量机(SVM)
机器学习——支持向量机(SVM) 文章目录 前言一、SVM算法原理1.1. SVM介绍1.2. 核函数(Kernel)介绍1.3. 算法和核函数的选择1.4. 算法步骤1.5. 分类和回归的选择 二、代码实现(SVM)1. SVR(回归&a…...

HTTP协议初识·下篇
介绍 承接上篇:HTTP协议初识中篇_清风玉骨的博客-CSDN博客 本篇内容: 长链接 网络病毒 cookie使用&session介绍 基本工具介绍 postman 模拟客户端请求 fiddler 本地抓包的软件 https介绍 https协议原理 为什么加密 怎么加密 CA证书介绍 数字签名介绍…...
c++ 类的实例化顺序
其他类对象有作为本类成员,先构造类中的其他类对象, 释放先执行本对象的析构函数再执行包含的类对象的析构函数 #include <iostream> #include <string.h> using namespace std;class Phone { public:Phone(string name):m_PName(name){…...

Vue自动生成二维码并可下载二维码
遇到一个需求,需要前端自行生成用户的个人名片分享二维码,并提供二维码下载功能。在网上找到很多解决方案,最终吭哧吭哧做完了,把它整理记录一下,方便后续学习使用!嘿嘿O(∩_∩)O~ 这个小东西有以下功能特点…...

应该下那个 ActiveMQ
最近在搞 ActiveMQ 的时候,发现有 2 个 ActiveMQ 可以下载。 应该下那个呢? JMS 即Java Message Service,是JavaEE的消息服务接口。 JMS主要有两个版本:1.1和2.0。 2.0和1.1相比,主要是简化了收发消息的代码。 所谓…...

【C语言】指针详解(3)
大家好,我是苏貝,本篇博客带大家了解指针(2),如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一.函数指针数组二.指向函数指针数组的指针(不重要)三.回调函数 一.函…...

告别HR管理繁琐,免费低代码平台来帮忙
编者按:本文着重介绍了使用免费且高效的低代码平台实现的HR管理系统在一般日常人力资源管理工作中的关键作用。 关键词:低代码平台、HR管理系统 1.HR管理系统有什么作用? HR管理系统作为一款数字化工具,可为企业提供全方位的人力资…...
Java开发面试--Redis专区
1、 什么是Redis?它的主要特点是什么? 答: Redis是一个开源的、基于内存的高性能键值对存储系统。它主要用于缓存、数据存储和消息队列等场景。 高性能:Redis将数据存储在内存中,并采用单线程的方式处理请求…...

Ansible-roles学习
目录 一.roles角色介绍二.示例一.安装httpd服务 一.roles角色介绍 roles能够根据层次型结构自动装载变量文件,tasks以及handlers登。要使用roles只需在playbook中使用include指令即可。roles就是通过分别将变量,文件,任务,模块以…...

python3如何安装各类库的小总结
我的python3的安装路径是: C:\Users\Administrator\AppData\Local\Programs\Python\Python38 C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python3.exeC:\Users\Administrator\AppData\Local\Programs\Python\Python38\Scripts C:\Users\Admin…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...

Spring AI中使用ChatMemory实现会话记忆功能
文章目录 1、需求2、ChatMemory中消息的存储位置3、实现步骤1、引入依赖2、配置Spring AI3、配置chatmemory4、java层传递conversaionId 4、验证5、完整代码6、参考文档 1、需求 我们知道大型语言模型 (LLM) 是无状态的,这就意味着他们不会保…...