2020CVPR图像识别自注意力 (Exploring self-attention for image recognition)
近期工作显示自注意力可以作为图像识别模型的一个基础构建模块。本文探索多种自注意力并评估它们在图像识别中的性能。两种类型的自注意力被考虑:
1)按对自注意力 (Pairwise self-attention):生成标准化点乘注意力,属于集合操作;
2)按块自注意力 (Patchwise self-attention):比卷积更强大。
实验上:
1)按对自注意力网络匹配或优于它们的卷积版本,并且按块模型大大优于卷积基线模型;
2)设置了关于习得表示健壮性方面的实验,并证实自注意力网络在健壮性和泛化方面具有显着优势。
在用于图像识别的卷积网络中,网络层需要执行两个函数:
1)特征汇聚:卷积操作,组合核函数挖掘的位置特征;
2)特征变换:包含连续线性映射和非线性标量函数,会破坏特征空间和产生复杂的分段映射。
一个观察结果是,以上两个函数—特征汇聚和特征变换是可以解耦的。如果有一种执行特征汇聚的机制,那么特征变换可以由分别处理每个特征向量或者每个像素的感知层来执行。一个感知层包含一个线性映射和一个非线性标量函数:特征变换将由这个按点操作来执行。因此接下来的操作集中在特征汇聚。
卷积算子 (Convolution operator) 通过一个固定的核执行特征聚合,该核应用预训练的权重来线性组合来自一组附近位置的特征值。权重是固定的,并不适用于特征的内容。而且由于每个位置都必须使用专用的权重向量进行处理,因此参数的数量与汇聚特征的数量呈线性关系。提出了许多替代的汇聚方案,并构建了高性能的图像识别架构,将特征汇聚 (通过自注意力) 和特征变换 (通过按元素感知器) 交错。
探索的第一种自注意力称为按对的,其形式如下:
y
i
=
∑
j
∈
R
i
α
(
x
i
,
x
j
)
⊙
β
(
x
j
)
,
(2)
\tag{2} y_i=\sum_{j\in\mathcal{R}_i}\alpha\left(x_i,x_j\right)\odot\beta(x_j),
yi=j∈Ri∑α(xi,xj)⊙β(xj),(2)其中
⊙
\odot
⊙是Hadamard乘积、
i
i
i是特征向量
x
i
x_i
xi的空间索引,亦即特征图中的定位,以及
R
i
\mathcal{R}_i
Ri是汇聚的本地足迹 (Local footprint)。
R
i
\mathcal{R}_i
Ri是一个索引的集合,其指明哪些特征向量将被汇聚用于生成新特征
y
i
y_i
yi。
函数
β
\beta
β通过自适应权重向量
α
(
x
i
,
x
j
)
\alpha(x_i,x_j)
α(xi,xj)的汇聚来生成特征向量
β
(
x
j
)
\beta(x_j)
β(xj)。该函数的可能实例,以及架构中围绕自注意力操作的特征转换元素将在后续说明。
函数
α
\alpha
α用于计算权重,从而结合变换后的特征
β
(
x
j
)
\beta(x_j)
β(xj)。为了简化不同自注意力形式的表述,
α
\alpha
α被分解为:
α
(
x
i
,
x
j
)
=
γ
(
δ
(
x
i
,
x
j
)
)
.
(3)
\tag{3} \alpha(x_i,x_j)=\gamma(\delta(x_i,x_j)).
α(xi,xj)=γ(δ(xi,xj)).(3) 关联函数
δ
\delta
δ输出一个表征
x
i
x_i
xi和
x
j
x_j
xj的单向量。函数
γ
\gamma
γ将该向量映射为另一个向量,并结合到
β
(
x
j
)
\beta(x_j)
β(xj)中。
函数
γ
\gamma
γ用以探索关系
δ
\delta
δ,这些关系可以生成不同维度的向量,且维度无需与
β
(
x
j
)
\beta(x_j)
β(xj)的维度想匹配。这允许云如一些额外的训练变换到权重
α
(
x
i
,
x
j
)
\alpha(x_i,x_j)
α(xi,xj)的结构中,使构建的向量更加具备表达能力。该函数执行一个线性映射、非线性函数,以及一个线性映射,例如
γ
=
{
L
i
n
e
a
r
,
R
e
L
U
,
L
i
n
e
a
r
}
\gamma=\{Linear,ReLU,Linear\}
γ={Linear,ReLU,Linear}。
γ
\gamma
γ的输出维度不需要与
β
β
β相匹配,因为注意力权重可以在一组通道之间共享。
关系函数
δ
\delta
δ的以下形式将被探索:
1)相加 (Summation):
δ
(
x
i
,
x
j
)
=
φ
(
x
i
)
+
ψ
(
x
j
)
\delta(x_i,x_j)=\varphi(x_i)+\psi(x_j)
δ(xi,xj)=φ(xi)+ψ(xj);
2)相减 (Subtraction):
δ
(
x
i
,
x
j
)
=
φ
(
x
i
)
−
ψ
(
x
j
)
\delta(x_i,x_j)=\varphi(x_i)-\psi(x_j)
δ(xi,xj)=φ(xi)−ψ(xj);
3)拼接 (Concatenation):
δ
(
x
i
,
x
j
)
=
[
φ
(
x
i
)
,
ψ
(
x
j
)
]
\delta(x_i,x_j)=[\varphi(x_i),\psi(x_j)]
δ(xi,xj)=[φ(xi),ψ(xj)];
4)Hadamard乘积 (Hadamard product):
δ
(
x
i
,
x
j
)
=
φ
(
x
i
)
⊙
ψ
(
x
j
)
\delta(x_i,x_j)=\varphi(x_i)\odot\psi(x_j)
δ(xi,xj)=φ(xi)⊙ψ(xj);
5)点乘 (Dot product):
δ
(
x
i
,
x
j
)
=
φ
(
x
i
)
T
ψ
(
x
j
)
\delta(x_i,x_j)=\varphi(x_i)^T\psi(x_j)
δ(xi,xj)=φ(xi)Tψ(xj)。
这里
φ
\varphi
φ和
ψ
\psi
ψ是训练后的变换例如线性映射,且匹配输出维度。1、2和4的输出维度不变,3的维度翻倍,5的维度则是1。
位置编码 (Position encoding). 按对注意力一个很明显的特征是特征向量
x
j
x_j
xj是被单独处理的,权重计算
α
(
x
i
,
x
j
)
\alpha(x_i,x_j)
α(xi,xj)不能合并超越
i
i
i和
j
j
j的位置信息。为了给模型提供一些空间信息,我们使用位置信息来增强特征图。位置的编码如下:
1)特征图沿着水平和垂直坐标首先被归一化到
[
−
1
,
1
]
[-1, 1]
[−1,1];
2)将这些归一化的二维坐标通过可训练的线性层,该层可以将它们映射到网络中每一层的适当范围;
3)线性映射为每个位置
i
i
i输出一个二维位置特征
p
i
p_i
pi;
4)对每个对
(
i
,
j
)
(i,j)
(i,j)例如
j
∈
R
(
i
)
j\in\mathcal{R}(i)
j∈R(i),通过计算
p
i
−
p
j
p_i-p_j
pi−pj来编码相对位置信息;
5)在映射在
γ
\gamma
γ之前,
δ
(
x
i
,
x
j
)
\delta(x_i,x_j)
δ(xi,xj)的输出通过拼接
[
p
i
−
p
j
]
[p_i-p_j]
[pi−pj]来增强。
按块自注意力的形式如下:
y
i
=
∑
j
∈
R
i
α
(
x
R
(
i
)
)
j
⊙
β
(
x
j
)
,
(4)
\tag{4} y_i=\sum_{j\in\mathcal{R}_i}\alpha\left(x_{\mathcal{R}(i)}\right)_j\odot\beta(x_j),
yi=j∈Ri∑α(xR(i))j⊙β(xj),(4)其中
x
R
(
i
)
x_{\mathcal{R}(i)}
xR(i)是足迹
R
(
i
)
\mathcal{R}(i)
R(i)上特征向量的块、
α
(
x
R
(
i
)
)
\alpha\left(x_{\mathcal{R}(i)}\right)
α(xR(i))是一个维度与
x
R
(
i
)
x_{\mathcal{R}(i)}
xR(i)相同的张量,以及
α
(
x
R
(
i
)
)
j
\alpha\left(x_{\mathcal{R}(i)}\right)_j
α(xR(i))j是该张量在位置
j
j
j上的向量,其在空间上对应于
x
R
(
i
)
x_{\mathcal{R}(i)}
xR(i)上的
x
j
x_j
xj。
在按块自注意力中,允许构建应用
β
(
x
j
)
β(xj)
β(xj)的权重向量来引用和合并来自足迹
R
(
i
)
\mathcal{R}(i)
R(i)中所有特征向量的信息。与按对自注意力不同,按块自注意力不再是一个关于特征
x
j
x_j
xj的集合操作。它也不是序列不变或者容积不变:通过定位,权重计算
α
(
x
R
(
i
)
)
\alpha(x_{\mathcal{R}(i)})
α(xR(i))可以索引单独地索引特征向量
x
j
x_j
xj,并混合来自不同足迹区域特征向量的信息。严格意义上,按对自注意力比卷积更有效。
α
(
x
R
(
i
)
)
\alpha\left(x_{\mathcal{R}(i)}\right)
α(xR(i))分解如下:
α
(
x
R
(
i
)
)
=
γ
(
δ
(
x
R
(
i
)
)
)
.
(5)
\tag{5} \alpha(x_{\mathcal{R}(i)})=\gamma(\delta(x_{\mathcal{R}(i)})).
α(xR(i))=γ(δ(xR(i))).(5) 函数
γ
γ
γ将由
δ
(
x
R
(
i
)
)
δ(x_\mathcal{R(i)})
δ(xR(i))生成的向量映射为适当维度的张量。该张量组合所有位置
j
j
j的权重向量。函数
δ
\delta
δ结合来自块
x
R
(
i
)
x_{\mathcal{R}(i)}
xR(i)的特征向量
x
j
x_j
xj。以下组合形式将被探索:
1)Star-product:
δ
(
x
R
(
i
)
)
=
[
φ
(
x
i
)
T
ψ
(
x
j
)
]
∀
j
∈
R
(
i
)
\delta(x_{\mathcal{R}(i)})=[\varphi(x_i)^T\psi(x_j)]_{\forall j\in\mathcal{R}(i)}
δ(xR(i))=[φ(xi)Tψ(xj)]∀j∈R(i);
2)Clique-product:
δ
(
x
R
(
i
)
)
=
[
φ
(
x
j
)
T
ψ
(
x
k
)
]
∀
j
,
k
∈
R
(
i
)
\delta(x_{\mathcal{R}(i)})=[\varphi(x_j)^T\psi(x_k)]_{\forall j,k\in\mathcal{R}(i)}
δ(xR(i))=[φ(xj)Tψ(xk)]∀j,k∈R(i);
3)拼接:
δ
(
x
R
(
i
)
)
=
[
φ
(
x
i
)
,
ψ
(
x
j
)
]
∀
j
∈
R
(
i
)
\delta(x_{\mathcal{R}(i)})=[\varphi(x_i),\psi(x_j)]_{\forall j\in\mathcal{R}(i)}
δ(xR(i))=[φ(xi),ψ(xj)]∀j∈R(i)。
章节2.1和2.2描述的自注意力操作可以用于构建残差块,其用于执行特征汇聚和特征变换。我们的自注意力块如图1。
1)输入特征传递给两个流,左边的流冲过计算函数
δ
\delta
δ和接下来的映射
γ
\gamma
γ来计算注意力权重
α
\alpha
α,右边的流使用
β
\beta
β来转换特征到;
2)Hadamard乘积汇聚两个流的特征;
3)组合特征通过归一化和元素非线性传递,并由最终线性层处理,将它们的维度扩展回
C
C
C。
图1:自注意力块。
C
C
C是通道数,左边的流用于评估注意力权重
α
\alpha
α,右边的流用于转换特征,两个流均可高效地降低通道数。输出流通过Hadamard乘积汇聚并扩充维度为
C
C
C
参差网络将作为本注意力网络的基准线。表1展示了不同分辨率下堆叠注意力块的架构。
表1:不同图像分辨率的自注意力网络。"
C
−
C-
C−d linear"表示线性层的输出维度为
C
C
C,"
C
C
C-d sa"表示自注意力操作的输出维度为
C
C
C。SAN10、SAN15,以及SAN19对应ResNet26、ResNet38,以及ResNet50。SANX中的X表示自注意力块的数量。该架构完全基于自注意力
骨架. SAN的骨架分为五个阶段,每个都有不同的空间分辨率,降低因素为32。每个阶段包含多个自注意力块。连续的阶段由降低空间分辨率和扩展通道维度的过渡层桥接。最后阶段的输出由包括全局平均池、线性层和softmax的分类层处理。
过渡 (Transition). 过渡层降低了空间分辨率,从而减少计算负担并扩大感受野。该转换包括一个批量归一化层、一个 ReLU、步长为2的 2 × 2 2\times2 2×2的最大池化,以及扩展通道维度的线性映射。
自注意力的足迹。足迹 R ( i ) \mathcal{R}(i) R(i)控制了基于先前特征层的自注意力操作汇聚得到的信息的数量。SAN最后四个阶段的足迹大小设置为 7 × 7 7\times7 7×7,第一个阶段由于高分辨率以及连续的内存消耗,设置足迹大小为 3 × 3 3\times3 3×3。注意增加足迹的大小并不影响按对自注意力草书的数量。
实例化 (Instantiations). 可以调整每个阶段的自注意力块的数量,以获得具有不同容量的网络。在表1 所示的网络中,最后四个阶段使用的自注意力块数分别与ResNet26、ResNet38,以及ResNet50中的残差块数相同。