transformer系列之一:从ViT讲起

想做一系列关于transformer的论文整理,系统梳理下其进化路线,同时记录自己的学习过程。

本文主要将从封神之作-Visual Attention Transformer (ViT)讲起,重点讲述其原理,并总结给出相关code连接.期待后面陆续更新!

1 论文原文
Title: An image is worth 16x16 words: Transformers for image recognition at scalehttps://arxiv.org/abs/2010.11929
code: 原文github code
原文链接见文末,看了下Google scholar,发现其引用已经超过3000次。自该文发表之后,模仿和改进版ViT可谓刷榜利器,高歌猛进,动摇了CNN不可一世的霸主地位,甚至一度有超越CNN的势头。

2 Visual Attention Transformer到底是个啥
先上图,一睹为快,再来慢慢细品。


ViT模型框架

从图中可以看出,ViT主要结构包括patch prepare,patch线性映射,patch
+position Embeding,encoder, classification。其中关键是patch
+position Embeding和encoder, 难点在于Encoder中的Multi-Head Attention(MSA)的理解和实现。细节如下:

  • patch prepare: 对于输入的图片信号,先设定patch大小:H * W ,原文中H=W,实际可根据自己的任务调整;然后按照设定的H和W分别对原图的长宽分割,形成一系列的小图,称为patch,patch全部排列起来,等待下一步;
  • 线性映射:这里需要首先设定embedding_dim, 也就是需设定映射后的维度大小,这一步实际是把二维patch映射成一维数据,其大小为embedding_dim,映射方法可以是全连接linear,也可以是kerner=1的CNN;
  • ViT的神来之笔来到了,作者在embedding层加入了和embedding同样规模位置参数和一个额外的类标签。常见的位置参数可以是正弦的,也可以设为随机数,通常这部分参数设为可学习状态,即会随着网络学习而不断更新;
  • 紧着就到了重难点的Encoder部分,由ViT模型框图中的transformer Encoder部分可以看出,Encoder由多头注意力机制Multi-Head Attention(MSA)和一个全连接层MLP构成,两者均使用了Resdual Model结构。要理解MSA结构其实得从Self-Attention说起,Self-attention结构可谓被大家玩得不亦乐乎,有时有用,有时也玄学。

继续来填坑:
self-attention的计算公式如下,大家看来也许很眼熟,也许和我一样在刚开始看到这公式时有些困惑:

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V . (1) Attention(Q,K,V) = softmax\left(\frac{QK^T}{\sqrt {d_k}}\right)V\tag{1} . Attention(Q,K,V)=softmax(dk QKT)V.(1)
那么,Q、K、V、 d k {d_k} dk是啥呀,我们似乎只对softmax熟悉点【归一化】?别急,透过现象看本质,咱们先来回顾下向量的内积 x x T xx^T xxT的含义,进而理解矩阵与其转置的乘积 X X T XX^T XXT又有何表征意义。抄一段百度百科的解释如下:

  • 两个向量的内积 x y T xy^T xyT两种定义方式:代数方式和几何方式。
    通过在欧氏空间中引入笛卡尔坐标系,向量之间的点积既可以由向量坐标的代数运算得出,也可以通过引入两个向量的长度和角度等几何概念来求解。
    广义定义:在一个向量空间V中,定义在 上的正定对称双线性形式函数即是V的数量积,而添加有一个数量积的向量空间即是 内积空间
    代数定义:设二维空间内有两个向量 x → = ( x 1 , x 2 ) \overrightarrow {x}=(x_1,x_2) x =(x1,x2) y → = ( y 1 , y 2 ) \overrightarrow {y}=(y_1,y_2) y =(y
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值