Transformer:一种基于注意力机制的网络模型

本文介绍了Transformer模型,特别是其在大模型(如llama-2)中的应用,涉及Transformer的自注意力机制、Multi-HeadAttention、PatchEmbedding和Norm(包括LayerNorm)等关键组件。文章详细阐述了TransformerEncoder和Decoder在处理序列数据,如自然语言理解和图像分类中的作用和区别。
摘要由CSDN通过智能技术生成

最近在学习关于llama-2大模型的知识,了解到大模型用到了transformer,进而开始了对transform的学习,其中多数内容摘自其他博主专栏以及视频内容,做出自己的总结和体会,如有侵权会删除

概括

Transformer是一种基于注意力机制的神经网络模型,用于处理序列数据,特别是在自然语言处理领域中广泛应用。

如图所示,为Vision Transformer整体结构的一个示意图,首先将图片切分为若干个块,然后通过一个Linear层将每个小块转化成一个patch,之后附带上一个class token ,

将所有的patch和这个class token嵌入位置信息后送入Transformer Encoder层进行编码操作,而Encoder模块主要是由L个相同的结构(Multi-Head、Norm、MLP)组成,且

模块之间还使用了Resnet中的残差结构,再然后将Encode后的结果送入MLP进行分类操作。

假设我们有一个句子或一个序列,我们希望理解其中的关系、上下文以及每个词的重要性。Transformer的工作就是通过自注意力机制来实现这一目标。

Transformer将输入序列中的每个词转换为向量表示,并引入位置编码以保留词的顺序信息*。然后,Transformer通过多层的自注意力机制和前馈神经网络来对这些向量进行处理。

在自注意力机制中,Transformer会计算每个词与其他词之间的相关性,然后给予每个词一个权重,用于表示它与其他词的重要程度。这样,我们可以捕捉到每个词之间的关系和上下文信息。

1.Patch Embedding

对于一个图像Transformer中处理的都是一个个序列(也就是一个一维的数据),那么就需要将原始图像变成一个一维数据作为输入,所以需要通过将图片flatten,但是对于像素比较搞的图像比如224*224,如果拆分的话就得到五万多个以为数据,因为Attention机制的计算复杂度是与序列长度有关的,所以这样做将会导致时间复杂度过高。所以需要对图像进行分割为大小16*16的小图片块,就得到14*14=196个图片块;

通过linear层得到token并嵌入位置信息,而为之信心与token属于同一维度,参与最终结果的计算,最终的图像分类结果就是通过这多个token统一计算决定的,这就需要一个旁观者,一个用于在计算过程中汇总其他token信息的一个工具token,用这个token来参与最终的分类计算,这个token就是class token,即位置编码为零的那个token。

2.Multi-Head Attention(多头注意力机制)

经过上一步PE操作获得了token,这个token通过linear层操作将token作维度变换,即映射为多个α(此处是与自注意力机制self-attention不同的地方,自注意力机制一个token只会映射出一个α),维度变换之后将α分级为q(query),k(key),v(value)三个量,用这三个量来进行attention的计算。

Q,K,V分别是什么,怎么来的?

Q、K、V都源于输入特征本身,是根据输入特征产生的向量(比如单词的词嵌入向量),最终输出(β)是通过Q和K得来的;直接把一组V输入到网络中进行训练,那这个网络就是没有引入Attention的网络。但如果引入Attention,需要将这组V分别乘以一组权重W(Q,K),那么就可以做到关注局部的输入特征。

权重W(Q,K),是计算Q,K之间的相似度,

即:V是表示输入特征的向量,Q、K是计算Attention权重的特征向量。它们都是由输入特征得到的。Attention(Q,K,V)是根据关注程度对V乘以相应权重。

用一句话来说就是:对Q和K计算相似度,相似度通过softmax层得到一组权重,即W(Q,K),用其与输入的特征向量V做乘积得到最终的输出。

为什么要用q,k,v三个tensor?

深度学习attention机制中的Q,K,V分别是从哪来的?-CSDN博客

文中解释了用三个tensor的好处,以及一个、两个为什么不满足要求

3.Norm

分为LayerNorm和BatchNorm,首先说Norm,它的作用是归一化处理,加快模型收敛速度,实质性的减少训练时间

在transform中,用到的Norm是LayerNorm,LayerNorm和BatchNorm的区别?

1.BatchNorm,简单来说就是根据特征维度进行归一化

但是对于样本是句子的情况,句子包含很多单词,无法进行归一化处理,效果很差。

LayerNorm归一化的原理:

原文链接:https://ugirc.blog.csdn.net/article/details/121877901

目前的llama处理模型都是基于Transformer进行构建的,它的任务是根据给定输入文本序列的上下文信息预测下一个单词或者token,所以llama模型只需要使用到transformer 的decoder部分,而所谓Decoder相对于Encoder就是在计算Q*K时引入了Mask以确保当前位置只能关注前面已经生成的内容。

作用区别:

Encoder:Transformer中的Encoder是用于将输入序列转换成隐藏表示的模块。它将输入序列中的每一个位置的词嵌入向量作为初始输入,然后通过多层的自注意力机制和全连接层,将每个位置的信息编码成一个定长的隐藏向量表示。Encoder的输出可以被送入Decoder中进行下一步处理。

Decoder:Transformer中的Decoder是用于生成输出序列的模块。它接受Encoder的输出,以及前面已经生成的部分输出序列作为输入。Decoder的主要任务是生成下一个位置的词,直到整个序列生成完成。Decoder同样也是由多层的自注意力机制和全连接层组成,但相比于Encoder还加入了一个额外的注意力机制,用于将Encoder输出的信息融合到生成过程中。Decoder还包括一个线性变换层,用于将Decoder的输出映射成输出词的概率分布。

区别:学习:词嵌入向量WordEmbedding-CSDN博客

  • 26
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和你的六十六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值