AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
ViT
论文链接: https://arxiv.org/abs/2010.11929
一、 Problem Statement
探索在视觉任务上使用transformer结构。
二、 Direction
Vision Transformer 直接对sequences of image patches进行classification。
三、 Method
先来看看整体结构:
由上图可知,ViT整体分为几个步骤:
-
將维度为 x ∈ R H × W × C x \in \R^{H \times W \times C} x∈RH×W×C 的images 转换成一个维度为 x p ∈ R N × ( P 2 ⋅ C ) x_p \in \R^{N \times (P^2 \cdot C)} xp∈RN×(P2⋅C)序列。 ( P , P ) (P, P) (P,P)是image patch的大小, N = H W / P 2 N=HW/P^2 N=HW/P2代表patches的数量,也代表transformer的输入序列长度。
-
Transformer内部会使用固定大小的latent vector,因此需要將上面的patches的维度转换为 D D D。
z 0 = [ x c l a s s ; x p 1 E ; . . . ; x p N E ] + E p o s , E ∈ R P 2 ⋅ C × D , E p o s ∈ R ( N + 1 ) × D z_0 = [x_{class}; x_p^1E; ...;x_p^NE]+E_{pos}, \quad E\in \R^{P^2\cdot C} \times D ,\quad E_{pos} \in \R^{(N+1) \times D} z0=[xclass;xp1E;...;xpNE]+Epos,E∈RP2⋅C×D,Epos∈R(N+1)×D
可以看到上面多了一个 x c l a s s x_{class} xclass和 E p o s E_{pos} Epos,分别代表learnable embedding和每个patches的位置。 -
通过Transformer,输出结果 y y y。Transformer包括multi-head self-attention(MSA), MLP blocks, Layernorm(LN)。
z l ′ = MSA ( LN ( z l − 1 ) ) + z l − 1 , l = 1... L z l = MLP ( LN ( z l ′ ) ) + z l ′ , l = 1... L y = LN ( z L 0 ) z^{'}_l=\text{MSA}(\text{LN}(z_{l-1})) + z_{l-1}, \quad l=1...L \\ z_l = \text{MLP}(\text{LN}(z'_l))+z'_l, \quad \quad l=1...L \\ y=\text{LN}(z_L^0) zl′=MSA(LN(zl−1))+zl−1,l=1...Lzl=MLP(LN(zl′))+zl′,l=1...Ly=LN(zL0) -
將Transformer输出的结果输入到MLP中,实现分类。MLP只有一层隐藏层。
这里值得注意的是:
标准的qkv self-attention计算如下:
对于一个输入序列
z
∈
R
N
×
D
z \in \R^{N \times D}
z∈RN×D,我们有:
[
q
,
k
,
v
]
=
z
U
q
k
v
U
q
k
v
∈
R
D
×
3
D
h
,
A
=
softmax
(
q
k
T
/
D
h
)
A
∈
R
N
×
N
,
SA
(
z
)
=
A
v
[q, k, v] = z U_{qkv} \qquad U_{qkv} \in \R^{D \times 3D_h}, \\ A = \text{softmax}(qk^T/\sqrt{D_h} ) \qquad A \in R^{N \times N}, \\ \text{SA}(z) = Av
[q,k,v]=zUqkvUqkv∈RD×3Dh,A=softmax(qkT/Dh)A∈RN×N,SA(z)=Av
而上面的Multihead self-attention(MSA) 是SA的一个扩展,也就是对self-attention 并行地运行了k 次,然后将它们的结果拼接起来,这就是"head"。当改变k值的时候,为了保持计算和参数量的固定, D h D_h Dh通常设置为 D / k D/k D/k。
MSA ( z ) = [ S A 1 ( z ) ; S A 2 ( z ) ; . . . ; S A k ( z ) ] U m s a U m s a ∈ R k ⋅ D h × D \text{MSA}(z) = [SA_1(z); SA_2(z); ...; SA_k(z)] U_{msa} \qquad U_{msa} \in \R^{k \cdot D_h \times D} MSA(z)=[SA1(z);SA2(z);...;SAk(z)]UmsaUmsa∈Rk⋅Dh×D
而为什么使用多头注意力模型,参考了3。
多头注意力允许模型在不同位置共同关注来自不同表示子空间的信息。使用一个单注意力头,平均会抑制这种情况。
Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions.
实验结论:
-
作者尝试了四种编码位置信息的方式:
- Providing no positional information
- 1-dimensional positional embedding(default used in this paper)
- 2-dimensional positional embedding
- Relative positional embeddings
实验表明,对于编码位置信息的方式,是没有很大区别的。 作者推测,由于Transformer编码器在patch-level输入上运行,而不是在pixel-level,因此空间信息编码方式的差异就不那么重要了。更准确地说,在patch-level输入中,空间维度比原始像素级输入小得多。
四、 Conclusion
作者通过实验,对于中等的数据集,比如ImageNet,Transformer这个结构的效果不如现在的SOTA。可能原因是Transformer没有CNN的translation equivariance和locality。但是对于大型数据集,效果SOTA。
Reference
- https://zhuanlan.zhihu.com/p/80226180
- Enhanced free space detection in multiple lanes based on single CNN with scene identification
- https://www.zhihu.com/question/341222779