【GPT概念01】生成式预训练转换器

news2024/11/29 12:31:18

一、说明

        本文对GPT有所描述,主要解释了GPT的重要环节:only解码器。以及这个过程中,原始数据的维度演进、变化过程。对于想知道GPT内结构的朋友能有一定帮助。

二、唯一解码器模型入门 — 因果语言建模

        Decoder only Model:唯一解码器,指摒弃词汇中一词多意,指向唯一概念。

        目标是预测词汇量的分布,我们可以看看是否可以使用转换器作为函数来预测这种分布。

为此,我们可以考虑 3 种可能性:

三、唯一解码器的型号有哪些?

        这就是香草解码器模型如何具有自注意力、交叉注意力和前馈网络。

        输入是一个单词序列,其中给定的 k 个单词将用于预测 k+1 个单词,这是语言建模的基本任务。这个 k 可以从 0 开始,即,如果我们没有得到任何单词,那么它将以 <go> 开头并预测第一个单词,给定第一个单词,我们预测第二个单词,它像这样迭代,直到任务完成。在这里,我们希望模型只看到现在和过去的输入。我们可以通过应用掩码并将所有未来单词的权重归零来实现这一点。

        在训练过程中,我们实际上拥有所有数据,其中整个文档和整个段落,我们假设我们想要预测第 5 个单词——预测第 5 个单词之后的内容是没有意义的,因为之后是模型要预测的任务,它必须首先生成第 5 个单词,然后获取 5 个单词并生成第 6 个单词——如果我们已经假设会发生什么在第 5 个单词之后,预测第 5 个单词的任务将变得更加容易,在现实世界中,当使用模型时,它将无法访问第 6、7 或第 8 个单词,因为我们希望用户给出提示并完成以下句子“我要”,然后它就停止了,它不会给你其余的上下文。在训练时,我们可以自由地了解整个上下文和整个段落,但我们必须解决这个问题。我们不能利用这种自由,我们必须放弃这些信息。因此,我们只能查看现在和过去的输入——我们可以通过应用掩码来实现这一点,所以当我们计算剩余元素的注意力时,我们只是像往常一样做所有事情,但最后当我们试图计算注意力权重时,我们只是应用掩码并将所有未来单词的权重归零, 这就像说我们将对 i = 1 到 T(序列长度)进行求和一样好。所以现在新的第 j 个表示包含所有关键字,我们不需要所有关键字,而只想要我们被允许看到的前 k 个单词。因此,对于所有其他剩余的 i,我们将使所有 alpha 为 0。如何在数学上做到这一点,我们添加了掩码矩阵,它包含-无穷大,可以确保秤数变为 0。

        这个求和方程不是所有 T 元素的总和,而是我们只想通过使所有其他元素的 alpha 为 0 来对第一个“k”元素求和——这就是掩码概念的全部内容。

        我们可以通过应用掩码矩阵来实现这一点。屏蔽多头注意力层是必需的,但我们不需要任何交叉注意力,因为这里我们只处理仅解码器模型,这里没有编码器概念。这就是仅解码器模型的样子。

        输出表示链式规则中的每个术语,因此第一个实例是预测任何采用任何 V 单词词汇表的任何单词的第一个单词分布的概率。

        P(x1) 是一个边际分布,它不以任何条件为条件,它只是一个第一个词。在每个阶段,我们都在预测词汇的分布。然而,这一次的概率是由模型的参数决定的,即,假设 trasformer 中的所有参数(如 W、Q、V 和 FFN 的参数)都给定了,我们假设它们是 Theta 的一部分。 现在,如果给定带有 3 个单词 (go, I, am) 的输入和 (I, am) 的嵌入 (n dim) 也被训练并且是 theta 的一部分,并且确实传递到转换器中,并且还进行了某种计算,从而产生带有 softmax 的输出。这给出了变压器使用变压器的参数计算的概率分布。

        因此,目标是最大化似然 L(theta)。因此,如果我们使用第一个单词<go>那么第一个概率输出单词必须以 P(I) 为最大值,现在当我们将“I”作为第二个单词作为输入时,概率 P(x2 = am/x1= I) 必须最大化。这是一个迭代反向传播算法,我们将不断调整参数 theta,直到在一段时间内,概率开始对齐,实际上希望它们对齐,最后正确的词获得最大概率。

        现在让我们来看看生成式预训练转换器 (GPT) 模型的外观——现在我们可以创建一个经过修改的去码器层(称为 transformer 块)的堆栈 (n)。设 X 表示输入序列

        现在让我们看一下类似的东西:

  • 训练所依据的数据?
  • 架构 — 有多少个维度?有多少注意力头?计算参数总数?

四、输入数据规模(来自图书语料库)

  • 它包含 7000 本独特的书籍、7400 万个句子和大约 10 亿个单词,涵盖 16 种类型。
  • 此外,它还使用长距离连续文本(即,没有句子或段落的洗牌)。
  • 序列长度“T”是 512 个标记或上下文大小,并且是连续的。
  • 它有一个分词器,即字节对编码。
  • 词汇量为40478个单词。
  • 嵌入维度为 768

模型

  • 包含 12 个解码器层(变压器模块)
  • 上下文大小:512 → 512 个输入/令牌一次 (T)
  • 注意头 : 12
  • 前馈网络层大小:768 x 4 倍 = 3072
  • 激活: 高斯误差线性单元 (GELU)

        这种激活来自 FFN,它们使用 Dropout、层归一化和残差连接来实现,以增强训练期间的收敛性。FFN 将采用 768 维输出,该输出由 12 个注意力头 (64 x 12) 计算得出,其中每个头产生 64 维输出并连接以获得与每个令牌的输入维度大小相匹配的 768 维输出。因此,这些变压器块中的每一个都将提供 768 维的输出,但在每个具有 FFN 的变压器块之间转换为 768 x 4 = 3072 并转换或缩小回 768 维输出。

        我们以 512 个代币的样本输入数据为例(假设数据以空格作为拆分为代币的标识符)

        如果我们将整个 512 个令牌输入给 transformer 块,每个令牌都有相应的词嵌入。此输入将是 T x d 模型,即 768。每个嵌入的大小为 768 或 dmodel,我们有 T 个这样的嵌入。所以输入大小是 T x dmodel,所以对于每一层,我们将有 T x dmodel 输出,直到最后一层,在最后一层,我们转换为 softmax,我们将预测 T 概率分布。这都是应用的掩码,因此我们能够并行执行所有这些过程,并且我们确保在每个阶段我们都不会着眼于未来,并且所有概率都是并行产生的。

        这就是一个训练批次(批次大小 = 1)的样子,其中包含 512 个令牌,该令牌被传递到第一个 transformer 块中,然后传递到多头掩码注意,然后转到 FFN。

        让我们看看多头蒙面注意力是什么样子的。第一个头将获取所有这些 512 个标记,它将生成 Q、K、V 向量并执行整个操作,直到 MatMul 并再次给出 512 个向量。每个向量的大小将为 dmodel/#heads = 768/12 = 64。因此,它产生每个单独的磁头输出,然后连接以获得 768 输出大小。

        所有 12 个磁头输出并行生成,以产生 64 维向量,然后连接到 768 维输出。因此,这将发生在所有 512 个输入令牌上。最后,我们得到这样的 512 x 768 向量,输入数将与输出数相同,并且每一层都相同。所以我们有一个 512 x 768 的输入,它进入了屏蔽的注意力,并给出了 512 x 768 的输出。这 768 个输出中的每一个都进入了线性变换,这在某种程度上完成了一个蒙面多头注意力的周期。此时,我们得到了所有 512 个新表示,每个表示的大小为 768。

        在添加一个 dropout 层并查看残差连接是如何传递的(基本上从原始输入流出)后,我们得到了一个 H1 = X + H 的输出,它的大小同样是 512 x 768,它应该传递到 FFN,让我们看看它是什么样子的。

        现在,所有 768 大小的 512 个代币都将进入 FFN 并产生 3072 个中间 vecrtor 大小,然后再次生成最终的 768 大小向量。因此,同样,这将对所有 512 个代币完成。下图仅针对其中一个令牌以及传递到隐藏层的 GELU 激活完成。

如上所示,这是网络输出的一个块的样子。

回顾一下到目前为止发生的事情:

  • 取一大块连续的文本,即 512 个标记
  • 将其馈送到变压器层和每一层,我们再次产生 512 个输出,直到最后一层
  • 在最后一层,我们应用 softmax 将其转换为 512 个概率,即 P(x1)、P(x2/x1)、P(x3/x1,x2)...........P(x512/x1,x2,x3...x511)
  • 所有这些预测都是同时发生的,而面具确保我们看不到任何未来的词语,或者看不到的词语

现在让我们检查一下参数的数量:

token 嵌入 : |v|x Embedding_dimension

= 40478 x 768 = 31 x 10⁶ = 31M

~40K 单词中的词汇和 dmodel 是 768 个维度。

位置嵌入 :上下文长度 x embedding_dimensions

= 512 x 768 = 0.3 x 10⁶ = 0.3M

总计 = 仅在输入层中提供 31.3 M 个参数(嵌入和位置嵌入)

位置嵌入也是学习的,这与原始变压器不同,原始变压器使用固定正弦嵌入来编码位置。

        对于注意力参数,我们有 3 个矩阵 Wq、Wk 和 Wv,每个矩阵接受 768 维输入并转换为 64 维输出,因此矩阵将是 768 x 64 — 这是每个注意力头,我们有 3 个这样的矩阵,因此 3 x (768 x 64) ~ 147 x 10³。所以我们有 12 个这样的头,因此参数将是 12 x 147 x 10³ ~ 1.7M。然后考虑一个线性层,其中我们有 768 维,这是一个串联的输出 (64 x 12),乘以 Wo(768 x 768 维)得到 768 向量 — 768 x 768 ~ 0.6M。因此,最后,对于所有 12 个块,在所有层中总和的蒙面多头自注意力存在 ~27.6M 参数。

        分别为 3072 和 768 的偏差以及 2 x (768 x 3072) 将最终给出 FFN 参数,一个块的总和为 4.7M。因此,当对所有 12 个块进行时,它是 12 x 4.7 ~ 56.4M

        在完整的变压器结束时,我们将获得 768 维尺寸输出,该输出再次转换为 40478 尺寸,我们需要 768 x 40478 矩阵才能获得 40478 尺寸。初始输入嵌入矩阵的大小为 40478 x 768。这些输入和输出矩阵可以共享,因此它们不作为参数包含在内。

        与目前市场上的 SOTA 模型相比,该 GPT-1 模型的参数较少。

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

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

相关文章

Go web 基础相关知识

Go web Web工作方式 浏览器本身是一个客户端&#xff0c;当你输入URL的时候&#xff0c;首先浏览器会去请求DNS服务器&#xff0c;通过DNS获取相应的域名对应的IP&#xff0c;然后通过IP地址找到IP对应的服务器后&#xff0c;要求建立TCP连接&#xff0c;等浏览器发送完HTTP …

QT配置libtorch(一步到位!!!防止踩坑)

QT配置libtorch Qt下载QT配置MSVCQT配置Libtorch Qt下载 Qt点击下载 Qt的安装选择MSVC2017 64-bit(一定要安装&#xff0c;这关乎后面的配置&#xff01;&#xff01;&#xff01;)&#xff0c;其他的根据自己的选择进行安装 QT配置MSVC Visual Studio点击安装 这里需要安装VS以…

PwnLab靶场PHP伪协议OSCP推荐代码审计命令劫持命令注入

下载链接&#xff1a;PwnLab: init ~ VulnHub 安装&#xff1a; 打开vxbox直接选择导入虚拟电脑即可 正文&#xff1a; 先用nmap扫描靶机ip nmap -sn 192.168.1.1/24 获取到靶机ip后&#xff0c;对靶机的端口进行扫描&#xff0c;并把结果输出到PwnLab文件夹下&#xff0c;命名…

Spark相关

1.Hadoop主要有哪些缺点&#xff1f;相比之下&#xff0c;Spark具有哪些优点&#xff1f; Hadoop主要有哪些缺点&#xff1a;Hadoop虽然已成为大数据技术的事实标准&#xff0c;但其本身还存在诸多缺陷&#xff0c;最主要的缺陷是 MapReduce计算模型延迟过高&#xff0c;无法胜…

Swift中 any some的作用

前言 在学习Swift ui看到一个函数返回了some view。view我可以理解那some是什么&#xff1f; //ContentView.swift struct ContentView_Previews: PreviewProvider{static var previews: some View{ContentView()} }如果你仔细看一些官方文档甚至还有any关键字&#xff0c;也…

GPT实战系列-智谱GLM-4的模型调用

GPT实战系列-智谱GLM-4的模型调用 GPT专栏文章&#xff1a; GPT实战系列-实战Qwen通义千问在Cuda 1224G部署方案_通义千问 ptuning-CSDN博客 GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-让CodeGeeX2帮…

日本技术,马来西亚制造:NBR SELE COT无硫手指套的革命性性能

在现代工业领域&#xff0c;对于保持生产环境的洁净和高效至关重要。而一种名为NBR SELE COT的无硫手指套正是满足这一需求的理想选择。这款手指套由日本技术开发&#xff0c;采用马来西亚原材料制造&#xff0c;凭借其卓越的性能在工业行业中广受好评。 NBR SELE COT手指套具有…

云平台一键迁移(腾讯云windos服务器迁移到阿里云windos服务器)

参考文档 https://help.aliyun.com/zh/smc/use-cases/one-click-cloud-platform-migration 迁移文档 https://cloud.tencent.com/document/product/598/37140 #腾讯密钥创建 https://cloud.tencent.com/document/product/1340/51945 安装腾讯云自动化服务助手 一.导入迁移…

web前端框架设计第二课-Vue.js简介

web前端框架设计第二课-Vue.js简介 一.预习笔记 1.Vue.js概述 Vue.js是一套用于构建用户界面的渐进式框架。本质上是一个用于开发Web前端界面的库&#xff0c;其本身具有响应式编程和组件化的特点。 Vue.js的特性&#xff1a; 轻量级 数据绑定 应用指令 插件化开发 2.V…

Flink中JobManager与TaskManage的运行架构以及原理详解

Flink中JobManager与TaskManage的运行架构详解 整体架构 Flink的运行时架构中&#xff0c;最重要的就是两大组件&#xff1a;作业管理器&#xff08;JobManger&#xff09;和任务管理器&#xff08;TaskManager&#xff09;。对于一个提交执行的作业&#xff0c;JobManager是真…

云原生:重塑未来应用的基石

随着数字化时代的不断深入&#xff0c;云原生已经成为了IT领域的热门话题。它代表着一种全新的软件开发和部署范式&#xff0c;旨在充分利用云计算的优势&#xff0c;并为企业带来更大的灵活性、可靠性和效率。今天我们就来聊一聊这个热门的话题&#xff1a;云原生~ &#x1f4…

web服务架构

1 Web服务器&#xff08;如Nginx、Apache等&#xff09;和Web应用框架&#xff08;如Flask、Django等&#xff09; Web服务器&#xff08;如Nginx、Apache等&#xff09;和Web应用框架&#xff08;如Flask、Django等&#xff09;在Web应用开发和部署中扮演着不同的角色&#xf…

飞天使-k8s知识点26-kubernetes温故知新1-pod

文章目录 创建一个podpod的启动命令和参数更改pod 镜像拉取策略 pod 的三种探针pod 探针的实现方式prestop 和 prestart 创建一个pod apiVersion: v1 # 必选&#xff0c;API 的版本号 kind: Pod # 必选&#xff0c;类型 Pod metadata: # 必选&#xff0c;元数据name: nginx # …

类和对象-3

文章目录 拷贝构造函数运算符重载 拷贝构造函数 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存在的类类型对象创建新对象时由编译器自动调用。 特点&#xff1a; 拷贝构造函数是构造函数的一个重载形…

K8s-网络原理-上篇

引言 本文是学习《深入剖析K8s》网络原理部分的学习笔记&#xff0c;相关图片和案例可以从https://github.com/WeiXiao-Hyy/k8s_example获取&#xff0c;欢迎Star&#xff01; 网络基础 IP组成 IP地址由两部分组成&#xff0c;即网络地址和主机地址。网络地址表示其属于互联…

GB28181视频汇聚EasyCVR平台接入海康Ehome设备,设备在线但是视频无法播放是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

vivado 物理优化约束、交互式物理优化

物理优化约束 Vivado Design Suite在物理优化过程中尊重DONT_TOUCH特性。它不在具有这些属性的网络或小区上执行物理优化。要加快网络选择过程中&#xff0c;具有DONT_TOUCH属性的网络经过预过滤&#xff0c;不被考虑用于物理优化。此外&#xff0c;还遵守Pblock分配&#xff…

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试)

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试) ​​ ​​ 数据源系统:MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQLAB公司开发&#xff0c;属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在WEB应用方…

Nginx实现原理全解析:构建高效Web服务器的关键

1、Nginx是什么 Nginx&#xff08;engine X&#xff09;是一个开源的轻量级的HTTP服务器&#xff0c;能够提供高性能的HTTP和反向代理服务。与传统的Apache服务器相比&#xff0c;在性能上Nginx占用系统资源更小、支持高并发&#xff0c;访问效率更高&#xff1b;在功能上&…

Linux课程_____网络管理

一、查看接口信息 1. ifconfig 查看所有活动网络接口的信息 ifconfig -a 查看所有网络接口信息 ifconfig 直接加网络接口 查看指定网络接口信息 1.1查看指定接口IP [rootlocalhost ~]# ip addr show ens160 1.2设置网络接口的IP地址 # ifconfig eth0 192.168.152.133 …