Transform:Attention--VIT--Swin_T

目录

reference:建议看李沐大神b站视频

1、attention

点积式的attention机制

多头注意力机制

2、transform模型里面怎么使用注意力机制

编码器的输入的注意力

解码器的注意力

解码器的另一个注意力

3、feed forward

4、embedding

5、positional encoding

6、Norm

reference:建议看李沐大神b站视频

1、attention

Transform:Attention--VIT--Swin_T_第1张图片

点积式的attention机制

假设Q是(n,dk)维度的,K是(m,dk)维度的,点积后经过scale变换后,放到softmax中得到输出query对于key的结果(n,m);出来的结果与V(m,dv)点积,得到一个(n,dv)的结果,每一行就是需要的一个输出。

scale是因为,dk比较大时,某两个值之间相对差距太大,其他值大部分都靠近0。不利于梯度计算

mask:是为了mask掉t时间后的k的值,具体操作是在t后面的数都换成很大的负数。

多头注意力机制

简单就是将q、k、v利用线形层投影到某一低维度,之后再concat通过linear保证维度不变,这是因为dot-procuct可学习的参数很少,但是投影层linear可以学习。

2、transform模型里面怎么使用注意力机制

编码器的输入的注意力

编码器的input,得到相同的K、Q、V,这就是自注意力

这个注意力机制,输出就是加权和,权重就是向量之间的相似矩阵

解码器的注意力

masked注意力机制,t时刻后的设置为0 

解码器的另一个注意力

query是解码器里上一个attention的输出,k和v来自编码器的输出。

这个注意力的输出,就是来自value的加权和,权重取决于q和k的相似度。

3、feed forward

feed forward本质上是一个MLP,三层的。

attention+feed forward  与 rnn,如何传递序列信息。

4、embedding

输入token变换成一个向量,d是512。编码器、解码器和softmax前的embedding权重是一样的。

embedding 层权重有一个scale,乘以\sqrt{d_{model}},long固定住

5、positional encoding

因为attention本身没有时序,sin、cos得到512维度的向量表达位置信息,加入embedding

6、Norm

layer_norm针对是batch做的归一化,相较于BN是针对feature做的归一化

layer_norm对每个样本做均值方差,对于梯度的李普希兹常数。

Transform:Attention--VIT--Swin_T_第2张图片

 

为什么self-attention

原文从计算效率角度出发的

正则化

res-dropout

label_smoothing

你可能感兴趣的:(论文,深度学习,人工智能)