首页 > 其他分享 >transformer总体架构

transformer总体架构

时间:2023-12-20 20:11:59浏览次数:41  
标签:总体 编码 transformer 架构 位置 子层 输入 注意力 向量

transformer总体架构

目录

论文地址:Attention is All You Need https://arxiv.org/pdf/1706.03762.pdf

循环神经网络

  • 长距离衰减问题,距离过长导致梯度消失或爆炸

  • 解码阶段,越靠后的内容,翻译效果越差

  • 解码阶段缺乏对编码阶段各个词的直接利用

  • 无法并行,速度较慢,RNN会依赖前一时刻输出的隐层状态

总体架构

6550d78fc458853aef9b569a.png

Transformer的基本结构,通过例图可看出transformer是由encoder与decoder构成

左边的部分是编码器Encoder,右边的部分是解码器Decoder,根据不同的任务需要,使用对应的部分,一般编码器部分常用于文本编码分类,解码器部分用于语言模型生成,

EncoderDecoder都包含6个block层,编码器和解码器并不是简单的串联关系。

img

Encoder

  • 每个编码器由两个子层结构组成
  • 第一个子层包括 一个多头自注意力子层, 规范化层、残差连接
  • 第二个子层包括 一个前馈全连接层、规范化层、残差连接

Decoder

  • 第一个子层包括 一个多头自注意力子层、规范化层、残差连接
  • 第二个子层包含 一个多头注意力子层、规范化层、残差连接
  • 第三个子层包含 一个前馈全连接层、规范化层、残差连接

编码器Encoder

编码器Encoder 由6个相同层block组成,每一层由相同的两部分组成:一个多头注意力层和一个Feed Forward层。这两个部分后面都进行残差连接和LayerNorm归一化。Feed Forward层其实就是简单的MLP层,由两个线性层组成,中间用LeRU函数进行激活。多头注意力层在后续第3节会讲解。

  • 编码器Encoder:每一层都有两个子层。

  • 第一层是一个多头注意机制 (Multi-Head Attention)

  • 第二层是简单的、位置完全连接的Feed Forward(Feed Forward Neural Network 前馈神经网络),由两个线性变换组成,之间有一个ReLU激活。

  • 每个子层会叠加一个Add&Norm, 即采用残差连接,接着进行特征归一化(标准化),每个子层的输出都是LayerNorm(x +Sublayer(x)),其中Sublayer(x) 是由子层本身实现的函数。

解码器Decoder

解码器Decoder 也是由6个相同层组成,每一层由相同的三部分组成:一个带掩码的多头注意力层、一个多头注意力层和一个MLP层。与编码器一样都在各部分后添加残差和LayerNorm归一化,不同的是在多头注意力层中输入的是由编码器输出的key、value和经过带掩码的多头注意力层输出的query

  • 第一层是Masked Multi-Head Attention (掩码多头注意力)

  • 第二层是Cross) Multi-Head Attention (多头注意力层)

输入输出层

模型输入

获取输入数据的向量 XX由数据的 Embedding 和 位置的 Position 相加得到。

  • 输入数据,将文本信息转化成词向量 inputs embedding 
  • 输入位置信息,由于输入的是序列数据,有着较为严格的前后顺序,因此需要输入序列数据的同时输入位置信息

inputs embedding(词嵌入) 负责将自然语言转化为与其对应的独一无二的词向量表达

词向量模型:https://juejin.cn/post/7297440438235398198

Position Embedding(位置嵌入) 表示单词出现在句子中的位置。理由是Transformer是使用全局信息,无法捕捉到序列顺序信息的,需要使用Position Embeddin表示句子位置。

位置编码

位置编码positional encodings位置编码是直接加在输入的 $a= \left { a_1,a_2,...,a_n \right } $ 中, 即输入的 $pe= \left { pe_1,pe_2,...,pe_n \right } $ 和 $a= \left { a_1,a_2,...,a_n \right } $ 有相同的维度大小。

  • 方案1,绝对位置编码
  • 方案2,可训练的位置编码

绝对位置编码:

​ 给每个位置的位置信息建模,最简单的实现方式:使用每个词汇的次序 1,2,...,T 作为位置编码信息。例如,BERT使用的是Learned Positional Embedding(可学习的位置嵌入),先初始化位置编码,再放到预训练过程中,训练出每个位置的位置向量。

绝对位置编编码的问题:

  • 文本较长位置序列没有边界,超出范围的序列无法处理

  • 归一化同样也存在问题,不同长度的位置编码的步长是不同的,较短的文本和较长的文本,相邻两字,编码上量级不同,长文本的相对位置关系被稀释。

引入相对位置编码的需求:

  • 能够体现词汇在不同位置的区别,同一个词汇在不同的位置的区别
  • 能够体现词汇的先后次序,编码长度不依赖文本长度
  • 值域范围限制

文中Transformer使用的是正余弦位置编码。位置编码通过使用不同频率的正弦、余弦函数生成,然后和对应的位置的词向量相加,位置向量维度必须和词向量的维度一致。

关于位置编码transform采用了正弦和余弦函数,公式如下:

img

pos表示数据在序列中的绝对位置,pos=0,1,2...., dmodel表示词向量的维度,2i,2i+1表示奇偶性

详细关于位置编码的理解和解释: (https://juejin.cn/post/7241859817563258917)

模型输出

在Decoder之后添加一层 Linear, 一层Softmax构成输出

输出层 在Transformer中输出层由softmax和线性层组成。输出层可以针对不同下游任务进行更换和调整,以适应不同的任务需要。

自注意力机制

参考:https://juejin.cn/post/7241859817563389989

核心公式

自注意力容许输入的每个输入的信息,给Attention的输入都来自同一个序列

对于每个token,先产生三个向量query,key,value

关于QKV的理解

Query,Key,Value的概念取自于信息检索系统,例如在搜索引擎搜索某个信息,在搜索引擎上输入的内容便是Query,然后搜索引擎根据Query为你匹配Key,然后根据Query和Key相似度得到匹配的内容Value

q 代表query,代表要查询的信息,后续会去和每一个k进行匹配
k 代表key, 代表索引,也就是被查询的向量, 后续会被每个q匹配
v 代表value,代码查询到的值,
后续q 和k 匹配的过程可以理解成计算两者的相关性,相关性越大对应v的权重也就越大

img

self-attention计算框架(图片来自李宏毅老师课堂ppt)

计算示意图,图的token a2为例

  • 它产生一个query,每个query都去和别的token的key做 某种方式 的计算,得到的结果我们称为attention score(即为图中的 α)。则一共得到四个attention score。(attention score又可以被称为attention weight)。

  • 将这四个score分别乘上每个token的value,我们会得到四个抽取信息完毕的向量。

  • 将这四个向量相加,就是最终a2过attention模型后所产生的结果b2。

Q, K, V 及注意力计算

可参考:https://zhuanlan.zhihu.com/p/338817680

1 - 先生成三个向量query,key,value

假设输入序列长度为2,\(x_1,x_2\) 然后 通过 input Embedding 映射成 \(a_1,a_2\) ,然后通过三个可学习的变换矩阵 $ W_q,W_k,W_v$ 得到相应的 $q1,k1,v^1, q2,k2,v^2 $

\[\begin{matrix} Q=XW^Q \\ K=XW^K \\ V=XW^V \end{matrix} \]

2 - 计算注意力得分, 计算Q与每个单词的K的点积,注意是当前Q与所有的k的运算

3 - 需要除以一个特定的值,让梯度更加稳定

4 - 将结果进行Softmax标准化得到掩盖率(主要是为了保持我们想要关注的单词的值不变,而掩盖掉那些不相关的单词),之后将 V 向量与标准化的结果相乘,得到新的 V

5 - 最后将各个 V 的结果相加

Transformer模型的核心是自注意力机制(Self-Attention Mechanism)

其作用是为每个输入序列中的每个位置分配一个权重,然后将这些加权的位置向量作为输出。

自注意力机制的计算过程包括三个步骤:

  1. 计算注意力权重:计算每个位置与其他位置之间的注意力权重,即每个位置对其他位置的重要性。
  2. 计算加权和: 将每个位置向量与注意力权重相乘,然后将它们相加,得到加权和向量。
  3. 线性变换: 对加权和向量进行线性变换,得到最终的输出向量。

通过不断堆叠多个自注意力层和前馈神经网络层,可以构建出Transformer模型。

多头注意力机制

在Transformer中,注意力模块会并行地重复计算多次。其中的每一次计算被称为一个注意力头(Attention Head)。注意力模块将其Query、Key和Value参数分成N份,然后将每一份独立地通过一个单独的Attention Head进行处理。所有这些Attention计算结果最终被融合在一起,形成最终的注意力分数。这被称为多头注意力,使得Transformer能够更好地捕捉每个单词之间的多重关系和细微差别。

Multi-Head Attention相当于 h 个不同的self-attention的集成(ensemble),在这里我们以h=8 举例说明,如下图,

1、数据X分别输入到上述的8个self-attention 中,得到8个加权的特征矩阵$$Z_i,i={1,2,3,..,8}$$

2、将8个Z 按照列拼接Concat成一个大的特征矩阵

3、特征矩阵经过一层全连接层Linear输出得到Z

多头注意力机制作用

​ 自注意力机制的缺陷就是:

​ 模型在对当前位置的信息进行编码时,会过度的将注意力集中于自身的位置

​ 多头注意力机制融合了来自于相同的注意力池化产生的不同的知识,这些知识的不同来源于相同的查询、键和值的不同的子空间表示。

​ 基于这种设计,每个头都可能会关注输入的不同部分。可以表示比简单加权平均值更复杂的函数。

多头attention 结构就是 QKV 首先进过一个线性层,然后输入到放缩点积attention, 要做h次,每一次算一个头,每次的参数不共享。

原论文原文中解释了多头的作用:将隐状态向量分成多个头,形成多个子语义空间,可以让模型去关注不同维度语义空间的信息(或者说让模型去关注不同方面的信息)。

总之就是:当给定相同的查询、键和值的集合时,我们希望模型可以基于相同的注意⼒机制学习到不同的行为

为什么使用多头

参考链接:https://zhuanlan.zhihu.com/p/360932588

Feed Forward 层

Feed Forward 层比较简单,是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数。

参考资料

标签:总体,编码,transformer,架构,位置,子层,输入,注意力,向量
From: https://www.cnblogs.com/tian777/p/17917392.html

相关文章

  • transformer补充细节
    transformer补充细节目录transformer补充细节注意力机制细节为什么对点积注意力进行缩放多头带来的好处数据流训练时数据流推理时数据流解码器中注意力的不同带掩码的注意力机制位置编码整型数值标记[0,1]范围标记位置二进制标记周期函数标识用sin和cos交替来表示位置训练测试细......
  • 在arm架构的银河麒麟系统部署Nginx
    以下是在arm架构的银河麒麟系统上部署Nginx的详细步骤:1.创建文件夹首先,在合适的位置创建必要的文件夹。在本例中,我们将创建/opt/nginx和/usr/src/nginx两个文件夹。mkdir/opt/nginxmkdir/usr/src/nginx2.准备Nginx及其依赖包切换至/usr/src/nginx目录,并从以下地址下载......
  • 南凌科技推出首款Arm架构SASE BOX,打造5G专网跨域解决方案
    SASE是一种新兴的网络安全架构,旨在为远程用户提供安全的网络访问,简化网络安全设备的部署和管理。在SASE市场,云网基础、全域服务是南凌科技SASE服务的优势所在。南凌科技正凭借优质的平台资源、强大的研发实力、灵活的资源整合能力以及专业的一站式服务在SASE赛道多方势力的竞逐中脱......
  • spring-cloud 微服务架构所用到的技术 简介
    https://www.bilibili.com/video/BV18E411x7eThttps://blog.csdn.net/u011863024/article/details/114298270https://blog.csdn.net/u011863024/article/details/114298282https://blog.csdn.net/u011863024/article/details/1142982881、注册中心注册中心这一概念在面向服......
  • 解决方案架构师 vs 技术架构师,有何区别?
    Salesforce架构师角色是生态系统中常见的职业目标。架构师因其丰富的Salesforce知识以及在平台上构建可扩展解决方案的能力而广受认可。解决方案架构师和技术架构师是Salesforce生态系统中最常见的两个架构师角色,这些角色有一些重叠,但它们完全不同,解决方案架构师和技术架构师到......
  • 迅为3A5000_7A2000全国产处理器LoongArch架构核心主板
    性能:采用全国产龙芯3A5000处理器,基于龙芯自主指令系统(LoongArche)的LA464微结构,并进一步提升频率,降低功耗,优化性能。桥片:采用龙芯7A2000,支持PCIE3.0、USB3.0和SATA3.0显示接口2路、HDMI和1路VGA,可直连显示器;另外内置一个网络PHY,片内集成了自研GPU,搭配32位DDR4显存接口......
  • 物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制
    1.前言:在对物联网网关进行压测的时候,发现在腾讯云部署网关程序,设备接入数量只能达到4000多个长连接,之后就再也无法接入终端了。之前在阿里云部署的时候明明可以到达2万左右,而且腾讯云的这个服务器比阿里云的硬件配置还要高上不少,不至于那么差,随后查阅大量资料终于完美解决。2.解......
  • 构建可扩展的网校平台:在线教育系统源码设计与架构最佳实践
    随着科技的不断发展,在线教育系统在教育领域扮演着越来越重要的角色。本文将深入探讨如何构建一个可扩展的网校平台,重点关注在线教育系统的源码设计和架构最佳实践。 一、引言在当前信息时代,教育已经超越了传统的教学方式,转向更加灵活和便捷的在线教育平台。构建一个可扩展的网校平......
  • Sw-YoloX An anchor-free detector based transformer for sea surface object detect
    Sw-YoloXAnanchor-freedetectorbasedtransformerforseasurfaceobjectdetection基于Transformer用于海上目标检测的无锚检测器:Sw-YoloX1)由于不同海洋状态下的活体和漂浮物体数据稀缺且昂贵,我们基于2022年1月至3月在中国厦门的实际海面测量,构建了XM-10000基准数据集。......
  • 分布式架构的演变过程
    1.单应用架构此时用户量很少,所有功能全部都在一个应用中,应用和数据库部署在一台机器上。2.应用服务器和数据库服务器分离随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台服务器,将数据库分离出去。3.应用服务器集群突然有一天......