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个数等于前两个数之和…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...