Transformer系列讲解
Transformer
传统方法存在的问题
传统RNN存在的问题
各层之间不为独立,无法并行计算
传统word2vec存在的问题
预训练好的向量不变,在不同的语境中可能存在不同的意思
整体结构
Encoder
Attention
对于不同的数据集有不同的关注点,关注对完成任务重要的特征,是由计算机自己提取的
self-attention
把上下文的一些信息加入到当前词编码的过程中,考虑整体的信息
Q:query查询矩阵,要去查询的内容;K:Key键,等待被查的V:value实际特征信息
要求当前词与其他词之间的关系,用当前词的q与各词的k内积得到相关程度,相关性越大内积越大
将分支归一化转换成对应的比例,同时不能让结果被向量本身维度所影响,并与v相乘得到最终的attention value
multi-headed机制
一组qkv只能得到一组当前词的特征表达,所以可以用多组不同的qkv计算出多个不同的特征表达,然后拼接在一起,再利用一个全连接来降维得到最终特征
堆叠多层
得到z向量后经过全连接层得到一个更理想的向量,同时作为向量能够再利用self-attention机制再次进行计算提取更好的特征
细节
位置信息表达
在self-attention中由于对序列中每一个词进行计算,与其相对位置无关,与实际不符,所以要对位置信息进行表达
所以对位置信息进行编码
Add与Normalize
Add是基本的残差连接方式,保证得到的特征表达不会变差
Layer Normalization是在每一个样本的不同通道上计算均值和方差,而Bacth Normalizition而是对每一批数据中的同一通道进行归一化
Decoder
Mask机制,当前词只能使用之前的输出预测,逐一预测
encoder输出给定kv,decoder得到q
softmax输出进行分类
ViT
将图像分为多个patch,然后通过卷积展开为向量,同时考虑各patch的位置信息,用坐标形式表示
插入一个class embedding,表示全局的信息,最终进行分类
TNT:Transformer in Transformer
内部transformer把每一个外部的patch重组成多个超像素,每个超像素包含四个像素点,然后进行transformer计算,最后将输出的向量与外部transformer输出相加。
Swin Transformer
所解决的问题
整体结构
Block
W-MSA基于窗口的注意力计算,SW-MSA窗口滑动后重新计算注意力
window-partition
W-MSA
window reverse
SW-MSA
之前的W-MSA只考虑了窗口内部的计算,没有考虑窗口之间的关系,所以进行窗口滑动