首页 > 其他分享 >transformer原理

transformer原理

时间:2024-06-21 09:54:35浏览次数:13  
标签:transformer 并行 残差 注意力 子层 原理 文本 连接

 

Transformer注意力架构原理
输入层
embedding词嵌入向量
将文本中词汇的数字表示转变为向量表示,在这样的高维空间捕捉词汇间的关系
语义相近的词语对应的向量位置也更相近
每个词先通过词典转换成tokenId,在把tokenId转化为一个512纬的向量
位置编码
将每个词的位置向量(通过位置编码矩阵算出)增加到文本嵌入层输出向量中,这样输入层的向量就有了位置的信息
编码层
注意力层
注意力流程
Q通过K,V挖掘到KV中更重要的权重,把Q生成一个新的V
通过Q通过K在张量层面获取注意力(占比),在把占比乘以V就获得了新的张量作为获得注意力的张量
Q和K主要是为了获得占比
注意力机制公式
QKt是矩阵Q乘矩阵K的转置
处以√dk解决梯度消失的问题
softmax是计算出通过矩阵运算后的Q对于K的占比
最后乘以V是通过比例和值的乘运算获得最终的结果
自注意力
自注意机制的Q=K=V,通过转置计算,每个词都和其他所有词进行了计算
他的优点还在于,可以直接跨越一句话中不同距离的词,远距离学习到序列的只是依赖和语序结构
多头注意力机制
将句子词向量切分成多个部分每个部分分别进行注意力处理,最后再拼接到一起
多头可以在更细致的层面上提取不同的head的特征,提取特征的效果更好
规范化层norm
它是所有深层网络模型都需要的标准网络层
随着网络层数的增加,通过多层的计算后参数可能开始出现过大或过小的情况,这样可能会导致学习过程出现异常,模型可能收敛非常的慢. 因此都会在一定层数后接规范化层进行数值的规范化,使其特征数值在合理范围内
子层连接结构(残差连接)add
残差连接是2015年提出的论文解决神经网络深度过大导致的问题
神经网络模型在深度到达一定程度后,会造成梯度消失、梯度爆炸等问题
将浅层的输出和深层的输出求和,作为下一阶段的输入
通过残差连接这样一个简单的处理,成功将上百层的模型得以收敛,从而在分类任务中达到了更高的精度,在2016年resnet的改进中,模型的深度达到了1000层
Add & Norm
Add表示残差连接,Norm表示规范化层
对于每一个EncoderBlock,两个子层后面都有Add & Norm
对于每一个DecoderBlock,三个子层后后面都有Add & Norm
残差连接可以让信息传递的更深,增强了模型的拟合能力
规范化层,可以让模型减少参数过大过小的问题,防止模型收敛慢的问题
前馈全连接层Feed Forward
在Transformer中前馈全连接层就是具有两层线性层的全连接网络
考虑注意力机制可能对复杂过程的拟合程度不够, 通过增加两层网络来增强模型的能力
前馈全连接层由两个线性变化组成,中间有一个Relu激活函数
原始论文中的前馈全链接层输入和输出的纬度都是512,层内连接纬度是2048,均采用4倍的关系
前馈全链接层作用:单纯的多头注意力机制不足以提取到理想的特征,因此增加全链接层来提升网络的能力
编码器
Encoder部分是6个一模一样的Encoder Block层层堆叠在一起(网络串行)
解码层
第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接
多头自注意力层:需要做掩码,来遮掩未来的信息,提升模型的能力
对于生成类模型就是一个字一个字的崩出来,不能提前给模型透露未来的信息,如果透露了,他预测的能力会下降
第二个子层连接结构包括一个多头注意力子层和规范化层以及一个残差连接
多头注意力层:Q来自于Decoder端,KV来源于Encoder端
为什么要让原始文本(编码器输入)作为K V,翻译文本作为Q呢
训练过程中,要让目标文本在原始文本中提取到更重要的信息
预测过程中,更是要让生成文本在原始文本中提取到更重要的信息
谁更重要,谁信息量更大,谁就要在K V(通常K V是一样的)
这样设计的目的是为了让Decoder端的token能够给予Encoder端对应的token更多的关注
第三个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接
输出层
全连接线性层+softmax激活函数获得最终的结果
Transformer相比于传统RNN的优势
Transformer能够利用分布式GPU进行并行训练,提升模型训练效率
Encoder并行化
Embedding层(输入)、前馈全链接层、规范化残差连接层,都可以进行并行化
从Embedding层到注意力层之间因为存在依赖关系,这两个阶段无法并行
在注意力层因为采用了矩阵运算,可以一次性计算所有主力张量的计算,数学上也是一种并行化的体现
Encoder在训练和预测阶段都可以实现并行化
Decoder并行化
Embedding层(输入)、前馈全链接层、规范化残差连接层,都可以进行并行化
在注意力层因为采用了矩阵运算,可以一次性计算所有主力张量的计算,数学上也是一种并行化的体现
Decoder在训练阶段可以并行化阶段
Decoder在预测阶段不可并行化阶段
在分析预测更长的文本时, 捕捉间隔较长的语义关联效果更好
基于注意力的机制设计本身就能跨越较长文本,提取长文本特征,并通过注意力权重提现到embedding中

标签:transformer,并行,残差,注意力,子层,原理,文本,连接
From: https://www.cnblogs.com/zxporz/p/18259950

相关文章

  • 线程池原理
     线程池原理线程池(ThreadPool)是一种多线程处理模式,常用于提高性能和资源利用率,特别是在处理大量短时间任务时。线程池通过预先创建和管理一定数量的线程,来执行任务而不是每次都创建和销毁线程,从而减少线程创建和销毁的开销。 线程池的基本概念-线程池:一个包含多个预先创......
  • 【AI原理解析】— 字节豆包模型
    目录1.数据收集与处理2.模型架构3.训练过程4.原理细节5.推理与生成6.模型优化与迭代7.规模与参数8.应用场景1.数据收集与处理数据收集:豆包大语言模型基于大规模的数据集进行训练,这些数据通常包括网络文本、书籍、新闻、社交媒体内容等。数据清洗:收集到的......
  • Redis漏洞原理
    Redis漏洞原理Redis简单介绍Redis是一款内存高速缓存的数据库,是一款K-V型数据库,它的所有键值都是用字典来存储的。其中它的value支持多种数据类型,包括String、List、Set、Zset和Hash。‍Redis未授权访问漏洞介绍利用条件Redis默认情况下绑定在127.0.0.1:6379,在没有进......
  • 2023 Jiangsu Collegiate Programming Contest, National Invitational of CCPC (Huna
    题目思路来源乱搞ac题解枚举gcd,gcd一定是x的因子,由于lcm+gcd=x,有lcm/gcd+1=x/gcd,还有lcm/gcd>=1枚举lcm/gcd=y,显然如果gcd>1,让gcd和lcm同除以gcd即可,所以可以认为gcd=1,问题转化为,大小为k的集合,k个不同的数,满足gcd=1,且lcm=y的方案数,然后写了个大暴力容斥,没想到过了…......
  • 浅析Vite本地构建原理
    前言随着Vue3的逐渐普及以及Vite的逐渐成熟,我们有必要来了解一下关于vite的本地构建原理。对于webpack打包的核心流程是通过分析JS文件中引用关系,通过递归得到整个项目的依赖关系,并且对于非JS类型的资源,通过调用对应的loader将其打包编译生成JS代码,最后再启动开发服务器。了解......
  • Arduino平台软硬件原理及使用——电位器模块的使用
    文章目录一、电位器工作原理二、电位器与滑动变阻器的异同三、电位器模块在Arduino中的使用一、电位器工作原理上图为市面上常见的电位器元件实物图,其结构及封装根据不同的应用场景也有着不同,但其原理及本质基本一致。电位器是具有三个引出端、阻值可按某种变化规......
  • Transformer 模型的 PyTorch 实现
    Google2017年的论文Attentionisallyouneed阐释了什么叫做大道至简!该论文提出了Transformer模型,完全基于Attentionmechanism,抛弃了传统的RNN和CNN。我们根据论文的结构图,一步一步使用PyTorch实现这个Transformer模型。Transformer架构首先看一下transformer的结......
  • 武汉凯迪正电气大分享电缆谐振耐压试验原理方法与应用
    一、电缆谐振耐压试验的原理电缆谐振耐压试验是通过改变试验系统的电感量和试验频率使回路处于谐振状态,从而在电缆上产生高电压、大电流以检测电缆的绝缘性能是否满足要求。在谐振状态下试验电源供给的能量仅为回路中消耗的用功功率,大大降低了试验电源的容量减轻了设备的重量......
  • 哈啰面试:说说Dubbo运行原理?
    Dubbo是一款高性能、轻量级的开源RPC(远程过程调用)框架,主要用于构建分布式服务和微服务架构。那Dubbo又是如何运行的呢?让我们一起来看。1.核心组件要说Dubbo运行流程就不得不先来了解一下Dubbo的核心组件了,因为Dubbo的交互流程是和核心组件息息相关的。Dubbo核心组件......
  • 数据恢复的原理是什么
    为了整个系统的效率,Windows操作系统在真正删除一个文件时(比如从回收站里面清除一个文件),并不是从磁盘记录中直接抹去这个文件的所有数据,它只是将这个文件所在的磁盘位置标注为已删除。这样以后当需要使用这些磁盘空间来记录其他数据的时候,就可以直接写在这些位置上,而不需要保留原来......