GPT-AI 使用的技术概览

news2024/11/24 16:01:02

ChatGPT 使用的技术概览

智心AI-3.5/4模型,联网对话,MJ快速绘画


从去年 OpenAI 发布 ChatGPT 以来,AI 的能力再次惊艳了世人。在这样的一个时间节点,重新去学习相关技术显得很有必要。

ChatGPT 的内容很多,我计划采用一个系列,多篇文章来分享学习我自己学习过程中的一些理解。本系列文章,我将站在一个普通开发人员的角度展开,希望对想了解 ChatGPT 技术原理的普通开发者们有帮助。

ChatGPT 本身就具备很丰富的知识,所以 ChatGPT 自身实际上就是一个很好的学习渠道,我也将借助 ChatGPT 来学习 ChatGPT。

机器学习技术的发展

要聊 ChatGPT 用到的机器学习技术,我们不得不回顾一下机器学习技术的发展。因为,ChatGPT 用到的技术不是完全从零的发明,它也是站在巨人的肩膀上发展起来的。

机器学习技术的分类

实际上机器学习技术可以追溯到上个世纪三四十年代,一开始就与统计学分不开。早在 1936 年,著名的统计学家 Fisher 发明了线性判别分析方法(LDA)。LDA 利用方差分析的思想,试图将高维数据分开。这后来演化为一类基础的机器学习技术任务,即分类问题。

在计算机出现之后,大量的基于计算机的机器学习算法出现,比如决策树、SVM、随机森林、朴素贝叶斯、逻辑回归等。它们也都可以用于解决分类问题。

分类问题是指我们事先知道要分为哪几类,这些类通常是人为定义的。比如人分为男性和女性,编程语言分为 c/c++/java 等。

还有一类问题是我们无法预先知道要分为几类的,比如给定一系列的新闻,按照主题进行分组,而我们可能无法事先人为的确定好有几个主题。此时可以利用机器学习算法自动去发现新闻中有几个类,然后再把不同的新闻放到不同的分类。这种问题是聚类问题。

有时,这个分类可能是连续的,比如,我们要用一个机器学习模型去预测某个人的身高,此时可以认为结果是在某一个范围内连续变化的值。这类问题,我们把它叫做回归问题。与分类的问题的区别仅仅在于我们希望输出一个连续的值。

除此之外,一些典型的机器学习问题还包括:降维、强化学习(通过智能体与环境的交互来学习最佳行动策略)等。

除了根据问题不同进行分类,还可以从机器学习技术使用数据的方式进行分类。从这个角度可以将机器学习技术分为有监督学习、无监督学习、半监督学习等。有监督学习要求我们为模型准备好标签值。无监督学习则无需我们准备标签值,只需数据即可开始训练。半监督学习是指需要一部分有标签值的数据。

从解决的问题上来看,ChatGPT 可以认为是一个分类模型,它根据输入的文本预测下一个要输出的词是什么,而词的范围是确定的,即模型的输出是一个确定的分类。

从 ChatGPT 使用数据的方式来看,可以认为是使用了大量的无监督数据,加上少量的有监督的数据。所以,可以认为 ChatGPT 是一个半监督的机器学习技术。

传统的机器学习算法与基于人工神经网络的机器学习算法

上面提到的决策树、SVM、随机森林、朴素贝叶斯、逻辑回归等算法,多是基于可验证的可理解的统计学知识设计的算法。它们的局限性主要在于效果比较有限,即便使用海量数据也无法继续提升,这要归因于这些模型都是相对简单的模型。由于这些算法都是很早就被开发出来了,并且一直很稳定,没有什么更新,我们一般称这些算法为传统的机器学习算法。

另一类机器学习算法是基于人工神经网络的机器学习算法。这一类算法试图模拟人类的神经网络结构。其起源也很早,要追溯到 1943 年,W. S. McCulloch 和 W. Pitts 提出的 M-P 模型。该模型根据生物神经元的结构和工作机理构造了一个简化的数学模型,如下图。

M-P model
M-P model

其中,xi 代表神经元的第 i 个输入,权值 wi 为输入 xi 对神经元不同突触强度的表征,θ 代表神经元的兴奋阀值,y 表示神经元的输出,其值的正和负,分别代表神经元的兴奋和抑制。

该模型的数学公式可以表示为: 𝑦=∑𝑤𝑖*𝑥𝑖−𝜃 ,如果所有输入之和大于阀值 θ 则 y 值为正,神经元激活,否则神经元抑制。该模型作为人工神经网络研究的最简模型,一直沿用至今。

虽然这个模型看起来很简单,但是由于其可扩展可堆叠的特性,实际上可以用于构造一个非常复杂的网络。至于如何扩展和堆叠,其实就是人工神经网络数十年的发展要解决的问题。

这个模型如何优化呢?这里的优化其实就是修改 wi 的值,依靠一种名为反向传播的优化方式可以优化它。其计算过程,相当于对 wi 求偏导数,然后和学习率相乘再加回到原来的 wi 值上。

人工神经网络模型的算法思想非常简单,其效果只有在网络规模达到一定程度之后才会体现出来。但是一旦网络形成规模之后,对算力和数据的要求就非常高了。这也是为什么在 21 世纪之前这样的算法无法获得发展的原因。

从 2000 年开始,互联网进入了爆发式发展的阶段,大量的数据被累积起来,并且计算机算力也经历了数十个摩尔周期得到了长足的发展。于是基于人工神经网络的机器学习算法得到爆发式的发展。

各个研究领域都纷纷开始尝试利用人工神经网络来提升机器学习模型效果。

卷积神经网络(一种基于 M-P 模型的变种结构)在计算机视觉领域表现突出,逐渐演变为计算机视觉领域的基础结构。循环神经网络和长短期记忆网络(另一种基于 M-P 模型的变种结构)在自然语言处理领域表现突出,逐渐演变为自然语言处理领域的基础结构。

这两类网络结构曾经风靡一时,即便到现在也有很多问题是基于这两类结构的网络算法去解决的。它们在很大程度上促进了人工神经网络的机器学习算法的发展。

但是,研究人员从未停止对于网络结构的探索。在 2017 年的时候,Google 的研究团队提出了一个名为 Transformer 的网络结构,强调了注意力机制在网络结构中的表示和应用。Transformer 模型结构简单而一致,却表现出了非常好的效果。

ChatGPT 的故事可以认为从这里开始了。在 Transformer 模型结构发布之后,后续有大量的研究基于 Transformer 开展起来,都取得了很好的效果,这里面就包括各类 GPT 模型。

最初的 Transformer 模型主要是应用在自然语言处理领域。近两年的研究发现,这一结构也可以被用到计算机视觉认为上,当前流行的 Vision Transformer 模型就是它在计算机视觉领域的应用成果。从这个趋势来看,Transformer 有着要统一所有模型结构的势头。

ChatGPT 技术概览

有了前面的了解,终于轮到 ChatGPT 出场了。

ChatGPT 用到了哪些技术呢?可以简要列举如下:

  • 基础模型结构:基于注意力机制的 Transformer 模型
  • 超大规模的模型堆叠:GPT3 堆叠了 96 层网络,参数数量高达 1750 亿
  • 超大的训练数据:采用了 45TB 的原始数据进行训练
  • 超大的计算资源:基于微软专门设计的包含数千块 GPU 的超级计算机完成训练
  • 大规模并行训练:将模型分布到多个实例,多块 GPU 上并行计算完成训练
  • 基于人类反馈数据进行调优:采用了大量的基于人类反馈的数据进行优化,使得对话更加自然、流畅而具有逻辑性
    由于 OpenAI 并未公布太多的 ChatGPT 的训练细节,所以,上述有一些模糊的估计数据。

值得注意的是,ChatGPT 用到的核心技术其实并非原创,其核心模型结构 Transformer 来自于 Google 的研究成果。

总结

自 ChatGPT 发布以来,很多人认为这是一个人类走向通用人工智能的突破,也有一些人认为它其实没什么本质的改进。有很多人对自己的职业发展产生了很深的焦虑感,也有很多人感觉触碰到了科幻世界中的未来,还有很多人觉得又是一个可以好好捞一把的机会。

也许每个人都有必要去了解一下机器学习技术的原理,这样才能形成对它的理性的认知。

参考
wikipedia 词条罗纳德・艾尔默・费希尔:https://zh.wikipedia.org/zh-sg/ 羅納德・愛爾默・費雪
人工智能与神经网络发展研究:https://image.hanspub.org/Html/2-1540922_23773.htm
OpenAI 开发的 ChatGPT 资料(Training language models to follow instructions
with human feedback): https://arxiv.org/pdf/2203.02155.pdf
OpenAI 开放的 GPT-3 资料(Language Models are Few-Shot Learners): https://arxiv.org/pdf/2005.14165.pdf
OpenAI 开放的 GPT-2 资料(Language Models are Unsupervised Multitask Learners): https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf
OpenAI 开放的 GPT 资料(Improving Language Understanding by Generative Pre-Training): https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/795042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git下载与安装

文章目录 一、Git下载二、Git安装1.双击下载好的安装包进行安装2.Next3.选择Git的安装目录(不要带有中文和空格)→Next4.Next5.Next6.Next7.Next8.Next9.Next10.Next11.Next12.Next13.Next14.Next15.Next16.Install17.等待安装18.Finish19.鼠标光标放到系统桌面右击看到如下图所…

【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织

前言 在数据科学和数据分析领域,Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具,帮助我们高效地处理和分析数据。其中,索引在Pandas中扮演着关键角色,它是一种强大的数据组织和访问机制,使我们…

Java那些“锁”事 - 公平锁和非公平锁

在Java中,锁可以分为公平锁(Fair Lock)和非公平锁(Nonfair Lock),它们的区别在于线程获取锁的顺序是否遵循公平性原则。 公平锁 公平锁是指多个线程按照它们发出请求的顺序获取锁,即先到先得的原…

QT:当登录成功时,关闭登录界面,跳转到新的界面中

1> 继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中 widget.h #include "widget.h" //#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent)//, ui(new Ui::Widget) {//ui->setu…

Cesium态势标绘专题-集结地(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

IOS自动化测试环境搭建教程

目录 一、前言 二、环境依赖 1、环境依赖项 2、环境需求与支持 三、环境配置 1、xcode安装 2、Git安装 3、Homebrew安装(用brew来安装依赖) 4、npm和nodejs安装 5、libimobiledevice安装 6、idevicesinstaller安装 7、ios-deploy安装 8、Ca…

DRS 迁移本地mysql 到华为云

准备工作: 源端的IP地址(公网),用户明和密码。如果通过公网迁移,需要在安全组放通drs访问源端数据库的3306端口。目标端的IP地址,用户名和密码。 创建DRS迁移任务 创建迁移任务 登录华为云控制台。单击管…

自恢复保险丝(PPTC)的金属材料说明

保险丝大家都是知道的,但保险丝当中的自恢复保险丝(PPTC)可能就不太了解的。 其实PPTC自恢复保险丝与大家所认识的保险丝一样,都是起到限流作用,达到电路防护效果。简单来说就是一旦电路中的电流超过所规定的电流时&am…

MixFormerV2: Efficient Fully Transformer Tracking

摘要 基于变压器的跟踪器在标准基准测试上取得了很强的精度。然而,它们的效率仍然是在GPU和CPU平台上实际部署的一个障碍。在本文中,为了克服这一问题,我们提出了一个完全变压器跟踪框架,称为MixFormerV2,没有任何密集…

SpringBoot 配置⽂件

1.配置文件作用 整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如: 数据库的连接信息(包含⽤户名和密码的设置);项⽬的启动端⼝;第三⽅系统的调⽤秘钥等信息;⽤于发现和定位问题的普通⽇…

mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目

m系列 mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目 gptlink 项目是一个前后端一体化的 chatgpt 开源项目 gptlink 项目地址:https://github.com/gptlink/gptlink 安装 php 8.0 版本: brew install php8.0安装完成后提示如下&#xff…

面向对象之_多态_1

目录 一. 多态 多态是什么 二. 多态的构成条件 1. 虚函数 2. 虚函数重写(隐藏) 3. 父类型的引用或者指针调用 4. 多态的特殊情况 1) 子类可以不加 virtual 关键字 2) 协变 三. 关键字 1. virtual 2. final 3. override 四. 多态的原理 1. 虚…

【MST+离线】CF1851 G

Problem - G - Codeforces 题意&#xff1a; Code&#xff1a; #include <bits/stdc.h>#define int long longusing namespace std;const int N2e510; const int mod1e97;int a[N]; struct node {int x, y, val;bool operator < (const node &k) const {return …

疾风计划-程序设计基础-期末考试-05

擀面皮 有一块1x1的方形面团&#xff08;不考虑面团的厚度&#xff09;&#xff0c;其口感值为0。擀面师傅要将其擀成一个N x M&#xff08;纵向长N&#xff0c;横向宽M&#xff09;的面皮。师傅的擀面手法娴熟&#xff0c;每次下手&#xff0c;要么横向擀一下&#xff08;使得…

Ubuntu 20.04下的录屏与视频剪辑软件

ubuntu20.04下的录屏与视频剪辑 一、录屏软件SimpleScreenRecorder安装与使用 1、安装 2、设置录制窗口参数 3、开始录制 二、视频剪辑软件kdenlive的安装 1、安装 2、启动 一、录屏软件SimpleScreenRecorder安装与使用 1、安装 &#xff08;1&#xff09;直接在终端输入以下命…

嵌入式系统中的GPIO控制:从理论到实践与高级应用

本文将探讨嵌入式系统中的GPIO(通用输入输出)控制,着重介绍GPIO的原理和基本用法。我们将使用一个实际的示例项目来演示如何通过编程配置和控制GPIO引脚。将基于ARM Cortex-M微控制器,并使用C语言进行编写。 GPIO是嵌入式系统中最常见且功能最强大的接口之一。它允许硬件工…

【JVM】详解对象的创建过程

文章目录 1、创建对像的几种方式1、new关键字2、反射3、clone4、反序列化 2、创建过程步骤 1、检查类是否已经被加载步骤 2、 为对象分配内存空间1、指针碰撞针对指针碰撞线程不安全&#xff0c;有两种方案&#xff1a; 2、空闲列表选择哪种分配方式 步骤3、将内存空间初始化为…

C语言中的数组(详解)

C语言中的数组&#xff08;详解&#xff09; 一、一维数组1.一维数组的创建2.数组的初始化3.一维数组的使用4.一维数组在内存中的存储二、二维数组1.二维数组的创建2.二维数组的初始化3.二维数组的使用4.二维数组在内存中的存储三、数组越界四、数组作为函数参数1.冒泡排序2.数…

MySQL基础扎实——MySQL中有那些不同的表格

表格类型 在MySQL中&#xff0c;常见的表格类型有以下几种&#xff1a; MyISAM&#xff1a;是MySQL默认的表格类型&#xff0c;具有较高的性能和较小的存储空间占用。但是&#xff0c;MyISAM不支持事务、崩溃恢复和数据行级锁定。 InnoDB&#xff1a;是MySQL提供的一个更强大…

理解基本的Android编程 (1/2)

1、Android概述 Android 是一个开源的&#xff0c;基于 Linux 的移动设备操作系统。 Android开发优势 开放源代码 众多开发者及强大的社区 不断增长的市场 国际化的App集成 低廉的开发成本 更高的成功几率 丰富的开发环境 Android应用程序 Android 应用程序一般使用…