赞
踩
title: 论文列表
1. MLP-Mixer
- MLP-Mixer: An all-MLP Architecture for Vision
2. MetaFormer
- MetaFormer is Actually What You Need for Vision
MLP-Mixer论文原文
MLP-Mixer代码实现
MetaFormer论文原文
MetaFormer代码实现
随着Transformer这个外来物种的入侵,CV领域逐渐形成了Transformer和CNN二分天下的情况。在原有机器学习模型多层感知机MLP中也逐渐产生了变革,MLP-Mixer就是其产物。在MLP-Mixer工作中,研究人员表明,尽管Conv和attention都足以获得良好的性能,但它们都不是必须的,纯MLP+非线性激活函数+Layer Normalization也能取得不错的性能,其预训练和推理成本可与最新模型相媲美。
在MLP-Mixer为什么要使用全连接层,全连接的优点在哪。
因为其归纳偏置inductive bias更低。归纳偏置可以看作学习算法自身在一个庞大的假设空间中对假设进行选择性的启发式或者“价值观”。也就是我们告诉它要做的有哪些,归纳偏置越低,我们对模型的人为干预就越少。例如CNN的归纳偏置在于卷积操作的局部相关性和平移不变性。时序网络RNN的归纳偏置在于时间维度上的连续性和局部性。事实上,ViT已经开始延续了一直以来想要在神经网络中移除手工视觉特征和归纳偏置的趋势,让模型只依赖于原始数据进行学习,也就是我们所说的减少人为干预,像BERT一样尽可能让它学习无标签语料。MLP则在减少归纳偏置的路上更近了一步。
MLP-Mixer 的总体结构
全连接神经网络层相较于卷积神经网络层,并不能获取输入数据局部区域间的信息,为了解决这个问题,MLP-Mixer通过Per-patch 全连接层。
具体来说,MLP-Mixer将输入图像相邻无重叠地划分为S个Patch (类似于VIT模型中的patch划分),每个Patch先进行faltten操作打平空间信息,再通过MLP映射为一维特征向量,其中一维向量长度为C,最后将每个Patch得到的特征向量组合得到大小为SxC的2D Table。需要注意的时,每个Patch使用的映射矩阵相同,即使用的MLP参数相同。
例如,假设输入图像大小为240x240x3,模型选取的Patch为16x16,那么一张图片可以划分为(240x240)/(16x16)= 225个Patch。结合图片的通道数,每个Patch包含了16x16x3 = 768个值,把这768个值做Flatten作为MLP的输入,其中MLP的输出层神经元个数为128。这样,每个Patch就可以得到长度的128的特征向量,组合得到225x128的Table。MLP-Mixer中Patch大小和MLP输出单元个数为超参数。
实际上,Per-patch Fully-connected layer 实现了(W,H,3)的输入图像维度到(S,C)的特征向量维度的映射。
在上个例子中,我们把维度为[16,16,3]的patch打平成长度为768的向量(16x16x3 = 768 ), 之后经过MLP的映射作为2DTable的行,2DTable的行实际上代表了同一空间位置(某个patch)在不同通道上的信息,而列代表了不同空间位置(不同patch)在同一通道上的信息。换句话说,对Table的每一行进行操作可以实现通道域的信息融合,对Table的每一列进行操作可以实现空间域的信息融合。
在传统CNN中,可以通过1x1 Conv来实现通道域的信息融合,如果使用尺寸大于1的卷积核,可以同时实现空间域和通道域的信息融合。
在Transformer中,通过Self-Attention实现空间域的信息融合,通过MLP同时实现通道域的信息融合。
而在MLP-Mixer中,通过Mixer Layer,使用MLP先后对输入数据的列和行进行映射,实现空间域和通道域的信息融合。与传统卷积不同的是,由于Mixer Layer 对行列的操作是存在先后顺序的,这意味着 Mixer Layer 将空间域和通道域分开操作,这种思想与Xception和MobileNet中的深度可分离卷积相似。也类似于Transformer中,对空间信息和通道信息的分开处理。
如上图所示,Mixer 架构采用两种不同类型的 MLP 层:token-mixing MLP(图中的MLP1) 和 channel-mixing MLP(图中的MLP2)。token-mixing MLP 允许不同空间位置之间进行通信,可以融合空间信息;channel-mixing MLP 允许不同通道之间进行通信,可以融合通道信息。token-mixing MLP block作用在每个patche的列上,即先对patches部分进行转置,并且所有列参数共享MLP1,得到的输出再重新转置一下。channel-mixing MLP block作用在每个patche的行上,所有行参数共享MLP2。这两种类型的层交替执行以促进两个维度间的信息交互。 最后,Mixer Layer还加入了LN(Layer Normalization)和残差连接来提高模型性能。MLP1和MLP2都采用了相同的结构,如下图。
MLP-Mixer 的其整体思路为:先将输入图片拆分成多个 patches(每个 patch 之间不重叠),通过 Per-patch Fully-connected 层的操作将每个 patch 转换成 feature embedding,然后送入N个Mixer Layer。最后,Mixer 将标准分类头与全局平均池化层配合使用,随后使用 Fully-connected 进行分类。
与VIT模型相比,其第一步与 ViT 其实是一致的,之后,Mixer Layer 替换了 Transformer Block,最后直接的输出接到全连接层而无需 class token。此外,Mixer 的输出基于输入的信息,因为全连接层,交换任意两个 token 会得到不同的结果(对应的权重不一样了),所以无需 position embedding。
假设我们有输入图像 224 × 224 × 3 ,首先我们切 patch,例如长宽都取 32,则我们可以切成 7 × 7 = 49 个 patch,每个 patch 是 32 × 32 × 3。我们将每个 patch 展平就能成为 49 个 3072 维的向量。通过一个全连接层(Per-patch Fully-connected)进行降维,例如 512 维,就可以得到了 49 个 token,每个 token 的维度为 512。然后将他们馈入 Mixer Layer。
Mixer 架构采用两种不同类型的 MLP 层:token-mixing MLP 和 channel-mixing MLP。token-mixing MLP 指的是 cross-location operation,作用于列,可以用kernel_size为1的conv1d实现全连接的效果,混合不同patch的信息,即 混合提炼空间信息,对于 49 个 512 维的 token,将每一个 token 内部进行自融合,将 49 维映射到 49 维;channel-mixing MLP 指的是 pre-location operation,作用于行,简单的linear就可以实现,混合提炼不同通道信息。即对于 49 个 512 维的 token,将每一维进行融合,将 512 维映射到 512 维,即“混合”每个位置特征。为了简单实现,其实将矩阵转置一下就可以了。这两种类型的层交替执行以促进两个维度间的信息交互。
单个 MLP 是由两个全连接层和一个 GELU 激活函数组成的。此外,Mixer 还是用了残差连接(Skip-connection)和层归一化(Layer Norm)。以上操作的公式描述如下:
U
∗
,
i
=
X
∗
,
i
+
W
2
σ
(
W
1
∗
L
a
y
e
r
N
o
r
m
(
X
)
∗
,
i
)
,
f
o
r
i
=
1
,
.
.
.
,
C
Y
j
,
∗
=
U
j
,
∗
+
W
4
σ
(
W
3
∗
L
a
y
e
r
N
o
r
m
(
U
)
j
,
∗
)
,
f
o
r
j
=
1
,
.
.
.
,
S
U∗,i=X∗,i+W2σ(W1∗LayerNorm(X)∗,i),fori=1,...,CYj,∗=Uj,∗+W4σ(W3∗LayerNorm(U)j,∗),forj=1,...,S
U∗,iYj,∗=X∗,i+W2σ(W1∗LayerNorm(X)∗,i),fori=1,...,C=Uj,∗+W4σ(W3∗LayerNorm(U)j,∗),forj=1,...,S
采用 pre-location operation 和 cross-location operation的原因:
首先,在图像中的信息融合,无非就是分为固定位置的信息融合和位置间的信息融合。CNN 的卷积核大小为 K × K × C 其实是同时考虑了这两个,当 K = 1 时,是逐点卷积,考虑的是 pre-location operation ;当 C = 1 时,是逐层卷积,其实就是考虑了 cross-location operation。有的 CNN 变体,例如MobileNet,EfficientNet等等, 为了计算复杂度降低采用通道可分离卷积,先做 1 × 1 ,再做 DW 卷积,效果也可,说明他们可以不一起做。所以 MLP-Mixer 也干脆将这两个正交开来处理。
MLP-Mixer 有多个 Mixer Layer 拼接,Mixer 中的每一层采用相同尺寸的输入(token 维度不变),这种“各向同性”设计类似于Transformer 和 RNN 中定宽;这与 CNN 中金字塔结构 (越深的层具有更低的分辨率、更多的通道数) 不同。
至于最后的全局池化和全连接,则是相对普通的操作了,按照 Channel 对每个 token 进行池化,最后得到 Channel 维度的向量,然后经过一个全连接层输出目标分类分数即可。模型的结构图如下所示:
最终MLP-Mixer的网络配置如下
对MLP-Mixer分别使用ImageNet,ImageNet21k和JFT-300M三个数据集上进行预训练,然后在ImageNet上进行finetune,性能较ViT略差。
从CNN->ViT->MLP-Mixer的过程,是逐渐减少人为干预的一个过程,也就是尽量减少算法的归纳偏置的一个过程,也是算法越来越智能化的一种表现。我们甚至可以用全连接层来直接替换self-attention。然后绕一圈又回到了原始的MLP。实际上,最初CNN设计人为干预的归纳偏置,告诉计算机要做一个卷积,要多关注一些参数,少关注另一些参数这样的设计只是为了让计算机少走弯路,用人的经验给算法更多的指导,想让算法更快收敛,帮助算法模型快速在各种领域落地。而现在随着算力的提升,这样的一种设计仿佛是套在计算机身上的枷锁,反而限制它们的自我发挥,对acc、F1等结果反而起了反作用,所以现在数据量大了,算力提升了,就应该找到适合计算机自己的路,也就是低归纳偏置,甚至是不干预让它自己完成学习和计算。好像机器自己学习到的规律,其实比人赋予机器的归纳偏置要更合理。就像教孩子学习只能让他自己去悟才能更深刻更有效,当然这样低归纳偏置,甚至是0的前提是有大量数据供其学习,有足够算力支撑。所以,算法模型其实没有fashion和out,只有更适合这个时代,更适合这个情况。
what is all you need?
相比attention is all you need(Vision Transformer),MLP is all you need(MLP-Mixer),batches are all you need(ConvMixer)之后,新的问题出现了,在这样一个CNN,Transformer,MLP三分天下的世界,究竟怎么选定模型。MetaFormer提出了一个新的理念,什么算法其实不重要,重要的是这个框架。其实从这样三个模型中很容易看出,相同点便是近乎一模一样的框架。
MetaFormer是一种从Transformer模型中抽象出来的通用架构,没有指定token mixer,并提出了PoolFormer基线在分类检测和分割任务上进行验证。
Transformer 在计算机视觉任务中显示出巨大的潜力。最早很多研究者们都认为基于注意力的token mixer模块(即self-attention)对模型的能力贡献最大。然而,之前的介绍我们可以发现,transformers 中基于注意力的模块可以被 CNN,甚至 MLP 取代,并且结果模型仍然表现得相当好。
基于这一观察,MetaFormer假设Transformer的通用架构,而不是特定的token mixer模块,对模型的性能更重要。为了验证这一点,MetaFormer特意用一个非常简单的空间池化算子替换了 Transformer 中的注意力模块,以仅进行最基本的 token 混合,要知道池化算子本身是不带有任何学习参数的,而模型的表现依然不错,所以作者最后将Transformer的通用架构提取出来作为计算机视觉任务模型设计的核心,并称呼这个架构为MetaFormer。
为了证明Transformer结构才是模型有效的主要原因,而不是Self-Attention的token这一观点,作者用非常简单的非参数空间平均池化层pooling替换了注意力模块来进行消融实验。如果不带有学习参数的pooling代替关键的Self-Attention后都能产生不错的效果,那么是不是就可以证明Self-Attention并不是模型有效的关键信息。然而结果确实非常震惊的,使用pooling的Transformer模型在不同的计算机视觉任务上取得了有竞争力的结果。而pooling没有任何可学习的参数,只是简单的进行特征融合而已,这与self-attention计算过程中产生的大量参数和计算量形成了鲜明的对比。自注意力和spatial MLPs的计算复杂度都是和token的数量成平方比,因此自注意力和spatial MLPs通常只能处理几百个token, 而池化操作的复杂度和token的数量是呈线性比的。替换后的模型被命名为PoolFormer,并在性能、参数数量和 MAC(乘积和累加)方面与经典的 Transformer(例如 DeiT)和 MLP-like(例如 ResMLP)模型进行了比较。结果如下所示:
结果表明这个模型能够在多个视觉任务中达到很好的表现,比如在ImageNet1K数据集中,能够达到82.5%的准确率,超过DeiT-B(Transformer架构)和ResMLP-B24(MLP架构)的同时还能够大幅减小参数量。较DeiT-B 和ResMLP-B24 分别减少了48%和60%的参数量。PoolFormer的模型结构如下所示:
具体实现
在 PoolFormer 中,输入首先进行Patch Eembedding处理,类似于原始 ViT 的实现。然后将输出传递给 D 0 D_0 D0 阶段中的一系列 PoolFormer 块中。在 PoolFormer 中,注意力模块被一个stride=1的池化块代替,它执行平均池化,简单地使每个token的周边信息进行融合。在残差连接之后,经过一个MLP ,与原始 Transformer Block类似。
重复整个过程,构建4个Stage(D0 - D4 )的层次结构,通过池化将图像的原始高度和宽度压缩到H/32和W/32。 根据四个阶段计算得到的特征图的数量(C1 - C4),可用定义了不同大小的模型。L则表示模型中FoolFormer Block的数量,假设L=12 ,阶段 1、2 和 4 将包含2(L/6=2) 个PoolFormer 块,而阶段 3 将包含6(L/2=6)个块。
下图曲线可以很容易的看出来,在相同MACs下,PoolFormer 相比较于其他先进模型(RSB-ResNet,DeiT,ResMLP)可以获得更高的图像识别准确率。
PoolFormer 的有效性验证了最初的假设,并敦促作者定义了“MetaFormer”的概念,这是一种从 Transformer 中抽象出来的通用架构,没有指定token mixer。如下图所示:
MetaFormer中的token Mixer采用Self-Attention则变成了Transformer模型,采用Spatial MLP则变成了MLP类模型,采用Pooling则变成了PoolFormer模型
MetaFormer架构
输入信息先经过LN归一化处理后,馈入Token Mixer做计算,在LN的 Token Mixer 两端有一条残差连接;然后将计算结果送入Channel MLP中做处理,送入之前再经过一次LN操作,在LN和MLP的两端也有一条残差连接。至于Token Mixer中到底是什么结果其实并不重要,只要能对输入数据的空间信息做映射即可。再回想一下之前讲过的模型VAN,实际上就是使用LKA作为Token Mixer。实际上,很多基于TransFormer的改进模型都是可用使用MetaFormer架构来定义的。
在 ImageNet-1K 上,PoolFormer 实现了 82.1% 的 top-1 准确率,以 35%/52% 的参数减少了 0.3%/1.1% 的准确率,超过了经过良好调整的视觉Transformer/MLP-like 基线 DeiT-B/ResMLP-B24 MAC 减少 48%/60%。
在原论文的描述中,基于广泛的实验,作者认为 MetaFormer 是在视觉任务上为最近的 Transformer 和类似 MLP 的模型取得优异结果的关键参与者。这项工作需要更多致力于改进 MetaFormer 的未来研究,而不是专注于token mixer模块。此外,作者希望它们提出的 PoolFormer 可以作为未来 MetaFormer 架构设计的起始基线。题中的token mixer不重要,并不是指token mixer这个组件可以去掉,而是指token mixer是何种形式不重要,不论是self-attention、spatial mlp、conv/deptwise conv、还是最简单的pooling,只要能起到融合空间信息的作用,网络最终性能都差不多。所以涨点的原因可能是金字塔结构、残差连接、Normalization、GELU等。将满足这些性质的网络统称为MetaFormer。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。