transformer和vit学习笔记

本文概述了Transformer技术在自然语言处理(NLP)领域的进展,如GPT系列模型,以及其在计算机视觉(CV)中的应用,如VIT、SwinTransformer和目标检测/分割模型。文章详细介绍了Transformer的工作原理,包括自注意力机制和多头注意力,以及VisualTransformer的特性和改进。
摘要由CSDN通过智能技术生成

以下记录自己对transformer的学习笔记,可能自己看得懂【久了自己也忘了看不懂】,别人看起来有点乱。以后再优化文档~

小伙伴请直接去看学习资源:

Transformer的理解T-1_哔哩哔哩_bilibili

  • 首先,时序处理:一些模型的出现。

NLP方面继续:

GPT2 -> GPT3 -> GPT4,  chatGPT

图像方面:

分类:VIT  Swin Transformer,  TNT(TRM in TRM)

检测:DERT等基于trm的目标检测模型;

分割:VisTR等基于trm的图像分割模型(A Survey of Visual Transformers)

预训练模型进阶【大一统,CV大模型初步】:MAE -> SAM(segment anything)

  1. Transformer

Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.   ( 谷歌 NIPS 2017)

Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,但是模型本身很简洁,提升模型准确率。

  1. Inputs:比如一句话,四个词语!
  2. Input Embedding: 四个词语,每个embedding成512维! X:4*512   [x1,x2,x3,x4] 分别:1*512
  3. Positional Encoding: 位置编码 【一句话中每个词之间有一种相对位置,同一个词不同位置,让每一个位置都有不同的编码,才更有意义 最终用:Final Embedding.】

pos:第几个位置,i:第几个编码维度,d-model:同embedding一致的总维度,如512

奇数维度sin,偶数维度cos 公式:第几个位置的第几维度,得到一个position值】

纵坐标:位置, 横坐标:维度

对于Multi-Head Attention:

Q(query),K(key),V(value): 每一个词语的每一个q k v都是1*512  来源:

q1 = x1*Wq = [1 512] * [512 512] = [1 512]     k1和v1同理!【第2-4个词同理】

QKT = [4 512]*[512 4] = [4 4]  根号dk为常熟,负责缩减值。

 *V = [4 4] * [4*512] = [4 512]  因此,最终self-attation值还是4*512 = X:4*512

值得一提的是当有多个句子,每个句子有不同的数量的词语,计算中矩阵需要进行补充掩码!

比如5个有的只有3个。不够的掩码到5个

有的是Q-padding, 有的是K-padding 【常用】 三个句子3个词4个词5个词最终都是5*512!

对于多头注意力的体现?

假如Q K V  4*512  分层成4*256与 4*256 【图中是三份,这里两份】

 每个4*256分别计算自己的四个样本词的自注意力,最后它们再concat合并起来!

对于:Masked Multi-head attention

不同于encoder中,对输入数据X的自注意力计算,decoder中是需要逐个预测output的输出的,因此第一次保留第一个词语开始符<sos>,掩盖住后面的,第二次保留前两个词语,掩盖住后边的,知道最后得到结束符<eos>,预测结束。

这里的mask方式是对V构造上三角掩盖:

补充句子长度一致q-padding或者k-padding,掩掉句子长度

这里decoder是每次预测结果掩盖后边句子,是把QKT掩盖构造的上三角矩阵,再乘V!

对于结构中剩余模块:多头注意力后的短接,归一化,前馈神经网络,最后线性层+softmax等等。最终输出Output Probability比如:4*C的矩阵,C是类别数量。

Visual Transformer

Dosovitskiy A , Beyer L , Kolesnikov A ,et al.An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale[C]//International Conference on Learning Representations.2021.   (谷歌)

问题:transformer 从NLP到 CV???

  复杂度高,且每个像素值作为一个token并不合理!!!

>>> 思路:

图片分块固定大小,线性嵌入特征+位置编码特征,喂给TRM的encoder~

增加可扩展的分类token

优点:有局部,合起来也有全局!

vit中TRM与TRM原论文有点结构上的变化:norm提前了,而且没有PAD掩码【猜测是样本图resize统一,分割出来的token是一样的】

具体的如下步骤:

一些VIT的细节解释:

首先,输出特征怎么利用:

一般可以两种⽅式,⼀种是使⽤【CLS】token,另⼀种就是对所有tokens的输出做⼀个平均

最后选择加一个分类用的token-0:因为计算中也会和每一个算自注意力【不用每个token的高阶encoder输出再合并特征接全连接层了,用token0的也行,隐藏着特征带有全图全局信息了的了】

一些计算过程:

P:图片块分辨率,H*W/P*P = N数量,图分成了N块 【要看论文,一开始博主讲的P2块】

C:每块图通道,比如3,

D:维度,比如 512  【代码中:一块图P*P*3->conv+fc->D维embedding】

E:输入特征【N*D】比如 N=9块,这里9*512  Epos:位置编码特征,维度保持一致D!【这里是10*512】

Z0:VIT里边的patch+position的综合embedding了【加Xclass的token-0】

MSA:多头注意力,LN:norm   加后边的Zl-1残差机制

MLP一行同理1  以上在图中也可以loop循环堆叠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值