GPT-AI 使用的技术概览

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3ds Max图文教程: 创建致命的冠状病毒动画

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 病毒建模 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 在透视视口中创建一个半径为 50,线段为 20 的 GeoSphere。 创建地球 步骤 3 打开修改器列表并将置换修改器应用于地理 球。 置换…

Linux系统MySQL中用户的权限管理

本节主要学习用户权限管理的概述,用户权限类型,用户赋权,权限删除,用户删除等。 目录 一、概述 二、用户权限类型 三、用户赋权 四、权限删除 五、用户删除 一、概述 数据库用户权限管理是数据库系统中非常重要的一个方面&am…

Dockerfile 创建镜像,构建LNMP+wordpress架构

目录 一、Dockerfile 构建镜像 1.Dockerfile 构建 nginx镜像 1.1创建 nginx Dockerfile 目录 1.2编写 Dockerfile 文件 1.3构建nginx镜像 2.Dockerfile 构建 mysql 镜像 2.1创建 mysql Dockerfile 目录 2.2修改mysql配置文件 2.3编写 Dockerfile 文件 2.4构建mysql镜…

ChatGPT伦理挑战:人工智能的权利与责任

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

全志F1C200S嵌入式驱动开发(触摸屏驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 触摸屏一般有两种,一种是电阻触摸屏,一种是电容触摸屏。前者需要自己买一颗i2c的信号读取芯片,用的比较多的是ns2009。后者自身集成了读取芯片,用的比较多的是gt911。正好之前测…

(十三)定时任务

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 13 章 定时任务 13.1 什么是定时任务 1、InfluxDB任务是一个定时执行的FLUX脚本,它先查询数据…

Docker啥是数据持久化?

文章目录 数据持久化数据卷相关命令创建读写数据卷创建只读数据卷数据卷共享数据卷容器实现数据卷共享nginx实现数据卷共享nfs总结 Dockerfile持久化Dockerfile方式docker run总结 数据持久化 ​ 在容器层的 UnionFS(联合文件系统)中对文件/目录的任何修…

SRC | 逻辑漏洞原理及实战

前言 作者简介:不知名白帽,网络安全学习者。 博客主页:不知名白帽_网络安全,CTF,内网渗透-CSDN博客 网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan 目录 逻辑漏洞基础 概述 分类 URL跳转漏洞 概述 危害 漏洞…

Android:RecyclerView封装,打造列表极简加载

前言 mBinding.recycler.linear().divider().set<OrdinaryListBean> {addLayout(R.layout.layout_ordinary_item)}.setList(getList()) 如果我要说&#xff0c;除了数据和布局之外&#xff0c;以上的几行代码&#xff0c;就实现了一个列表加载&#xff0c;有老铁会相信…

Django学习笔记-表单(forms)的使用

在Django中提供了了form表单&#xff0c;可以更为简单的创建表单模板信息&#xff0c;简化html的表单。 一、网页应用程序中表单的应用 表单通常用来作为提交数据时候使用。 1.1 创建表单模板文件夹 在项目文件夹下创建一个template文件夹&#xff0c;用于存储所有的html模…

XCP详解「总目录」

目录 XCP详解「总目录」 1 概览 2 理论 3 实践 4 其他 XCP详解「总目录」 基础学习&#xff0c;慢慢补充 1 概览 2 理论 3 实践 XCP详解「3.1ASAP2新建A2L文件」 XCP详解「3.2CANape新建工程导入A2L」 XCP详解「3.3A2L信号添加和更新」 XCP详解「3.4CANape中新建A2L文…

学习 C语言第二天 :C语言数据类型和变量(下)

目录&#xff1a; 1.变量的介绍以及存储 2.算术操作符、赋值操作符、单目操作符 3.scanf和printf的介绍 1.变量的介绍以及存储 1.1.变量的创建 了解了什么是类型了&#xff0c;类型是用来创建变量的。 变量是什么呢&#xff1f;在C语言当中不经常变的量称为常量&#xff0c;经常…

Qt : day1

1.聊天界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {qDebug() << this->size(); //获取当前页面尺寸this->setFixedSize(500, 600); //设置固定尺寸this->setWindowTitle("聊天框"); //设置窗口…

OpenAI Code Interpreter 的开源实现:GPT Code UI

本篇文章聊聊 OpenAI Code Interpreter 的一众开源实现方案中&#xff0c;获得较多支持者&#xff0c;但暂时还比较早期的项目&#xff1a;GPT Code UI。 写在前面 这篇文章本该更早的时候发布&#xff0c;但是 LLaMA2 发布后实在心痒难忍&#xff0c;于是就拖了一阵。结合 L…

mybatisPlus入门篇

文章目录 初窥门径1.1 初识MybatisPlus1.2 MybatisPlus的特性1.3 MybatisPlus的架构模型 入门案例2.1 准备相关开发环境2.2 搭建springboot工程2.3 创建数据库2.4 引入相关依赖2.5 创建实体类2.6 集成MybatisPlus2.7 单元测试2.8 springboot日志优化 初窥门径 1.1 初识Mybatis…

【TiDB理论知识06】PD架构与作用

目录 一 PD的架构与功能 PD架构 PD作用 名词解释 路由功能 二 TSO的分配 概念 分配过程 性能问题 高可用问题 三 PD的调度原理 总流程 1 信息收集 2 生成调度 3 执行调度 四 Label的作用 Label的配置 给TiKV打标签 PD配置 一 PD的架构与功能 PD架构 PD集群…

GPT-4 模型详细教程

GPT-4&#xff08;Generative Pretrained Transformer 4&#xff09;是 OpenAI 的最新语言生成模型&#xff0c;其在各类文本生成任务中表现优秀&#xff0c;深受开发者和研究者喜爱。这篇教程将帮助你理解 GPT-4 的基本概念&#xff0c;并向你展示如何使用它来生成文本。 什么…

二叉树详解

这里写目录标题 前言树型结构(了解)树常见的概念树的表示形式&#xff08;了解&#xff09;树的应用 二叉树概念两种特殊的二叉树二叉树的性质(重要)二叉树的存储二叉树的基本操作 前言 本篇博客讲述了以下几个知识点 树的基本概念二叉树概念及特性二叉树的基本操作 树型结构…

DevExpress WPF Tree List组件,让数据可视化程度更高!(一)

DevExpress WPF Tree List组件是一个功能齐全、数据感知的TreeView-ListView混合体&#xff0c;可以把数据信息显示为REE、GRID或两者的组合&#xff0c;在数据绑定或非绑定模式下&#xff0c;具有完整的数据编辑支持。 DevExpress WPF 拥有120个控件和库&#xff0c;将帮助您…

一遍过JavaSE基础知识

文章目录 前言安装Java Development Kit (JDK)安装jdk配置开发环境验证是否安装配置成功 编写第一个Java程序hello world运行Java程序的流程 数据类型和变量数据类型变量 程序逻辑控制条件语句循环语句跳转语句 数组声明和创建数组访问数组元素数组长度遍历数组多维数组 面向对…