如果视觉Transformer中去掉MSA部分,性能是否能达到相同的水平?或者说仅使用MLP来实现视觉任务是否可行?由此考虑到视觉MLP。

一、EANet(External Attention)

原文链接:https://arxiv.org/pdf/2105.02358.pdf

\begin{aligned} A&=\textup{Norm}(FM_k^T)\\ F_{out}&=AM_v \end{aligned}

其中M_kM_v为可学习的参数,不依赖于输入。Norm为double normalization(分别对行和列):

(\tilde{\alpha})_{i,j}=FM^T_k,\hat{\alpha}_{i,j}=\frac{\exp(\tilde{\alpha}_{i,j})}{\sum_k \exp(\tilde{\alpha}_{k,j})},\alpha_{i,j}=\frac{\hat{\alpha}_{i,j}}{\sum_k \hat{\alpha}_{i,k}}

二、MLP-Mixer

原文链接:https://arxiv.org/pdf/2105.01601.pdf

Mixer Layer

其中MLP为双层,层间有GELU激活函数。

网络结构

        将图像分成不重叠的patch,然后将维度投影为C,得X输入到Mixer中。Mixer包含2个MLP,第一个作用于列(所有列共享参数),第二个作用于行(所有行共享参数)。

Mixer公式(S为patch数量)

\begin{aligned} U_{\ast ,i}&=X_{\ast,i}+W_2\sigma(W_1\textup{LayerNorm(X)}_{\ast,i}),i=1,\cdots,C\\ Y_{j,\ast}&=U_{j,\ast}+W_4\sigma(W_3\textup{LayerNorm(U)}_{j,\ast}),j=1,\cdots,S \end{aligned}

        Mixer未使用position embedding,因为token-mixing MLP对输入token的顺序敏感,有可能学习到位置信息。

三、CycleMLP

原文链接:https://arxiv.org/pdf/2107.10224.pdf

实际为上述MLP-Mixer的改进。

传统MLP主要问题:(1)空间维度的MLP不能适应不同的输入大小;(2)channel维度的MLP不能捕捉空间交互。

模型结构

Patch Embedding

        使用大小为7的窗口(步长4)将图片分为有重叠的patch。然后将patch通过线性层得到高维特征。

        不同stage之间有transition部分,减少token数量,增加channel维度。

CycleMLP块

        Channel MLP为2个线性层(channel FC)+GELU。Channel FC和输入图像大小无关,但感受野只有1个像素。

        和传统MLP相比,Cycle MLP使用了Cycle FC层,使MLP类模型能够处理不同大小的输入图片。Cycle FC使用了3个并行的Cycle FC operator。

Cycle FC输出(S_P为感受野大小):

Y_{i,j}=\sum_{c=0}^{C_i-1}F^T_{j,c}\cdot X_{i+c\%S_p,c}

伪核

        将采样点投影到空间平面得到的区域。

四、gMLP

原文链接:https://arxiv.org/pdf/2105.08050.pdf

gMLP(g表示gating)包含L个相同的块,每个块如下:

\begin{aligned} Z&=\sigma(XU)\\ \tilde{Z}&=s(Z)\\ Y&=\tilde{Z}V \end{aligned}

其中\sigma为激活函数,s(\cdot )捕捉空间交互(当s(Z)=Z时为普通的双层MLP),\odot为按元素乘法。模型不需要position embedding,因其可由s捕捉。

        捕捉空间交互最简单的选择是线性层:

f_{W,b}(Z)=WZ+b,s(Z)=Z\odot f_{W,b}(Z)

这里s(\cdot )被称为SGU(spatial gating unit)。有点类似于SE(见5种2D Attention整理中的第三个),只是把池化变成线性层。

        同样有效的方法是,将Z沿channel分为两部分Z_1Z_2,然后

s(Z)=Z_1\odot f_{W,b}(Z_2)

此外可以在SGU中加入一个微型注意力机制,对应的模型称为aMLP。