Transformer

传统方法存在的问题

传统RNN存在的问题

各层之间不为独立,无法并行计算

传统word2vec存在的问题

预训练好的向量不变,在不同的语境中可能存在不同的意思

整体结构

Encoder

Attention

对于不同的数据集有不同的关注点,关注对完成任务重要的特征,是由计算机自己提取的

self-attention

把上下文的一些信息加入到当前词编码的过程中,考虑整体的信息

transformer2

Q:query查询矩阵,要去查询的内容;K:Key键,等待被查的V:value实际特征信息

transformer3

要求当前词与其他词之间的关系,用当前词的q与各词的k内积得到相关程度,相关性越大内积越大

transformer4

将分支归一化转换成对应的比例,同时不能让结果被向量本身维度所影响,并与v相乘得到最终的attention value

transformer5

multi-headed机制

一组qkv只能得到一组当前词的特征表达,所以可以用多组不同的qkv计算出多个不同的特征表达,然后拼接在一起,再利用一个全连接来降维得到最终特征

transformer6

堆叠多层

得到z向量后经过全连接层得到一个更理想的向量,同时作为向量能够再利用self-attention机制再次进行计算提取更好的特征

transformer7

细节

位置信息表达

在self-attention中由于对序列中每一个词进行计算,与其相对位置无关,与实际不符,所以要对位置信息进行表达

所以对位置信息进行编码

transformer8

Add与Normalize

Add是基本的残差连接方式,保证得到的特征表达不会变差

transformer9

Layer Normalization是在每一个样本的不同通道上计算均值和方差,而Bacth Normalizition而是对每一批数据中的同一通道进行归一化

transformer10

Decoder

transformer1

Mask机制,当前词只能使用之前的输出预测,逐一预测

encoder输出给定kv,decoder得到q

softmax输出进行分类

ViT

transformer11

transformer12

将图像分为多个patch,然后通过卷积展开为向量,同时考虑各patch的位置信息,用坐标形式表示

插入一个class embedding,表示全局的信息,最终进行分类

TNT:Transformer in Transformer

transformer13

内部transformer把每一个外部的patch重组成多个超像素,每个超像素包含四个像素点,然后进行transformer计算,最后将输出的向量与外部transformer输出相加。

Swin Transformer

所解决的问题

transformer14

整体结构

transformer15

Block

transformer16

W-MSA基于窗口的注意力计算,SW-MSA窗口滑动后重新计算注意力

window-partition

transformer17

W-MSA

transformer18

window reverse

transformer19

SW-MSA

之前的W-MSA只考虑了窗口内部的计算,没有考虑窗口之间的关系,所以进行窗口滑动

transformer20

transformer21

transformer22

下采样PatchMerging

transformer23