当前位置: 首页 > news >正文

ChatGPT的前世今生

原文首发于博客文章ChatGPT发展概览

ChatGPT 是OpenAI开发的人工智能聊天机器人程序,于2022年11月推出。该程序使用基于 GPT-3.5、GPT-4 架构的大语言模型并以强化学习训练。ChatGPT目前仍以文字方式交互,而除了可以用人类自然对话方式来交互,还可以用于甚为复杂的语言工作,包括自动生成文本、自动问答、自动摘要等多种任务。

ChatGPT的诞生

演进过程

  1. 2020 年 7 月,OpenAI 发布了模型名称为的 davinci 的初代 GPT-3

  2. 2021 年 7 月,Codex 的论文发布,其中初始的 Codex 是根据 120 亿参数的 GPT-3 变体进行微调的。后来这个 120 亿参数的模型演变成 OpenAI API 中的code-cushman-001

  3. 2022 年 3 月,OpenAI 发布了指令微调 (instruction tuning) 的论文,其监督微调 (supervised instruction tuning) 的部分对应了davinci-instruct-betatext-davinci-001

  4. 2022 年 4 月至 7 月的,OpenAI 开始对code-davinci-002模型进行 Beta 测试,也称其为 Codex

  5. text-davinci-002text-davinci-003ChatGPT 都是从code-davinci-002进行指令微调得到的。详细信息请参阅OpenAI的模型索引文档

  6. 2022 年 5-6 月发布的text-davinci-002是一个基于code-davinci-002的有监督指令微调 (supervised instruction tuned) 模型。在text-davinci-002上面进行指令微调很可能降低了模型的上下文学习能力,但是增强了模型的零样本能力。

  7. text-davinci-003ChatGPT,它们都在 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 预训练

  1. 数据收集:CommonCrawl,C4也是common crawl,然后还有一些高质量的数据集,例如GitHub、维基百科、书籍、ArXiv论文存档、StackExchange问答网站等,这些都混合在一起,然后根据给定的比例进行采样。
  2. 标记化(tokenization):标记化是文本片段和标记与整数之间的一种无损转换,是将互联网上抓取的原始文本翻译成整数序列。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AoyVnVqh-1687332879486)(null)]
  3. 训练过程,可以查观看这个视频进行了解

Supervised Finetuning 监督微调

  • 假设已经有了一个非常聪明的学生(即GPT-3模型),他已经学会了很多知识,并且可以在各种不同的主题上写文章。但是想让他专注于某个特定的主题,并且写出更好的文章。这就需要使用监督微调技术来让他集中精力并提高他在这个特定主题上的表现。
  • 可以使用一个新的数据集来让这个学生熟悉这个领域的特定要求。例如为他提供一些示例文章,这些文章符合这个领域的要求,并让他通过学习这些文章来了解这个领域的特点和要求。这就像在学习一门新的科目时,我们需要先了解这门科目的基本概念和原理,然后通过实践来巩固这些知识。
  • 一旦这位学生掌握了这个领域的基础知识,就可以开始进行实践并进行监督微调。可以让他写一些文章,并根据这些文章的质量来指导他的学习和进一步的改进。这就像在学习一门新的科目时,需要不断地进行实践和练习,以巩固我们的知识并提高我们的技能水平。最终,通过不断的实践和练习,这位学生将能够在这个特定的领域中表现出色,并写出符合要求的文章。

Reward Modeling 奖励建模

  • 将奖励建模类比为让聪明的学生(即GPT-3模型)学习一门新的技能,例如学习打篮球。在学习打篮球的过程中,可以将得分作为奖励信号,以评估学生的表现。首先需要告诉学生如何打篮球,例如传球、投篮、防守等基本技能。这就像在奖励建模中,我们需要提供一些示例,以便模型可以了解任务的要求。
  • 然后可以让学生在训练场上进行练习,并根据他们的表现来给予奖励。例如,如果学生成功投篮得分,我们可以给予他们一定的奖励分数。这就像在奖励建模中,可以根据模型的表现来生成奖励信号。如果模型成功完成任务,例如正确地回答问题或生成准确的文本,可以给予它一定的奖励分数。
  • 通过不断的练习和奖励,学生将学会如何打篮球,并且在比赛中表现出色。同样地,通过奖励建模技术,我们可以训练GPT-3模型在特定任务中表现出色,并生成符合要求的文本。通过最大化奖励信号,模型可以学习如何有效地完成任务,并不断改进自己的表现。

Reinforcement Learning 强化学习

  • 奖励建模的例子中,将奖励信号定义为每次得分的分数。如果聪明的学生成功地将篮球投入篮筐,给予它一定数量的分数;如果它没有得分,那么不给予它分数。在奖励建模中,可以使用这些分数作为奖励信号,来训练模型。我们的目标是最大化总得分,因为总得分是我们想要优化的目标函数。
  • 强化学习中需要定义状态空间、行动空间和奖励函数,以让聪明的学生了解任务的要求。状态空间可以包括学生的位置、篮球的位置和篮筐的位置等信息,行动空间可以包括传球、投篮、防守等动作,奖励函数可以根据得分、失误、防守成功等情况来定义。然后让聪明的学生与环境交互,并根据当前状态和策略采取行动,并从环境中获得奖励或惩罚信号,聪明的学生可以不断更新策略,以最大化长期奖励,即总得分。
  • 奖励建模使用奖励信号来指导模型的优化方向,而强化学习使用奖励信号来指导模型的行动选择。

特点

  1. 作为辅助工具,并与人工监督结合起来,在不注重可靠性和安全性的应用程序中使用
  2. 可以编写和调试计算机程序
  3. 具备创作音乐、电视剧、童话故事和学生论文的能力
  4. ChatGPT 能够记住与用户之前的对话内容和给它的提示
  5. 可以回答测试问题(在某些测试情境下,水平甚至高于普通人类测试者)
  6. ChatGPT 输入内容会由审核API过滤,以减少生成冒犯言论

局限

  1. 人工智能幻觉 :有时会写出看似合理但不正确或荒谬的答案
  2. 古德哈特定律:奖励模型围绕人类监督而设计,可能导致过度优化,从而影响性能
  3. 意识形态偏见:研究表明,ChatGPT对两个投票建议应用程序的政治声明表明立场时,表现出亲环境主义。

相关文章:

ChatGPT的前世今生

原文首发于博客文章ChatGPT发展概览 ChatGPT 是OpenAI开发的人工智能聊天机器人程序,于2022年11月推出。该程序使用基于 GPT-3.5、GPT-4 架构的大语言模型并以强化学习训练。ChatGPT目前仍以文字方式交互,而除了可以用人类自然对话方式来交互&#xff0c…...

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的数据对模型进行微调&#xff…...

【玩转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框架搭建一个智能文本检索视频界面&#xff0c…...

软考A计划-系统集成项目管理工程师-一般补充知识-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…...

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

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言: 类加载器 1. …...