Transformer、VIT、swin transformer
Transformer:https://blog.csdn.net/qq_37541097/article/details/117691873,总结:
- Self-Attention:输入n个向量,每个向量得到一组(q,k,v),通过Attention(Q, K,V)将不同向量的(q,k,v)进行相互联系,最后就得到了n个输出。
- Multi-Head Attention:Multi-Head就是将每个向量得到的(q,k,v)分为多份(多头)
VIT:自然语言中使用Transformer,需要将自然语言编码成特征向量,最后输入到使用Multi-Head Attention组织的网络中。
在图像中,就是利用卷积网络进行特征提取,从而将图像编码成特征向量,最后输入到使用Multi-Head Attention组织的网络中。
Swin-Transformer:这个网络好像没有像VIT中一样,用到了很多的cnn结构??
【问题】为什么说transformer计算量比CNN大?
Transformer
参考:https://blog.csdn.net/qq_37541097/article/details/117691873
self-Attention
首先介绍self-Attention:
变量说明:
- \(x_i\)经过\(f(x)\)变成了\(a_i\),\(a_i\)为一个向量,
- \(Q\)是\(q^i\)为行组成的矩阵,即\(\begin{bmatrix} q^1 \\ q^2 \end{bmatrix}\)
- \(K\)是\(k^i\)为行组成的矩阵,即\(\begin{bmatrix} k^1 \\ k^2 \end{bmatrix}\)
- \(V\)是\(v^i\)为行组成的矩阵,即\(\begin{bmatrix} v^1 \\ v^2 \end{bmatrix}\)
- \(softmax( \frac{QK^T}{\sqrt{d_k}})V\)中的乘法都是点积。
- 除以\(\sqrt{d_k}\)的原因在论文中的解释是“进行点乘后的数值很大,导致通过softmax后梯度变的很小”,所以通过除以\(\sqrt{d_k}\)来进行缩放。
\(softmax( \frac{QK^T}{\sqrt{d_k}})V\)说明:
- \(QK^T\)的i行都代表\(q^i\)与每个k之间的匹配程度,将\(QK^T\)的每一行都通过一个softmax函数,从而让\(QK^T\)的每行之和为一。
- \(softmax( \frac{QK^T}{\sqrt{d_k}})\)的每一行都是一组权重,\(softmax( \frac{QK^T}{\sqrt{d_k}})V\)的每一行都是每个\(v\)乘以权重后相加的结果,每一组权重生成\(softmax( \frac{QK^T}{\sqrt{d_k}})V\)的一行。
- \(V\)中的每个\(v\)都是代表对某个a提取的各种信息,而\(softmax( \frac{QK^T}{\sqrt{d_k}})V\)的每一行整合了所有\(v\)的信息,所以\(softmax( \frac{QK^T}{\sqrt{d_k}})V\)的每一行的意义应该和卷积网络中的一个通道一样的,因为卷积网络中的每个通道也都是集合了输入的图片的所有信息。
【问题】那么transformer与卷积网络的区别是什么呢?
答:我认为在卷积网络中像素点之间的是没有乘法的,而在transformer中像素点之间是有乘法的,这就让模型的表达能力更强,但是由于像素点之间存在乘法,就会导致反向传播的时候,更新参数比较“乏力”,所以transformer需要更多的数据喂入。
Multi-Head Attention
定义:Multi-Head就是将每个向量得到的(q,k,v)分为多份(多个head),每个head进行self-Attention操作。多个head产生多个输出,将这个多个输出进行拼接和映射操作(通过一个全连接)得到最终输出。具体见链接
计算量:由于Multi-Head Attention每个head的维数减少,总计算成本与self-Attention相似。当去掉Multi-Head Attention最后的映射操作,则Multi-Head Attention的计算量和self-Attention一样。
位置编码:由于输入的\(a^i\)的顺序也是很重要的指标,必须将顺序也进行输入,如下:
\(pe_i\)和\(a_i\)的维度是一样的所以可以相加。关于位置编码(\(pe_i\))在原论文中有提出两种方案,一种是原论文中使用的固定编码,即论文中给出的sine and cosine functions方法,按照该方法可计算出位置编码;另一种是可训练的位置编码,作者说尝试了两种方法发现结果差不多(但在ViT论文中使用的是可训练的位置编码)。
VIT
【问题】感觉VIT将本来好好的图片进行了切割,然后又使用transformer将切割的各个部分进行联系,感觉有点多此一举。