一文入门生成式AI(理解ChatGPT的原理)

news2024/11/24 12:25:56

一、什么是生成式AI?

以ChatGPT为代表的生成式AI,是对已有的数据和知识进行向量化的归纳,总结出数据的联合概率。从而在生成内容时,根据用户需求,结合关联字词的概率生成新的内容

可以这么联想,ChatGPT就是一个词语接龙的机器,他会根据你给出的关键词,自动生成关键词的下一个最有可能衔接的词语。比如你说,“世界上最高的山”,ChatGPT就会回答“喜马拉雅山”。

二、怎么得到一个大模型?

大模型需要:算力、数据/存力、算法这三大要素。

算力:即需要GPU、NPU这些硬件进行训练。

数据/存力:生成式AI需要处理和存储大量的数据。以GPT-3为例,光是训练参数就达到了1750亿个,训练数据达到45TB,每天会产生45亿字内容。

算法:生成式AI的主要算法是深度学习。从仿生学的角度,人类希望AI能够模仿人脑的运行机制,对知识进行思考推理——这就是通常所说的深度学习。

三、算法

为了实现深度学习,学者们提出了大量的神经网络架构:

先看三个经典的:

  • 深度神经网络(DNN)是最普遍的神经网络架构,但是随着数据对于网路架构的要求越来越复杂,这种方法逐渐有些吃力。
  • 卷积神经网络(CNN)是一种专门为处理图像数据而设计的神经网络架构,能够有效地处理图像数据,但是需要对输入数据进行复杂的预处理。
  • 循环神经网络(RNN)架构成为处理序列数据的常用方法。

(1)Transformer架构

由于RNN在处理长序列时容易遇到梯度消失和模型退化问题,著名的Transformer算法被提出。

Transformer架构:是目前文本生成领域的主流架构,GPT、llama等LLM(大语言模型)都是基于Transformer实现了卓越的性能。

Transformer架构:主要由输入部分(输入输出嵌入与位置编码)、多层编码器、多层解码器以及输出部分(输出线性层与Softmax)四大部分组成。

  • (1)输入部分:

  • 源文本嵌入层:将源文本中的词汇数字表示转换为向量表示,捕捉词汇间的关系。

  • 位置编码器:为输入序列的每个位置生成位置向量,以便模型能够理解序列中的位置信息。

  • 目标文本嵌入层(在解码器中使用):将目标文本中的词汇数字表示转换为向量表示。

  • (2)编码器部分:

  • 由N个编码器层堆叠而成。

  • 每个编码器层由两个子层连接结构组成:第一个子层是一个多头自注意力子层,第二个子层是一个前馈全连接子层。每个子层后都接有一个规范化层和一个残差连接。

  • (3)解码器部分:

  • 由N个解码器层堆叠而成。

  • 每个解码器层由三个子层连接结构组成:第一个子层是一个带掩码的多头自注意力子层,第二个子层是一个多头注意力子层(编码器到解码器),第三个子层是一个前馈全连接子层。每个子层后都接有一个规范化层和一个残差连接。

  • (4)输出部分:

  • 线性层:将解码器输出的向量转换为最终的输出维度。

  • Softmax层:将线性层的输出转换为概率分布,以便进行最终的预测。

(2)训练

目前有两种训练方式:预训练和SFT(有监督微调)

  • 预训练:是指将一个大型、通用的数据集作为知识喂给AI进行初步学习。经过预训练的模型叫作“基础模型”,它对每个领域都有所了解,但是无法成为某个领域的专家。
  • SFT(有监督微调):SFT是指在预训练之后,将一个特定任务的数据集喂给AI,进一步训练模型。例如,在已经预训练的语言模型基础上,用专门的医学文本来微调模型,使其更擅长处理医学相关的问答或文本生成任务。

四、Transformer里的编码解码到底是什么?

语义的最小单位,是TOKEN,可以翻译成“词元”,它是语言类模型中用数字来表示单词的最小语义单位。

比如下图中这句话“This is a input text.” 首先被 Tokenizer 转化成最小词元,其中[CLS][SEP]为一句话的起始与结束符号(CLS:classification 告知系统这是句子级别的分类的开始、SEP:separator 告知系统结束本句或分割下一句),然后再通过 Embedding 的方式转化为向量。

比如猴子和香蕉,这两个语义关系紧密。原子能和香蕉,差距就比较远。

Transformer中,编码器和解码器中的“码”指的是什么?

以下是ChatGPT-4o-mini给出的答案:

编码器中的“码”

  • 输入表示:编码器接收输入序列(如文本),并将其转换成一个高维的向量表示。这些向量捕捉了输入序列中单词之间的关系和上下文信息。
  • 特征提取:编码器通过多层自注意力机制和前馈神经网络提取特征,使得每个输入的表示包含了其在上下文中的重要性。

解码器中的“码”

  • 生成输出:解码器使用编码器生成的表示以及之前生成的单词,逐步生成目标序列(如翻译后的文本)。这里的“码”指的是解码器对已生成内容的处理和对未来内容的预测。
  • 上下文结合:解码器同样使用自注意力机制来考虑已生成的单词与当前生成位置的关系。

总结来说,“码”在这里代表了对输入和输出数据的数学表示方式,帮助模型理解和生成语言。

总的来说,编码器负责理解和处理输入,而解码器则负责生成输出,二者协同工作以实现有效的序列转换。

参考:

https://baijiahao.baidu.com/s?id=1801561545647449293&wfr=spider&for=pc

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

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

相关文章

(9) protobuf 与cmake

文章目录 概要整体架构流程代码优化 概要 protobuf的安装与用cmake编译protobuf程序 整体架构流程 安装protobuf3 21.12,最新版本好像要用到一个新的库,有点麻烦。 https://github.com/protocolbuffers/protobuf/releases/tag/v21.12 all和cpp后缀的包…

python植物大战僵尸项目源码【免费】

植物大战僵尸是一款经典的塔防游戏,玩家通过种植各种植物来抵御僵尸的进攻。 源码下载地址: 植物大战僵尸项目源码 提取码: 8muq

【前端】prop传值的用法

prop配置项的作用是让组件接收外部传过来的值。 组件标签上传值给vue组件对象 <script> export default {name: HelloWorld,data(){return{ }},props:[name,age] #简单接收 } </script>方式2:利用对象方式设置数据类型进行类型限制 props:{name:String…

kubernetes中pause容器的作用与源码详解

概述 摘要&#xff1a;上一篇文章我们介绍了kubernetes是如何通过pause容器来构建一个pod。本文我们对pause容器做一个总结&#xff0c;并再此基础上次深入浅出&#xff0c;从pause容器的源码详细了解pause容器的实现原理。 正文 pause容器是什么 在 Kubernetes 中&#xff…

echarts 实现中国geo地图自定义贴图实例

文章目录 1. 实现效果2. 设置自定义图片&#xff0c;做好准备3. echarts 实现贴图 1. 实现效果 实现自定义背景图&#xff0c;给echarts地图贴背景图效果&#xff0c; 先准备两张背景图片&#xff0c;一张是默认的&#xff0c;一张是鼠标悬浮替换的&#xff0c;如下两张图 2.…

基于EchoMimic加速版,可编辑标志点控制实现逼真音频驱动的肖像动画

EchoMimic 是蚂蚁集团终端技术部门开发的一项技术,旨在通过音频驱动生成逼真的肖像动画。对于那些初次接触这项技术的用户,本教程将带你逐步了解如何设置开发环境、获取项目代码、安装依赖,并最终成功运行示例生成自己的肖像动画。 文章目录 项目代码安装依赖业务拓展参数调…

webpack的热更新原理

Webpack热更新&#xff08; Hot Module Replacement&#xff0c;简称 HMR&#xff09;&#xff0c;无需完全刷新整个页面的同时&#xff0c;更新所有类型的模块&#xff0c;是 Webpack 提供的最有用的功能之一。 保留在完全重新加载页面期间丢失的应用程序状态。只更新变更内容…

【bug】通过lora方式微调sdxl inpainting踩坑

报错内容 ValueError: Attempting to unscale FP16 gradients. 报错位置 if accelerator.sync_gradients:params_to_clip (itertools.chain(unet_lora_parameters, text_lora_parameters_one, text_lora_parameters_two)if args.train_text_encoderelse unet_lora_parameters…

温湿度传感器SHT20的功能介绍和时序分析

目录 概述 1 认识SHT20 1.1 SHT20介绍 1.2 SHT20属性 1.3 接口介绍 1.4 SHT20的相关命令 1.5 转换时间 2 寄存器操作 2.1 复位操作 2.2 User Register 2.3 CRC Checksum 3 温湿度计算 3.1 相对湿度转换 3.2 温度换算 3.3 转换公式的C语言实现 概述 本文主要介绍…

ChatGLM-6B部署到本地电脑

引言 ChatGLM-6B是由清华大学开源的双语对话大模型&#xff0c;该模型有62亿参数&#xff0c;但在经过量化后模型体积大幅下降&#xff0c;因此不同于其他需要部署到服务器上的大模型&#xff0c;该模型可以部署到本地电脑&#xff0c;那么接下来我们来看看如何部署该模型。 …

OpenAI API key not working in my React App

题意&#xff1a;OpenAI API 密钥在我的 React 应用中不起作用 问题背景&#xff1a; I am trying to create a chatbot in my react app, and Im not able to generate an LLM powered response. Ive been studying documentation and checking out tutorials but am unable …

【CMake】使用CMake在Visual Studio中配置glad和glfw

下载glad和glfw g l a d glad glad下载&#xff1a;glad下载 这个是 g i t h u b github github上的资源&#xff0c;进不去的话就开开魔法。 g l f w glfw glfw下载&#xff1a;glfw下载 下载CMake C M a k e CMake CMake下载&#xff1a; CMake下载 根据自己的平台选择&…

【Java 优选算法】双指针(下)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 有效三角形的个数 题目链接 解法 解法1:暴力枚举--->O(n^3) 解法2:利用单调性,使用双指针来解决---->O(n^2) 优化:对整个数组进行排序先固定最大数在最大数的左…

文心智能体 城市印象之漫行北京 开发分享

城市印象之漫行北京 请点击文心智能体平台AgentBuilder | 想象即现实 (baidu.com) 一、开发灵感 这个智能体为笔者“城市印象”系列当中的作品之一&#xff0c;这个智能体侧重于为用户提供丈量北京的个性化城市之旅&#xff0c;或漫步历史文化街区细细品味&#xff0c;或领略…

动态内存管理之malloc,free,calloc和realloc函数

Hello&#xff0c;各位小伙伴们&#xff0c;小编在这里祝福各位中秋佳节快乐呀&#xff0c;今天让我们来学习一下动态内存管理吧&#xff01; 引言 像我们之前在开辟一段空间的时候你可能会使用整型变量来申请一块空间&#xff0c;或者使用数组来申请一段连续的空间&#xff…

网络协议全景:Linux环境下的TCP/IP、UDP

目录 1.UDP协议解析1.1.定义1.2.UDP报头1.3.特点1.4.缓冲区 2.TCP协议解析2.1.定义2.2.报头解析2.2.1.首部长度&#xff08;4位&#xff09;2.2.2.窗口大小2.2.3.确认应答机制2.2.4.6个标志位 2.3.超时重传机制2.4.三次握手四次挥手2.4.1.全/半连接队列2.4.2.listen2.4.3.TIME_…

复选按钮QCheckBox

使用场景&#xff1a;多选多 文本 // 获取和设置显示的文本 QString text() const void setText(const QString &text) 三态 复选按钮有三种状态 Qt::Checked 选中Qt::Unchecked 非选中Qt::PartiallyChecked 半选中&#xff0c;比如一组复选按钮中&#xff0c;只选择了…

PointNet++改进策略目录

后续我将如何使用文章中创新点加入的PointNet中代码实现部分进行更新 题目原理解析代码改进PointNet改进策略 &#xff1a;模块改进 | LFA | RandLA-Net&#xff0c;通过随机采样与局部特征聚合提升大规模3D点云处理效率✔️❌PointNet改进策略 &#xff1a;模块改进 | Residua…

Renesas R7FA8D1BH (Cortex®-M85)控制SHT20

目录 概述 1 硬件接口介绍 2 SHT20模块 2.1 SHT20简介 2.2 SHT-20模块电路 3 I2C接口实现 3.1 FSP配置I2C 3.2 I2C驱动程序实现 4 SHT20驱动程序 4.1 SHT20驱动代码结构 4.2 源代码文件 5 测试 5.1 测试功能介绍 5.2 测试代码实现 5.3 运行代码 概述 本文主要介…

ubuntu虚拟机装载共享文件夹导致的诡异错误

最近使用vmware station 15 安装了 ubuntu22.04 的虚拟机。在装载共享文件夹不久后便会出现诡异的错误。目前在网络上好像没有人把这归结到装载共享文件夹的问题上&#xff0c;故以供参考。 第一次&#xff1a; 在装载之后大概第二次开机&#xff0c;出现报错界面。 提示蓝牙…