REST:一种高效的视觉识别transformer
Abstract
本文提出了一种高效的多尺度视觉转换器REST,它可以作为图像识别的通用主干。与已有的利用标准变换器块来处理固定分辨率的原始图像的Transformer方法不同,本文的方法具有以下优点:(1)构建了一种内存高效的多头自关注算法,它通过简单的深度卷积来压缩内存,并在保持多头多样性的同时投影跨注意头维度的交互作用;(2)位置编码被构造为空间注意,更灵活,可以处理任意大小的输入图像,而不需要内插或微调;(3)不再在每个阶段开始时直接进行标记化tokenization,而是将补丁嵌入为在标记图上跨步的重叠卷积运算堆栈。
REST
Rethinking of Transformer Block
标准的transformer块由MSA和FFN组成,每个子层采用残差连接。
对于token输入:
x
∈
R
n
×
d
m
x\in R^{n\times d_m}
x∈Rn×dm,where,n表示空间维度,
d
m
d_m
dm表示通道维度
每个transformer的输出为:
y
=
x
′
+
F
F
N
(
L
N
(
x
′
)
)
y = x' + FFN(LN(x'))
y=x′+FFN(LN(x′)),and
x
′
=
x
+
M
S
A
(
L
N
(
x
)
)
x'=x + MSA(LN(x))
x′=x+MSA(LN(x))
MSA
首先通过将三组投影映射于输入来获取Q,K,V。每个投影由将
d
m
d_m
dm维输入映射到
d
k
d_k
dk维空间的K的线性层(头部)组成,其中
d
k
=
d
m
k
d_k = \frac{d_m}{k}
dk=kdm是头部维度。MSA的计算代价为
O
(
2
d
m
n
2
+
4
d
m
2
n
)
O(2d_mn^2+4d^2_mn)
O(2dmn2+4dm2n)
MSA有两个缺点:MSA的计算量与
d
m
d_m
dm或n成平方关系,导致训练和推理的开销很大;MSA中的每个头部只负责嵌入维度的一个子集,这可能会影响网络的性能,特别是每个头部的token嵌入维度较小时。
为了压缩内存,将2D输入token
x
∈
R
n
×
d
m
x\in R^{n\times d_m}
x∈Rn×dm眼空间维度重塑为3D token
x
∧
∈
R
d
m
×
h
×
w
\overset{\wedge}{x}\in R^{d_m\times h \times w}
x∧∈Rdm×h×w,然后送到深度卷积运算。
启示
- 这种注意力的是由NLP引申过去的,那这种方法是不是可以用来解决NLP任务中token序列过长导致复杂度很高的问题呢,可以看看相关的论文降低MSA的复杂度是很有必要的。