《MLP-Mixer: An all-MLP Architecture for Vision》2021

摘要:卷积网络CNN是计算机视觉中的必用模型。最近,基于注意力机制的网络结构,比如视觉Transformer,也越来越流行。在这篇文章中我们将展示,虽然卷积和注意力机制是获得优良性能的必要结构,但它们都不是必须的。我们提出MLP-Mixer,一个仅仅基于多层感知机(MLPs)的结构。MLP-Mixer包含两种类型的网络层:一种是独立应用于图像patch的多层感知机MLPs(比如 "混合"每个局部特征)。另一个是应用于交叉patches的多层感知机(比如 “混合”空间信息)。当MLP-Mixer在大的数据集上训练,或使用当下流行的正则化策略,它能够在图像分类任务中获得有竞争力的分数, 在预训练和推理代价与STOA 模型相当的条件下。我们希望这些结果能够激发进一步的研究,超越已经建立的卷积和Transform的范畴。

 

简介

        计算机视觉的历史证明,更大数据集(伴随增加的计算容量)的有效性通常导致范式偏移。虽然卷积神经网络CNNs已经成为计算机视觉任务中的实际标准,最近视觉Transformer(ViT),一个另外的基于自注意力机制的层,获得了最高水准的表现。ViT将延续一个长时间的从模型中移除手工视觉特征和感应偏移量的趋势,并且更一步依赖于从原始数据中学习。   

        我们提出MLP-Mixer结构,一个有竞争力但是从感知上和技术上比较简单的另类结构,它不使用卷积层和自注意力层。相反,Mixer结构完全基于多层感知机结构,它被重复应用于空间位置或者特征通道。Mixer只依赖于基础的矩阵乘积方法,转换数据布局(reshapes操作和transposition操作)和尺度非线性。Fig1描述了Mixer的微结构,它接受一个线性映射图像(也被称为tokens)patches,这个patches被转换为一个“patchesXchannels”表作为输入,并且维持这个维度。Mixer使用两类MLP层:通道混合(channels-mixing)MLPs和标记混合(tokens-mixing)MLPs。通道混合MLPs允许不同通道之间的信息交流,它单独作用于每一个token,使用上述“patchesXchannels”表中的每一行作为输入。标记混合MLPs允许不同空间位置的标记之间交流信息,它们单独作用于每一个通道并取上述表中的每一列作为输入。这两种类型的层交错连接让所有输入维度相互影响。

       在极端情况下,我们的结构能够视为一个非常特殊的CNN层,它使用1X1卷积做通道混合,一个全感受野的单通道逐深度卷积和参数共享机制做标记混合。但是反之并不正确,因为一个典型的CNN结构并不是Mixer的特殊情形。更进一步,一个卷积运算比MLPs中单纯矩阵相乘更加复杂,因为它需要额外的代价还原矩阵乘积或者特殊化实现。

       尽管Mixers非常简单,它获得了非常有竞争力的结果。当在大数据集上做预训练,它获得了接近现在最好模型的结果(那些被CNNs和Tranformer取得的),在精确度和计算代价的权衡下。这包括ILSVRC2012 “ImageNet”竞赛上的87.94%的top-1 验证集准确率。

2. Mixer Architecture

       当前深度视觉结构包含神经网络层,这些层在(1)一个给定的空间位置混合特征,(2)在不同的空间位置混合特征,或者一次同时兼顾(1)和(2)。在CNNs结构中,(2)由一个NXN的(对于N>1)卷积层和池化层实现。在更深的层中的神经元有更大的感受野。在同一时间,1X1卷积层也能够实现(1),更大的核 同时实现(1)和(2)。在视觉Transformer和其他基于注意力的结构中,自注意力层同时实现(1)和(2),  MLP实现(1)。Mixer结构背后的思想是清晰地分开逐位置(channel-mixing)操作(1)和跨位置(token-mixing)操作(2)。这两种操作都在MLPs中实现。

       Fig1总结了整个结构。Mixer将一个序列的S个非重合图像patch块作为输入,每个投影到一个预期的隐藏维度C。这产生了一个二维实值输入表, X\epsilon R^{S\times C}。如果原始输入图像的分辨率是(H,W),每个patch的分辨率是(P,P),那么patch块的数量是S= HW/P^{2}。所有patch被一个相同的投影矩阵线性投影。Mixer包含多个有相同大小的层,每一层有两个MLP blocks。第一个是标记混合MLP blocks,它作用于X(例如 它作用于输入table的转置X^{T})中的列,映射R^{s}\rightarrow R^{s},它在所有列中共享参数。另一个是通道混合MLP blocks,它作用于X的行,映射R^{c}\rightarrow R^{c},它在所有行中共享参数。每个MLP block包含两个全连接层和一个独立应用于输入tensor的每一行的非线性层。Mixer层可以被写为如下公式:

U_{*,i}=X_{*,i}+W_2\sigma \left ( W_1LayerNorm\left ( X \right )_{*,i} \right ), for\, \, \, i=1...C

Y_{j,*}=U_{j,*}+W_4\sigma \left ( W_3LayerNorm\left ( U \right )_{j,*} \right ), for\, \, j=1..S.

其中\sigma是一个逐元素非线性化(GELU)。D_SD_c分别是标记混合和通道混合MLPs中的可调宽度。注意到D_s的选择独立于输入patch的数量。因此网络的计算复杂度与输入patch数量成线性关系,不像ViT网络,它的计算复杂度成平方关系。因为D_c独立于输入patch的大小,其全部计算复杂度与输入图像中的像素数量成线性关系,类似于一个典型的CNN网络。

        如上所述,相同的通道混合(标记混合)MLP结构应用于输入X的每一行(每一列)。捆绑通道混合MLP层中的参数是一个自然的选择------它提供了位置不变性,一个卷积的基础特性。但是,捆绑跨通道参数是非常少见的。例如,在一些CNN网络中应用的分离卷积,将卷积操作应用于每一个通道(独立于其他通道)。但是在分离卷积中,不同的卷积被应用于每一个通道。这不同于Mixer中的标记混合MLPs结构,所有的通道共享相同的核(全感受野)。参数捆绑阻止结构在增加隐藏维度C或者序列长度S的情况下增长过快,导致巨大的内存储存。令人吃惊的是,这个选择并不影响网络的实际表现。

       在Mixer中的每一个层(除了第一个初始映射层)接受相同尺寸的输入。这个各向同性的设计非常类似于Transformer结构,或者其他领域中的深度RRN结构,它们也使用固定跨度。这不同于那些有金字塔结构的CNN网络:更深的层有更低分辨率但是更多通道数的输入。值得注意的是,尽管这些是经典的设计结构,其他组合仍然存在,比如各向同性ResNets和金字塔ViTs。除了MLP层,Mixer使用其他标准结构组件:skip-connection和层归一化。更进一步,不像ViTs,Mixer没有采用位置embedding,因为标志混合MLP层对输入标志的顺序敏感,因此可能学习如何表达位置。最后,Mixer使用标准分类头结构,这个结构是一个全局平均池化层接一个线性分类器。

 

3. 实验

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值