从与原始的Transformer architecture比较来理解GPT

从与原始的Transformer architecture比较来理解GPT

flyfish

一、Transformer architecture

先说名词
不同的文献和资料中有不同的名字,其实是一样的意思
1 编码器-解码器多头注意力机制(Encoder-Decoder Multi-Head Attention Mechanism)
其他名字:
交叉注意力机制(Cross-Attention Mechanism)
源-目标注意力机制(Source-Target Attention Mechanism)
解码器-编码器注意力机制(Decoder-Encoder Attention Mechanism)

2 遮蔽多头自注意力机制(Masked Multi-Head Self-Attention Mechanism )
其他名字:
因果注意力机制(Causal Attention Mechanism)
未来位置遮蔽注意力机制(Look-Ahead Masking Attention Mechanism)
遮蔽自注意力机制(Masked Self-Attention Mechanism)
前向遮蔽注意力机制(Forward Masking Attention Mechanism)
名字很多,意思是一样的

请添加图片描述组成
编码器(Encoder):
编码器由 N 个相同的层堆叠而成,每个层包含两个子层:
多头自注意力机制(Multi-Head Self-Attention Mechanism)
前馈神经网络(Feed-Forward Neural Network)
每个子层后都包含残差连接和层归一化(Layer Normalization)。

解码器(Decoder):
解码器也由 N 个相同的层堆叠而成,每个层包含三个子层:
多头自注意力机制(Masked Multi-Head Self-Attention Mechanism)(带有掩码以防止未来信息泄露)
编码器-解码器多头注意力机制(Encoder-Decoder Multi-Head Attention Mechanism)
前馈神经网络(Feed-Forward Neural Network)
每个子层后也包含残差连接和层归一化。

位置嵌入(Positional Encoding):
为了保留序列的位置信息,通常在输入中加入位置嵌入。

生成器(Generator):
用于将解码器的输出映射到词汇表中的概率分布。

原始的 Transformer 架构中,编码器和解码器的多头注意力机制有以下几种类型

图中流程是从下往上走
编码器:使用一个双向的多头自注意力机制。
解码器:使用一个单向的遮蔽多头自注意力机制(因果注意力机制)和一个双向的编码器-解码器多头注意力机制(交叉注意力机制)

编码器中的多头注意力

  1. 多头自注意力机制(Multi-Head Self-Attention Mechanism)
  • 类型 :双向的(Bidirectional)这种机制允许模型捕捉输入序列中的全局依赖关系,因为它可以同时考虑到元素的前后文。

  • 功能 :对输入序列中的每个位置,通过查看序列中的所有其他位置(包括前后位置)来计算其表示。这种机制允许编码器捕捉输入序列中全局的依赖关系。

解码器中的多头注意力

解码器中的多头注意力机制包括两种类型:

  1. 遮蔽多头自注意力机制(Masked Multi-Head Self-Attention Mechanism)图下部分
  • 类型 :单向的(Unidirectional),又称因果注意力机制(Causal Attention Mechanism)。这种机制用于生成任务中,确保模型生成的每个位置的元素只能依赖于之前生成的元素,而不能依赖于未来的元素。

  • 功能 :对解码器输入序列的每个位置,通过仅查看该位置及其之前的所有位置来计算其表示。这确保了生成过程中的每个步骤只能看到之前生成的内容,而不能看到未来的内容,从而保持生成序列的因果性。

  1. 编码器-解码器多头注意力机制(Encoder-Decoder Multi-Head Attention Mechanism)图上部分
  • 类型 :双向的(Bidirectional),也称交叉注意力机制(Cross-Attention Mechanism)。

  • 位置 :在解码器层中,位于遮蔽多头自注意力机制之后。

  • 功能 :通过查看编码器的输出序列,为解码器提供额外的上下文信息。解码器每个位置通过查看整个编码器输出序列,来生成与输入序列相关的表示。

二、Decoder-Only Transformer Architecture

请添加图片描述Decoder-Only Transformer Architecture 是一种只包含解码器部分的 Transformer 模型。与标准的 Transformer 模型不同,它省略了编码器部分,只使用解码器进行任务处理。GPT-2 就是一个典型的 Decoder-Only Transformer 模型。

组成部分
输入嵌入层(Input Embedding Layer):
将输入的单词或符号嵌入到高维向量空间中。

位置编码(Positional Encoding):
添加位置编码以保留序列中单词的位置信息。

堆叠的解码器层(Stacked Decoder Layers):
多个相同的解码器层堆叠而成,每个解码器层包含:
遮蔽多头自注意力机制(Masked Multi-Head Self-Attention Mechanism)
前馈神经网络(Feed-Forward Neural Network)
残差连接和层归一化(Residual Connections and Layer Normalization)

输出层(Output Layer):
将解码器的输出映射到词汇表中的概率分布。
请添加图片描述GPT-2 是一种典型的自回归架构(autoregressive architecture)模型。

GPT-2 的自回归特性
逐步生成文本:
GPT-2 在生成文本时,通过逐步生成每个单词,每个生成的单词只依赖于之前生成的单词。

遮蔽多头自注意力机制:
在训练和推理过程中,GPT-2 使用遮蔽多头自注意力机制,确保每个位置只能看到当前位置及其之前的位置,而不能看到未来的位置。

模型结构:
GPT-2 的模型结构是一个 Decoder-Only Transformer,其中的每一层都使用自回归机制进行文本生成。

如果自回归 用数学语言描述是(不喜欢的,可以跳过,不影响理解)

需要理解的基础知识
序列中的每个元素 x t x_t xt 是基于之前生成的元素 x 1 , x 2 , . . . , x t − 1 x_1, x_2, ..., x_{t-1} x1,x2,...,xt1 来生成的,公式如下:
p ( x ) = p ( x 1 ) p ( x 2 ∣ x 1 ) p ( x 3 ∣ x 1 , x 2 ) ⋯ p ( x T ∣ x 1 , x 2 , … , x T − 1 ) p(x) = p(x_1) p(x_2|x_1) p(x_3|x_1, x_2) \cdots p(x_T|x_1, x_2, \ldots, x_{T-1}) p(x)=p(x1)p(x2x1)p(x3x1,x2)p(xTx1,x2,,xT1)

  • 联合概率分布
    p ( x ) = p ( x 1 ) p ( x 2 ∣ x 1 ) p ( x 3 ∣ x 1 , x 2 ) ⋯ p ( x T ∣ x 1 , x 2 , … , x T − 1 ) p(x) = p(x_1) p(x_2|x_1) p(x_3|x_1, x_2) \cdots p(x_T|x_1, x_2, \ldots, x_{T-1}) p(x)=p(x1)p(x2x1)p(x3x1,x2)p(xTx1,x2,,xT1)
    这个公式表示生成序列 x x x 的联合概率等于依次生成每个元素的条件概率的乘积。

  • 逐步生成

    • 第一步,生成第一个元素 x 1 x_1 x1 的概率是 p ( x 1 ) p(x_1) p(x1)

    • 第二步,在已生成 x 1 x_1 x1 的条件下生成 x 2 x_2 x2,其概率是 p ( x 2 ∣ x 1 ) p(x_2 | x_1) p(x2x1)

    • 第三步,在已生成 x 1 x_1 x1 x 2 x_2 x2 的条件下生成 x 3 x_3 x3,其概率是 p ( x 3 ∣ x 1 , x 2 ) p(x_3 | x_1, x_2) p(x3x1,x2)

    • 依此类推,直到生成第 T T T 个元素 x T x_T xT,其概率是 p ( x T ∣ x 1 , x 2 , … , x T − 1 ) p(x_T | x_1, x_2, \ldots, x_{T-1}) p(xTx1,x2,,xT1)

  1. p ( x ) p(x) p(x) :整个序列 x x x 的联合概率分布。
    p ( x ) p(x) p(x) 表示生成整个序列 x x x 的概率。

  2. x x x :序列。
    x x x 是由 T T T 个元素组成的序列,可以是单词、字符或其他符号。
    x x x 通常表示整个序列,例如在文本生成中, x x x 可能是一个句子或段落。

  3. x i x_i xi :序列中的第 i i i 个元素。
    x i x_i xi 表示序列 x x x 中的第 i i i 个元素。例如,在文本生成中, x i x_i xi 可能是一个单词或字符。

  4. p ( x i ∣ x 1 , x 2 , … , x i − 1 ) p(x_i | x_1, x_2, \ldots, x_{i-1}) p(xix1,x2,,xi1) :给定之前的元素 x 1 , x 2 , … , x i − 1 x_1, x_2, \ldots, x_{i-1} x1,x2,,xi1 的条件下,第 i i i 个元素 x i x_i xi 的条件概率。
    这个条件概率表示在已经生成了序列的前 i − 1 i-1 i1 个元素之后,生成第 i i i 个元素的概率。
    例如, p ( x 3 ∣ x 1 , x 2 ) p(x_3 | x_1, x_2) p(x3x1,x2) 表示在已经生成了 x 1 x_1 x1 x 2 x_2 x2 之后,生成 x 3 x_3 x3 的概率。

  5. T T T :序列的长度。
    T T T 表示序列中元素的总数。例如,在文本生成中,如果序列是一个句子, T T T 可能是句子中的单词总数。

三、GPT-2 (Decoder-Only Transformer)(autoregressive architecture)

请添加图片描述输入嵌入层和位置编码
将输入序列的每个单词转换为嵌入向量,并加上位置编码。

遮蔽多头自注意力机制
在每个解码器层中使用遮蔽多头自注意力机制,确保每个位置只看到当前位置及其之前的位置。

前馈神经网络
每个解码器层中包含一个前馈神经网络,用于进一步处理注意力机制的输出。

残差连接和层归一化
每个子层之后使用残差连接和层归一化,以稳定训练过程和加速模型收敛。

输出层
最后将解码器的输出映射到词汇表中的概率分布,用于生成下一个单词

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

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

相关文章

ASP.NET Core中上传文件

1.创建一个文件上传的表单 在一个视图中&#xff08;比如Index.cshtml&#xff09;&#xff0c;添加一个表单来让用户选择文件并上传。 model IFormFile <form method"post" enctype"multipart/form-data"> <div class"form-group"…

爬虫-实战爬取虎扑ACG帖子

要求如下: 爬取虎扑步行街 ACG 版面的数据,要求使用多线程来并发爬取。范围是第一页的所有帖子,每个帖子包含标题、主题内容和第一页的所有回复内容。最后打印出爬到的所有帖子的标题。 网址是:ACG圈 - 虎扑社区。 针对上面的要求,我们进行分析: 首先是要使用多线程范…

韩顺平0基础学java——第39天

p820-841 jdbc和连接池 1.JDBC为访问不同的数据库提供了统一的接口&#xff0c;为使用者屏蔽了细节问题。 2.Java程序员使用JDBC&#xff0c;可以连接任何提供了JDBC驱动程序的数据库系统&#xff0c;从而完成对数据库的各种操作。 3.jdbc原理图 JDBC带来的好处 2.JDBC带来的…

结构体笔记

结构体 C语言中的数据类型&#xff1a; 基本数据类型&#xff1a;char/int/short/double/float/long 构造数据类型&#xff1a;数组&#xff0c;指针&#xff0c;结构体&#xff0c;共用体&#xff0c;枚举 概念&#xff1a; 结构体是用户自定义的一种数据类型&#xff0c…

flink 实现大数据实时数据采集

Apache Flink 是一个流处理框架&#xff0c;用于处理无界和有界数据流。在大数据实时数据采集领域&#xff0c;Flink 凭借其高吞吐量、低延迟和精确的状态管理特性&#xff0c;成为了实现实时数据处理的理想选择。下面将介绍如何使用 Flink 来实现大数据的实时数据采集和处理。…

《Milvus Cloud向量数据库指南》——ChatGLM:从GLM-130B到GLM-4

ChatGLM:从GLM-130B到GLM-4的跨越:智谱AI在通用人工智能领域的深度探索与实践 在人工智能的浩瀚星空中,智谱AI如同一颗璀璨的新星,以其独特的技术视角和坚定的创新步伐,在通用人工智能(AGI)的征途上留下了深刻的足迹。技术生态总监贾伟在近期的一次分享中,不仅为我们描…

20.rabbitmq插件实现延迟队列

问题 前面谈到基于死信的延迟队列&#xff0c;存在的问题&#xff1a;如果第一个消息延时时间很长&#xff0c;而第二个消息延时时间很短&#xff0c;第二个消息并不会优先得到执行。 下载插件 地址&#xff1a;https://github.com/rabbitmq/rabbitmq-delayed-message-excha…

49.TFT_LCD液晶屏驱动设计与验证(2)

&#xff08;1&#xff09;Visio视图&#xff1a; &#xff08;2&#xff09;控制模块Verilog代码&#xff1a; module tft_ctrl(input clk_33M ,input reset_n ,input [23:0] data_in ,output [9:0] hang…

Cortex-M内核M0,M0+,M3,M4,M7之间的区别

之所以ARM公司会把Cortex-M分为这么多系列&#xff0c;主要是针对不同的应用领域&#xff1b;下面详细介绍&#xff1a; Cortex-M分为&#xff1a;M0&#xff0c;M0&#xff0c;M3&#xff0c;M4&#xff0c;M7 M0&#xff0c;M0&#xff1a;基础版本&#xff0c;从图中可以看…

Centos部署PHP

环境&#xff1a;Centos7 安装PHP步骤&#xff1a; 一&#xff1a;安装依赖 yum install epel-release -yyum install gcc openssl-devel libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel -y 二&#xff1a;下载php源码⽂件 cd /usr/local/srcwge…

PLSQL Developer工具查询数据,报错(动态性能表不可访问)

解决的问题&#xff1a; 解决方案&#xff1a; 在配置-首选项-选项&#xff0c;取消勾选“自动统计”&#xff0c;保存之后即可查询数据

WSL快速入门

1. WSL介绍 WSL文档地址&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl WSL&#xff1a;全称 Windows Subsystem for Linux&#xff0c;即windows上的Linux子系统&#xff08;虚拟机工具&#xff09;。是Win10推出的全新特性&#xff0c;可以更轻量地在Windows系统…

【网络安全】子域名模糊测试实现RCE

未经许可&#xff0c;不得转载。 文章目录 正文总结 正文 在之前测试一个私人项目时&#xff0c;我报告了admin.Target.com上的Auth Bypass漏洞&#xff0c;这将导致SQLI&RCE &#xff0c;该漏洞在报告后仅一天就被修复。 现在重拾该应用程序&#xff0c;对子域进行模糊测…

Java整理18

1、AOP AOP概念&#xff1a;通过预编译方式和运行期动态代理方式实现&#xff0c;在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。 动态代理分类:JDK动态代理&#xff1a;有接口代理对象和目标对象实现同样的接口cglib动态代理&#xff1a;无接口继承被代理的目…

Symfony 表单构建器:创建和管理表单的最佳实践

Symfony 表单构建器&#xff1a;创建和管理表单的最佳实践 Symfony 是一个流行的 PHP 框架&#xff0c;以其强大的功能和灵活性闻名。表单构建器是 Symfony 中一个非常重要的组件&#xff0c;它提供了简单且高效的方式来创建和管理表单。本文将详细介绍 Symfony 表单构建器的最…

利用jdk自带keytool工具生成jks签名文件注意事项

如题&#xff0c;用三个不同版本jdk生成jks文件&#xff0c;并配置到Android Studio里面验证&#xff0c;结果如下&#xff1a; jdk1.8&#xff1a;正常 jdk11、jdk17&#xff1a;出错&#xff0c;错误日志如下 FAILURE: Build completed with 2 failures.1: Task failed with…

RAG技术之Router

Router有什么用&#xff1f; 在RAG应用中&#xff0c;Router可以帮助我们基于用户的查询意图来决定使用何种数据类型或数据源&#xff0c;比如是否需要进行语义检索、是否需要进行text2sql查询&#xff0c;是否需要用function call来进行API调用。 Router也可以根据用户的查询…

麦田物语第十五天

系列文章目录 麦田物语第十五天 文章目录 系列文章目录一、构建游戏的时间系统二、时间系统 UI 制作总结 一、构建游戏的时间系统 在该游戏中我们要构建年月日天时分秒等时间的概念&#xff0c;从而实现季节的更替&#xff0c;昼夜的更替等&#xff08;不同的季节可以播种不同…

qt总结--翻金币案例

完成了一个小项目的在qt5.15.2环境下的运行,并使用NSIS editNSIS打包完成.有待改进之处:增加计时功能,随机且能通关功能,过关后选择下一关功能.打包后仅仅有安装包有图标 安装后应用图标并未改变 在qt .pro中有待改进对qt的基本操作和帮助文档有了基本的认识.对C制作小游戏有了…