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:

变量说明:

  • xi经过f(x)变成了aiai为一个向量,
  • Qqi为行组成的矩阵,即[q1q2]
  • Kki为行组成的矩阵,即[k1k2]
  • Vvi为行组成的矩阵,即[v1v2]
  • softmax(QKTdk)V中的乘法都是点积。
  • 除以dk的原因在论文中的解释是“进行点乘后的数值很大,导致通过softmax后梯度变的很小”,所以通过除以dk来进行缩放。

softmax(QKTdk)V说明:

  • QKT的i行都代表qi与每个k之间的匹配程度,将QKT的每一行都通过一个softmax函数,从而让QKT的每行之和为一。
  • softmax(QKTdk)的每一行都是一组权重,softmax(QKTdk)V的每一行都是每个v乘以权重后相加的结果,每一组权重生成softmax(QKTdk)V的一行。
  • V中的每个v都是代表对某个a提取的各种信息,而softmax(QKTdk)V的每一行整合了所有v的信息,所以softmax(QKTdk)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一样。

位置编码:由于输入的ai的顺序也是很重要的指标,必须将顺序也进行输入,如下:

peiai的维度是一样的所以可以相加。关于位置编码(pei)在原论文中有提出两种方案,一种是原论文中使用的固定编码,即论文中给出的sine and cosine functions方法,按照该方法可计算出位置编码;另一种是可训练的位置编码,作者说尝试了两种方法发现结果差不多(但在ViT论文中使用的是可训练的位置编码)。

VIT

【问题】感觉VIT将本来好好的图片进行了切割,然后又使用transformer将切割的各个部分进行联系,感觉有点多此一举。

posted @   好人~  阅读(492)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示