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

ChatGPT到底是如何运作?

自从2022年11月30日发布以来,ChatGPT一直占据着科技届的头条位置,随着苹果的创新能力下降,ChatGPT不断给大家带来震撼,2023年11月7日,首届OpenAI开发者大会在洛杉矶举行,业界普遍认为,OpenAI的开发者大会可能会替代苹果发布会,成为AI时代最引人注目的“科技春晚”。

但ChatGPT的背后到底是如何运作的,它的超强能力究竟是如何形成的?它有什么特别之处?它的竞争对手能超越它吗?这一系列的问题正是本文所要讨论的。

什么是ChatGPT?

ChatGPT全称为Chat Generative Pre-trained Transformer,一个基于深度学习的大型语言模型,其模型结构使用了Transformer网络 。这个网络可以从输入的文本中学习语言的规律和模式,并用这些规律和模式来预测下一个单词或字符。

在chatGPT的训练过程中,chatGPT接受了海量的文本数据,这些数据包括各种来源,例如维基百科、新闻文章、小说、网页等等。这些庞大的数据集被用来形成一个模仿人脑的深度学习神经网络,在学习过程中,chatGPT试图学习这些数据中的语言规则和模式,预测文本序列中的下一个单词或字符,以提高自己的准确性。

当您与chatGPT交流时,您的输入会被转化为一个向量,然后输入到chatGPT的神经网络中。网络会对输入进行一系列的计算和转换,以生成对应的输出向量。最终,输出向量被翻译成文本,以回答您的问题或提供相关信息。
chatGPT的训练和推理过程需要大量的计算资源和数据存储,因此chatGPT通常在云端或大型服务器上运行。它被设计为可扩展和高效,可以处理海量的文本数据,并能够支持多语言和多种自然语言处理任务。
之所以大家对ChatGPT感到很震惊,是因为ChatGPT所做的事情,真正接近了人类理解和运用语言的能力——直接接收自然语言,然后直接回复自然语言,并保证了语言的流畅性与逻辑性。这是人与人的交流方式。

ChatGPT 的工作原理是尝试理解您的提问,然后根据训练的数据输出它预测最能回答您问题的字符串。虽然这听起来相对简单,但它幕后发生的事情的复杂性难以想象。

Transformer 架构

ChatGPT整个工作的核心是“Transformer”,这是一种用于处理自然语言数据的神经网络。神经网络通过互连节点层处理信息来模拟人脑的工作方式。将神经网络想象成一个曲棍球队:每个球员都有一个角色,但他们在具有特定角色的球员之间来回传递冰球,所有人一起努力得分。

AI的算法结构,也是经过了漫长的探索与积累之后,才有了今天Transformer的质变。

第一个阶段:模式匹配,给AI输入一些列的逻辑与规则,AI根据规则来进行判断与推理。代表性有符号逻辑,联结主义等,主要应用在包括象棋和国际象棋等游戏。

第二阶段:机器学习,让计算机不需要显式的程序也可以具备学习的能力,以处理更复杂的任务。代表性的算法包括反向传播、决策树、神经网络和规则引擎等。主要应用在语音识别、图像识别和机器翻译等领域。

第三阶段:人工神经网络,随着数据量的增加和计算能力的提升,一种基于神经网络结构的机器学习算法。这个时期的经典算法包括支持向量机、朴素贝叶斯、卷积神经网络和循环神经网络等。

第四阶段:深度学习神经网络,一种模仿人脑的复杂、多层、加权算法,它能够学习文本数据中的模式和关系,并利用创建类似人类的能力。通过预测任何给定句子中接下来应该出现的文本来做出响应。 代表算法有Transformer。

Transformer 架构在进行预测时,通过使用“自注意力”来权衡序列中不同单词的重要性来处理单词序列。自我注意力类似于读者回顾前一个句子或段落以了解理解书中新单词所需的上下文的方式。转换器查看序列中的所有单词,以了解上下文以及单词之间的关系。

转换器由多层组成,每层又包含多个子层。两个主要子层是自注意力层和前馈层。自注意力层计算序列中每个单词的重要性,而前馈层对输入数据应用非线性变换。这些层帮助转换器学习和理解序列中单词之间的关系。

虽然听起来很复杂,而且解释起来也很复杂,但 Transformer 模型从根本上简化了人工智能算法的设计方式。它允许并行计算(或同时完成),这意味着显着减少训练时间。它不仅使人工智能模型变得更好,而且使它们的生产速度更快、成本更低。

Transformer不使用单词,而是使用“标记”,“标记”是编码为矢量(具有位置和方向的数字)的文本块。两个标记向量在空间中越接近,它们就越相关。类似地,注意力被编码为向量,这使得基于 Transformer 的神经网络能够记住段落前面的重要信息。

GPT-3 接受了大约 5000 亿个标记的训练,这使得它的语言模型能够更轻松地分配含义,并通过将它们映射到向量空间来预测可能的后续文本。许多单词映射到单个标记,但较长或更复杂的单词通常会分解为多个标记。平均而言,令牌的长度大约为四个字符。

预训练与人类反馈强化学习 (RLHF)

Pre-trained的意思是“预训练”,这是 GPT 能够做到它能做的事情的一个非常重要的部分。 人工智能使用两种主要方法进行预训练:监督和非监督。

在 GPT 之前,性能最好的 AI 模型使用“监督学习”来开发其底层算法。他们接受了手动标记数据的训练,例如包含不同动物照片的数据库以及人类编写的每种动物的文本描述。这些类型的训练数据虽然在某些情况下有效,但制作成本非常昂贵,其扩展方式是有限的。人类培训师必须花大量的人力与时间大力气来预测所有的输入和输出。
不可能预测所有会被问到的问题,因此 ChatGPT 使用无监督预训练——这就是游戏规则的改变者。

GPT 采用了生成式预训练,给出了一些基本规则,然后输入大量未标记的数据——几乎是整个开放互联网。然后,它会在“无人监督”的情况下处理所有这些数据,并形成自己对控制文本的规则和关系的理解。

当然,当你使用无监督学习时,你并不真正知道你会得到什么,因此 GPT 也进行了“微调”,使其行为更加可预测和适当。 通过监督式的指令微调+人类反馈的强化学习来让模型的输出变得合理。

训练数据集

在早些时间的一些研究已经证明,随着参数量和训练数据量的增大,语言模型的能力会随着参数量的指数增长而线性增长,这种现象被称为Scaling Law。但是在2022年之后,随着进来对大模型的深入研究,人们发现当模型的参数量大于一定程度的时候,模型能力会突然暴涨,模型会突然拥有一些突变能力,如推理能力、零样本学习能力等。


ChatGPT 是一个独特的模型,除了 Persona-Chat 之外,还有许多其他对话数据集用于微调 ChatGPT。这里有一些例子:

  • 康奈尔电影对话语料库 包含电影脚本中角色之间对话的数据集。它包含 10,000 多个电影角色对之间的 200,000 多次对话,涵盖各种主题和类型。
  • Ubuntu 对话语料库 寻求技术支持的用户与 Ubuntu 社区支持团队之间多轮对话的集合。它包含超过 100 万个对话,使其成为用于对话系统研究的最大的公开数据集之一。
  • DailyDialog 各种主题的人与人对话的集合,从日常生活对话到有关社会问题的讨论。数据集中的每个对话都由几个回合组成,并标有一组情感、情绪和主题信息。

除了这些数据集之外,ChatGPT 还接受了互联网上大量非结构化数据的训练,包括网站、书籍和其他文本源。这使得 ChatGPT 能够从更一般的意义上了解语言的结构和模式,然后可以针对对话管理或情感分析等特定应用进行微调。

自然语言处理(NLP)

解决了准确性的问题,还需要解决交流的“自然流畅”问题。这就是自然语言处理技术,简称NLP,一种使计算机能够理解、解释和生成人类语言的技术。

NLP 的关键挑战之一是处理人类语言的复杂性和歧义性。首先接受您的提问,将其分解为标记,然后使用其基于 Transformer 的神经网络来尝试了解其中最显着的部分是什么,以及您真正要求它做什么。从那里,神经网络再次启动并根据从训练数据和微调中学到的知识生成适当的令牌输出序列。

NLP 算法需要接受大量数据的训练,才能识别并学习语言的细微差别。并且需要不断完善和更新,以跟上语言使用和上下文的变化。

算力

算力是指数据处理和计算的能力,它可以用每秒浮点运算次数(Flops)来衡量。目前,AI大模型主要依赖于GPU或CPU+FPGA、ASIC等算力芯片来实现其高效运行。这些算力芯片是针对人工智能算法做了特殊加速设计的芯片,也被称为AI加速器或计算卡,是AI的算力基础。

ChatGPT需要非常大量的算力(芯片)来支持其训练和部署。据微软消息,为ChatGPT提供计算支持的AI超级计算机,是微软2019年投资10亿美元建造的大型顶级超级计算机,配备了数万台英伟达A100台 GPU,还配备了60多个数据中心,部署了数十万个英伟达GPU辅助。

巨大的用户访问量也给算力带来巨大的性能和成本压力。根据Similarweb数据,今年2月OpenAI访问量已经达到11亿次,而根据Fortune的数据,用户每次与ChatGPT互动产生的云算力成本约0.01美元,如果往低了算,每次访问网站仅进行一次互动,那么单月仅算力成本也要1100万美元。

问题与期待

ChatGPT虽然已经有很强的能力,但上线以后随着使用的人越来越多,也发现了很多问题,对于复杂的推理分析计算类任务,他回答错误的概率仍然非常大。另外,在ChatGPT的训练过程中,使用了RLHF来引导模型按照人类偏好进行学习。然而,这种学习方式也可能导致模型过分迎合人类的偏好,而忽略正确答案。因此大家可以看到ChatGPT经常会一本正经的胡说八道。还有就是数据隐私安全。

虽然 ChatGPT是目前最流行的大型语言模型,但在接下来的几年里,可能会出现更多的竞争。例如,谷歌的Bard、Facebook 的Llama 2 、 Writer 的Palmyra LLM和 Anthropic 的Claude。

相比问题,我们更加期待ChatGPT的未来,它们将不断变得更加善于理解和回应我们人类,非常高效,可以在几乎任何设备上使用它们,比如手机甚至小型设备。它们还将成为特定领域的专家,如医学或法律,这非常酷。

还有,这些语言模型将能够处理不仅是文本,还包括图像和声音,并且将使用世界各地的语言。此外,人们正在努力确保这些AI模型是公平和负责任的,以使其更加开放和减少偏见。

最令人兴奋的是,这些语言模型将成为我们惊人的伙伴,帮助我们完成各种任务,并以无数方式使我们的生活变得更轻松。

参考资料:
1、https://jalammar.github.io/illustrated-transformer/
2、https://zapier.com/blog/how-to-use-google-bard/
3、https://openai.com/chatgpt
4、https://www.zdnet.com/article/what-is-chatgpt-and-why-does-it-matter-heres-everything-you-need-to-know/
5、https://www.yunliebian.com/yingxiao/article-44223-1.html
6、https://www.vinayiyengar.com/2022/08/04/the-promise-and-perils-of-large-language-models/
7、https://babylm.github.io/

相关文章:

ChatGPT到底是如何运作?

自从2022年11月30日发布以来,ChatGPT一直占据着科技届的头条位置,随着苹果的创新能力下降,ChatGPT不断给大家带来震撼,2023年11月7日,首届OpenAI开发者大会在洛杉矶举行,业界普遍认为,OpenAI的开…...

学习Java第57天,Servlet的基本使用步骤

步骤1 开发一个web类型的module 步骤2 开发一个UserServlet public class UserServlet extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取请求中的参数String usern…...

解决:ValueError: must have exactly one of create/read/write/append mode

解决:ValueError: must have exactly one of create/read/write/append mode 文章目录 解决:ValueError: must have exactly one of create/read/write/append mode背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用…...

大数据-之LibrA数据库系统告警处理(ALM-37014 Gaussdb进程锁文件已经存在)

告警解释 当集群中的CN实例或者DN实例锁文件创建失败时,产生该告警。 告警属性 告警ID 告警级别 可自动清除 37014 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 I…...

STM32 基础知识

1. STM32微控制器的核心特性是什么? STM32微控制器是基于ARM Cortex-M 处理器 , 它具有高性能处理能力和低功耗的特性 , 适合用于嵌入式系统STM32系列具有多种多样的内存大小和丰富的内置外设选项,包括 多通道ADC , 定…...

JVM——产生内存溢出原因

目录 1.产生内存溢出原因一 :代码中的内存泄漏1.案例1:equals()和hashCode()导致的内存泄漏问题:**正常情况**:**异常情况:**解决方案: 2.案例2:内部类引用外部类问题:解决方案&…...

关于X86机器上运行GnuCobol的研究

1.安装GnuCobol 当前的稳定版本是 3.1.2,已经在各种平台上进行了广泛测试,并已投入商用。 下载地址为: https://phoenixnap.dl.sourceforge.net/project/gnucobol/gnucobol/3.1/gnucobol- 3.1.2.tar.bz2 1)上传压缩包至x86服务器; 2)通过tar -xvf gnucobol-3.1.2.tar.bz2…...

open与openat的区别

Linux 中的 open 和 openat 系统调用都用于打开文件&#xff0c;但它们有一些区别。 一、函数原型 open 系统调用的原型 #include <fcntl.h>int open(const char *pathname, int flags, mode_t mode);pathname 是要打开的文件路径flags 是打开文件的标志mode 是文件的…...

人工智能与供应链行业融合:预测算法的通用化与实战化

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 让我们一起深入探索人工智能与供应链的融合&#xff0c;以及预测算法在实际应用中的价值&#xff01;&#x1f50d;&#x1f680; 文章目录 前言供应链预测算法的基本流程统计学习模型与机…...

Cytoscape学习教程

写在前面 今天分享的内容是自己遇到问题后,咨询社群里面的同学,帮忙解决的总结。 关于Cytoscape,对于做组学或生物信息学的同学基本是陌生的,可能有的同学用这个软件作图是非常溜的,做出来的网络图也是十分的好看,“可玩性”很高,就像前面分享的aPEAR包一样aPEAR包绘制…...

computed和watch相关

Computed本质是一个具备缓存的watcher&#xff0c;依赖的属性发生变化就会更新视图。 适用于计算比较消耗性能的计算场景。当表达式过于复杂时&#xff0c;在模板中放入过多逻辑会让模板难以维护&#xff0c;可以将复杂的逻辑放入计算属性中处理 computed擅长处理&#xff1a;一…...

反思一次效能提升

前天与一个大佬交流。想起自己在6年多前在团队里做的一次小小的效能提升。 改进前 在同一个产品团队&#xff0c;同时有前端工程师和后端工程师。他们经常需要共同协作完成features。 前端是一个传统的多页应用。前端渲染是由后端的velocity模板引擎实现的。 打包后&#xff0c…...

ElasticSearch之cat indices API

命令样例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/indices?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下&#xff1a; health status index uuid …...

Composer update 跳过指定依赖

在使用Compose进PHP 依赖管理只时&#xff0c;有时候我们可能希望忽略版本批配&#xff0c;即使依赖项的景新版本已经发布&#xff0c;也然续使用当前的乐本。这种情况下&#xff0c;我们可以使用Composer的 --ignore-platform-reqs 选项来实现 可以使用--ignore-platform-req…...

@RequestMapping详解:请求映射规则

目录 请求-相应模式&#xff1a; 设置请求映射规则RequestMapping POST 请求&#xff1a; GET 请求 请求-相应模式&#xff1a; 前端作为客户端向后端发送请求&#xff08;请求可以分为请求头和请求体两部分&#xff0c;请求头包含了一些元数据信息&#xff0c;如请求方式、…...

C#中密封类和密封方法

目录 一、定义与特性 1.何时使用密封类 2.定义 3.特性 二、示例 如果所有的类都可以被继承&#xff0c;很容易导致类的层次结构变得十分复杂。使对类的理解和使用变得十分困难。为了避免滥用继承&#xff0c;C#中提出了密封类的概念。 一、定义与特性 密封类可以用来限制…...

Pytorch中的Net.train()和 Net.eval()函数讲解

目录 前言1. Net.train()2. Net.eval()3. 总结 前言 这两个方法通常用于训练和测试阶段 1. Net.train() 该代码用在训练模式中 主要作用&#xff1a; 模型启用了训练时特定的功能&#xff08;Batch Normalization 和 Dropout&#xff09;。 在这种模式下&#xff0c;模型会根…...

氪了几百亿,字节游戏停止了“跳动”

目录 一、氪了几百亿&#xff0c;字节游戏停止了“跳动” 二微软推出跨平台框架 ML.NET 3.0 版&#xff1a;强化深度学习、加强AI效率 一、氪了几百亿&#xff0c;字节游戏停止了“跳动” 朝夕光年&#xff0c;扑了 11月26日&#xff0c;脉脉社区的一个截图内容引起大众热议…...

进入docker容器

学习如何进入一个正在运行的容器的内部&#xff0c;要求学习者参照示例&#xff0c;进入一个名为container2的容器内部&#xff0c;并在容器内部创建一个1.txt文件。 相关知识 使容器在后台运行 因为本关要使用docker run -d命令&#xff0c;所以在本关的开始&#xff0c;将…...

C陷阱与缺陷——第5章库函数

1. 返回整数的getchar函数 #include <stdio.h>main() {char c;while((c getchar()) ! EOF){putchar(c);} } 上述函数是错误的&#xff0c;原因在于程序中的变量c被声明为char类型&#xff0c;而不是int类型&#xff0c;这意味着c无法容下所有可能的字符&#xff0c;特…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...