ChatGPT的前世今生
原文首发于博客文章ChatGPT发展概览
ChatGPT 是OpenAI开发的人工智能聊天机器人程序,于2022年11月推出。该程序使用基于 GPT-3.5、GPT-4 架构的大语言模型并以强化学习训练。ChatGPT目前仍以文字方式交互,而除了可以用人类自然对话方式来交互,还可以用于甚为复杂的语言工作,包括自动生成文本、自动问答、自动摘要等多种任务。
ChatGPT的诞生
演进过程
-
在 2020 年 7 月,OpenAI 发布了模型名称为的
davinci的初代 GPT-3 -
在 2021 年 7 月,Codex 的论文发布,其中初始的 Codex 是根据 120 亿参数的 GPT-3 变体进行微调的。后来这个 120 亿参数的模型演变成 OpenAI API 中的
code-cushman-001 -
在 2022 年 3 月,OpenAI 发布了指令微调 (instruction tuning) 的论文,其监督微调 (supervised instruction tuning) 的部分对应了
davinci-instruct-beta和text-davinci-001 -
在 2022 年 4 月至 7 月的,OpenAI 开始对
code-davinci-002模型进行 Beta 测试,也称其为 Codex -
text-davinci-002、text-davinci-003和ChatGPT都是从code-davinci-002进行指令微调得到的。详细信息请参阅OpenAI的模型索引文档 -
2022 年 5-6 月发布的
text-davinci-002是一个基于code-davinci-002的有监督指令微调 (supervised instruction tuned) 模型。在text-davinci-002上面进行指令微调很可能降低了模型的上下文学习能力,但是增强了模型的零样本能力。 -
text-davinci-003和ChatGPT,它们都在 2022 年 11 月发布,是使用的基于人类反馈的强化学习的版本指令微调 (instruction tuning with reinforcement learning from human feedback) 模型的两种不同变体。text-davinci-003恢复了(但仍然比code-davinci-002差)一些在text-davinci-002中丢失的部分上下文学习能力,并进一步改进了零样本能力(得益于RLHF)。另一方面,ChatGPT 似乎牺牲了几乎所有的上下文学习的能力来换取建模对话历史的能力。

总结
- 语言生成能力 + 基础世界知识 + 上下文学习都是来自于预训练(
davinci) - 存储大量知识的能力来自 1750 亿的参数量
- 遵循指令和泛化到新任务的能力来自于扩大指令学习中指令的数量(
davinci-instruct-beta) - 执行复杂推理的能力很可能来自于代码训练(
code-davinci-002) - 生成中立、客观的能力、安全和翔实的答案来自与人类的对齐。具体来说:
- 如果是监督学习版,得到的模型是
text-davinci-002 - 如果是强化学习版 (RLHF) ,得到的模型是
text-davinci-003 - 无论是有监督还是 RLHF ,模型在很多任务的性能都无法超过 code-davinci-002 ,这种因为对齐而造成性能衰退的现象叫做对齐税。
- 如果是监督学习版,得到的模型是
- 对话能力也来自于 RLHF(
ChatGPT),具体来说它牺牲了上下文学习的能力,来换取:- 建模对话历史
- 增加对话信息量
- 拒绝模型知识范围之外的问题
训练
训练有四个主要阶段:预训练、有监督微调、奖励建模、强化学习
Pretraining 预训练
- 数据收集:CommonCrawl,C4也是common crawl,然后还有一些高质量的数据集,例如GitHub、维基百科、书籍、ArXiv论文存档、StackExchange问答网站等,这些都混合在一起,然后根据给定的比例进行采样。
- 标记化(tokenization):标记化是文本片段和标记与整数之间的一种无损转换,是将互联网上抓取的原始文本翻译成整数序列。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AoyVnVqh-1687332879486)(null)] - 训练过程,可以查观看这个视频进行了解
Supervised Finetuning 监督微调
- 假设已经有了一个非常聪明的学生(即GPT-3模型),他已经学会了很多知识,并且可以在各种不同的主题上写文章。但是想让他专注于某个特定的主题,并且写出更好的文章。这就需要使用监督微调技术来让他集中精力并提高他在这个特定主题上的表现。
- 可以使用一个新的数据集来让这个学生熟悉这个领域的特定要求。例如为他提供一些示例文章,这些文章符合这个领域的要求,并让他通过学习这些文章来了解这个领域的特点和要求。这就像在学习一门新的科目时,我们需要先了解这门科目的基本概念和原理,然后通过实践来巩固这些知识。
- 一旦这位学生掌握了这个领域的基础知识,就可以开始进行实践并进行监督微调。可以让他写一些文章,并根据这些文章的质量来指导他的学习和进一步的改进。这就像在学习一门新的科目时,需要不断地进行实践和练习,以巩固我们的知识并提高我们的技能水平。最终,通过不断的实践和练习,这位学生将能够在这个特定的领域中表现出色,并写出符合要求的文章。
Reward Modeling 奖励建模
- 将奖励建模类比为让聪明的学生(即GPT-3模型)学习一门新的技能,例如学习打篮球。在学习打篮球的过程中,可以将得分作为奖励信号,以评估学生的表现。首先需要告诉学生如何打篮球,例如传球、投篮、防守等基本技能。这就像在奖励建模中,我们需要提供一些示例,以便模型可以了解任务的要求。
- 然后可以让学生在训练场上进行练习,并根据他们的表现来给予奖励。例如,如果学生成功投篮得分,我们可以给予他们一定的奖励分数。这就像在奖励建模中,可以根据模型的表现来生成奖励信号。如果模型成功完成任务,例如正确地回答问题或生成准确的文本,可以给予它一定的奖励分数。
- 通过不断的练习和奖励,学生将学会如何打篮球,并且在比赛中表现出色。同样地,通过奖励建模技术,我们可以训练GPT-3模型在特定任务中表现出色,并生成符合要求的文本。通过最大化奖励信号,模型可以学习如何有效地完成任务,并不断改进自己的表现。
Reinforcement Learning 强化学习
- 奖励建模的例子中,将奖励信号定义为每次得分的分数。如果聪明的学生成功地将篮球投入篮筐,给予它一定数量的分数;如果它没有得分,那么不给予它分数。在奖励建模中,可以使用这些分数作为奖励信号,来训练模型。我们的目标是最大化总得分,因为总得分是我们想要优化的目标函数。
- 强化学习中需要定义状态空间、行动空间和奖励函数,以让聪明的学生了解任务的要求。状态空间可以包括学生的位置、篮球的位置和篮筐的位置等信息,行动空间可以包括传球、投篮、防守等动作,奖励函数可以根据得分、失误、防守成功等情况来定义。然后让聪明的学生与环境交互,并根据当前状态和策略采取行动,并从环境中获得奖励或惩罚信号,聪明的学生可以不断更新策略,以最大化长期奖励,即总得分。
- 奖励建模使用奖励信号来指导模型的优化方向,而强化学习使用奖励信号来指导模型的行动选择。
特点
- 作为辅助工具,并与人工监督结合起来,在不注重可靠性和安全性的应用程序中使用
- 可以编写和调试计算机程序
- 具备创作音乐、电视剧、童话故事和学生论文的能力
- ChatGPT 能够记住与用户之前的对话内容和给它的提示
- 可以回答测试问题(在某些测试情境下,水平甚至高于普通人类测试者)
- ChatGPT 输入内容会由审核API过滤,以减少生成冒犯言论
局限
- 人工智能幻觉 :有时会写出看似合理但不正确或荒谬的答案
- 古德哈特定律:奖励模型围绕人类监督而设计,可能导致过度优化,从而影响性能
- 意识形态偏见:研究表明,ChatGPT对两个投票建议应用程序的政治声明表明立场时,表现出亲环境主义。
相关文章:
ChatGPT的前世今生
原文首发于博客文章ChatGPT发展概览 ChatGPT 是OpenAI开发的人工智能聊天机器人程序,于2022年11月推出。该程序使用基于 GPT-3.5、GPT-4 架构的大语言模型并以强化学习训练。ChatGPT目前仍以文字方式交互,而除了可以用人类自然对话方式来交互,…...
WireShark常用协议抓包与原理分析
1.ARP协议(地址解析协议) nmap 发现网关nmap -sn 192.168.133.2wireshark 抓请求包和响应包 arp请求包内容 arp响应包内容 总结:请求包包含包类型(request),源IP地址,源MAC地址,目标IP地址,目标MAC地址(未知,此处为全0);响应包包含包类型(reply),源IP地址,源…...
Mysql数据库操作总结
文章目录 1. DDL(Data Definition Language - 数据定义语言)1.1 数据库1.2 数据表(创建查询删除)1.3 数据表(修改) 2. 数据类型2.1 数值2.2 字符2.3 日期 3. 字段约束3.1 约束3.2 主键约束修改3.3 主键自增 联合主键 4. DML(Data Manipulation Language - 数据操作语言)4.1 添…...
在 ZBrush、Substance 3D Painter 和 UE5 中创作警探角色(P2)
大家好,下篇分享咱们继续来说警探角色的重新拓扑、UV、材质贴图和渲染处理。 重新拓扑/UV 这是对我来说最不有趣的部分——重新拓扑。它显然是实时角色中非常重要的一部分,不容忽视,因为它会影响大量的 UV、绑定和后期渲染,这里…...
如何在大规模服务中迁移缓存
当您启动初始服务时,通常会过度设计以考虑大量流量。但是,当您的服务达到爆炸式增长阶段,或者如果您的服务请求和处理大量流量时,您将需要重新考虑您的架构以适应它。糟糕的系统设计导致难以扩展或无法满足处理大量流量的需求&…...
【GPT LLM】跟着论文学习gpt
GPT1开山之作:Improving language understanding by generative pre-training 本文提出了gpt1,即使用无标签的数据对模型先进行训练,让模型学习能够适应各个任务的通用表示;后使用小部分 task-aware的数据对模型进行微调ÿ…...
【玩转Docker小鲸鱼叭】Docker容器常用命令大全
在 Docker 核心概念理解 一文中,我们知道 Docker容器 其实就是一个轻量级的沙盒,应用运行在不同的容器中从而实现隔离效果。容器的创建和运行是以镜像为基础的,容器可以被创建、销毁、启动和停止等。本文将介绍下容器的这些常用操作命令。 1、…...
专项练习11
目录 一、选择题 1、执行下列选项的程序,输出结果不是Window对象的是() 2、以下哪些代码执行后 i 的值为10: 二、编程题 1、判断 val1 和 val2 是否完全等同 2、统计字符串中每个字符的出现频率,返回一个 Object&…...
ASP.NET+SQL通用作业批改系统设计(源代码+论文)
随着网络高速地融入当今现代人的生活,学校对网络技术的应用也在不断地提高。学校的教学任务十分复杂,工作也很繁琐,在教学任务中,作业的批改也是一个很重要的环节。为了提高老师工作效率,减轻教师的工作强度,提高作业批改的灵活性,《通用作业批改系统》的诞生可以说是事在…...
基于深度学习的高精度打电话检测识别系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于深度学习的高精度打电话检测识别系统可用于日常生活中或野外来检测与定位打电话目标,利用深度学习算法可实现图片、视频、摄像头等方式的打电话目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…...
Vue搭建智能文本检索视频界面
前言 随着人工智能技术的发展,智能文本检索已经成为了一种非常流行的技术。在视频领域中,智能文本检索技术可以帮助用户快速找到自己需要的视频片段,提高用户的观看体验。本文将介绍如何使用Vue框架搭建一个智能文本检索视频界面,…...
软考A计划-系统集成项目管理工程师-一般补充知识-中
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧ÿ…...
springboot-内置Tomcat
一、springboot的特性之一 基于springboot的特性 自动装配Configuretion 注解 二、springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲: 1、在SpringApplication.run 初始化了一个上下文ConfigurableApplicationContext configurableApplica…...
Flink流批一体计算(2):Flink关键特性
目录 Flink关键特性 流式处理 丰富的状态管理 丰富的时间语义支持 Data pipeline 容错机制 Flink SQL CEP in SQL Flink 应用程序可以消费来自消息队列或分布式日志这类流式数据源(例如 Apache Kafka 或 Kinesis)的实时数据,也可以从各…...
2023软件工程中各种图在现代企业级开发中的使用频率
概览 系统流程图 ✔ 数据流图 不常用 ER图 ✔ 状态转换图 ✔ Warnier图 不常用 IPO图 不常用 Petri网 不常用 层次方框图 不常用 层次图 a.k.a. H图 ✔ 1,层次图描绘软件的层次结构.层层次方框图描绘的是数据结构。 2,层次图的方框表示模块或子模块。层次方框图的方框表示数据结…...
macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载
macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Window…...
【C++案例】一个项目掌握C++基础-通讯录管理系统
文章目录 1、系统需求2、菜单功能3、退出功能4、添加联系人4.1 设计联系人结构体4.2 设计通讯录结构体4.3 main函数中创建通讯录4.4 封装添加联系人函数4.5 测试添加联系人功能 5、显示联系人5.1 封装显示联系人函数5.2 测试显示联系人功能 6、删除联系人6.1 封装检测联系人是否…...
Triton教程 --- 动态批处理
Triton教程 — 动态批处理 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理 Triton 提供了动态批处理功能,将多个请求组合在一起执行同一模型以提供更大的吞吐量。 默认情况下,只有当每个输入在…...
Python的并行(持续更新)
0. 参考: 《Python并行编程 中文版》https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/index.html 1. 线程和进程: 进程可以包含多个并行运行的线程;通常,操作系统创建和管理线程比进程更省CPU资源&am…...
chatgpt赋能python:Python实现Fibonacci数列
Python实现Fibonacci数列 Fibonacci数列是一个非常经典的数列,定义如下: F ( 0 ) 0 , F ( 1 ) 1 F(0)0, F(1)1 F(0)0,F(1)1 F ( n ) F ( n − 1 ) F ( n − 2 ) F(n)F(n-1)F(n-2) F(n)F(n−1)F(n−2) 也就是说,第n个数等于前两个数之和…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
