图像分类(image classification)一直都是计算机视觉研究中非常基础且重要的一类任务,在深度学习为主导的近十年中已经普遍继承了通用卷积神经网络(CNN)的基本范式,大部分思路多着眼于不同网络模型的设计和模块创新,少有直接对卷积神经网络本身既定框架的颠覆性工作。Transformer 在自然语言处理任务上获得成功之后,注意力机制(attention)在视觉任务方向也获得很多关注和应用,它们中的大多数工作也被认为是十分有效的性能提升部分。
然而近期 Google brain, Oxford, 清华大学等研究机构分别发表了自己对多层感知机(MLP)在视觉分类中起到作用的重定位,引起了广泛的学界思考:深度学习网络是否经历了从 CNN 开始一系列的主干变化之后,重新收敛于普通简明的多层 MLP 范式了?MLP 框架是否存在普适性,潜在的科研和商用价值有多高?新的框架提出又会对之后的视觉研究和技术应用提供哪些潜在的可能性和创新启发呢?
本文基于以上的问题,结合作者最近读过的上述三篇 MLP 论文,单对神经网络模型相关的图像分类任务做一个简单的发展梳理,之后针对近期提出的三篇论文,将其所提到的方法进行概述和观点提炼,并尝试总结此类研究所带来的的意义和未来潜力。
0. 神经网络图像分类发展简述
其实早在 20 世纪,使用神经网络进行图像分类就有 Neocognitron,ConvNet,以及 LeNet 等早期的雏形,如 LeNet 非常有效地完成了受限于数字识别的任务,且卷积的概念也早早出现,然而因为计算机算力的不足在较长一段时间内并没有取得更多的进展。
大部分人更加熟悉的在于 2012 年 AlexNet 利用 GPU 在当年的视觉图像分类挑战赛(ImageNet)上取得了非常惊人的 Top-1 准确度,之后以卷积层为范式的卷积神经网络(CNN)发展出多种经典模型。
在 2014 到 2017 年间,Inception, ResNet, VGG 等模型均达到了非常好的 SOTA 性能,其设计的小卷积核感受野,多路跨层链接等等模块设计都被证明非常的有效。在很长一段时间内 CNN 作为骨干是处理深度视觉任务的不二之选,可参考下图各个经典 CNN 网络模型的提出和演变过程:
接下来便是 2017 年附近,人们发现注意力机制在捕捉及加强视觉特征提取过程中也非常有效,并有了少量工作进行尝试。2018 年左右,本用于自然语言处理的 Transofmer 被发现其在视觉分类等等任务方面也有非常强的可迁移性,于是 Transformer 成为了近两年来炙手可热的视觉研究主题,人们前所未有的关注图像局部块之间的上下文关系,将卷积网络时期的感受野学习进一步改善为特征或图像块之间的关联学习。注意力相关的工作也有了井喷式发展,比如 Vit[9], Deit[10] 就是最初有效融合 Transformer 思想的工作,DeepViT[11] 则是尝试混合多个注意力模块(attention head mixing),CaiT[12]将原 Transformer 中的注意力层分化为两个阶段进行学习,CrossViT[13],PiT[14],LeViT[15],CvT[16]以及其他更多相关工作都把 Transformer 对于全局长依赖捕捉的优点更近一步发扬,且尝试与之前的 CNN 中被证明非常有效的模块如池化(pooling)相结合,引领了 CNN 之后的另一轮模型革新潮流。
1. 注意力是分类性能的保障吗?
Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet
在引入当前激烈讨论的 MLP-Mixer 模型之前,我们首先来看这篇牛津大学的 4 页研究报告,一定程度上它简明地回答了一个问题:注意力机制是保障图像分类任务性能的关键吗?我们知道自从 Transformer 被证明在视觉任务上同样可行后,许多视觉相关的任务也随之应用该范式,且普遍都将性能提升归功于注意力机制,声称注意力机制为网络引入了全局感受野(global receptive field),并在不同的工作中致力于提升注意力模块的效率及有效性。于是该文章在 ImageNet 数据集上做了一个 “严格控制变量” 的图像分类实验:在不改动注意力分类网络其他结构和参数设置的情况下,单纯将每个注意力网络层替换为一个简单的前传网络层(feed-forward layer),由此原先的 Transformer 模型可被看为由多层前传网络层构成的一个 MLP 分层网络,如左下图所示。
在实验部分,论文作者采用了目前 Transformer 分类器中的代表作 ViT 以及 DeiT,继承其所有的模型结构与超参设置,并依据 ViT,Deit 的 Tiny, Base, Large 三个网络结构,在 ImageNet 数据集上训练了三个 feed-forward only 模型(FF only)。参照右上图训练结果,Tiny 网络中 FF only 模型表现相比于 attention 模型,参数数目较多的情况下性能也并不占优。然而当模型增大为 Base 与 Large 时,仅有前传层的 FF only 表现就非常的惊艳了,在参数数目相比也较少的情况下,纯前传层构成的 MLP 模型 FF only 取得了几乎持平甚至占优的 Top-1 分类精确度,这从侧面也说明了MLP 模型在较复杂较大的网络中有不俗的表征能力。
为了更加公平的比较,论文作者也试图将所有前传层都替换为注意力层,类比实现一个 attention only 的模型来进一步探究注意力机制的表现力,然而注意力网络在 tiny 模型上训练了 100 个 epochs 之后也只能达到 28.2% 的 top-1 准确度。由以上实验,论文作者推断一个好的 Transformer 分类器并不一定需要注意力模块来保障性能,可能是图片块的映射嵌入(embedding)或者 Transformer 本身自成体系的训练流程保证了性能的优越性。
下图附上 FF only 模型中替换注意力模块的线性前传模块,可以看出实现直观简单,感兴趣的读者同样可以根据此做更多的扩展性探索和实验。
总体来说这篇文章提出的问题非常鲜明,提出的论证过程本身也非常有趣。论证的过程虽然实验设置相对有限,但也在一定程度上回答了开头的疑问:特定的注意力模块并不一定就是性能保证,同时文章非常吸引人的一点在于,它为业界指出了一种可能性:当你面临较大模型的需求时,根据实验中 MLP 模型的表现力来看,它很有可能成为一个保证性能同时节省性能的不错替代方案。
2. MLP 有望成为新的视觉范式
MLP-Mixer: An all-MLP Architecture for Vision
通过牛津大学的文章我们了解到多层感知机(MLP)的表现能力不俗,在替换了视觉 Transformer 模型中的注意力模块之后依然能够实现优秀的分类性能,而被持续关注多时的注意力模块似乎并不能独当一面——在单独存在时作为一种新的计算范式去支撑一个高精度的模型,其本身也更多还是依托于一个好的骨干模型。谷歌大脑近期提出的 MLP-Mixer 就更进一步,让我们看到 MLP 模型完全有机会成为与传统卷积网络(CNN),Transformer 之后的下一种视觉研究范式。
自从深度学习兴起,它一直倾向于直接从原始数据中学习所需要的视觉特征,尽可能避免认为构造特征或设置归纳偏置, CNN 一直默认为此种学习思想下的一种标准,一两年前视觉的 Transformer 取得了 SOTA 的成绩,成为了另一个可选项。不同于前两者,谷歌提出的 MLP-Mixer 结构完全摒弃了卷积或是注意力机制,完全基于多层感知机结构,只依赖基础的矩阵相乘,重复地在空间特征或者通道特征上计算抽取。
MLP-Mixer 的结构如下图所示:
首先将大小为 HxW 的的输入图像切割为不重合的 S 个小方块(Patch),每个方块的分辨率均为 PxP,随之所有图像方块经过统一的线性映射变为隐藏维度是 C 的张量,由此输入 MLP-Mixer 的数据就转换为一个维度 SxC 的二维矩阵表 X,X 在之后的计算流程会经过多个 Mixer 层,其包含两类 MLP 计算层:a.token-mixing MLPs 和 b.channel-mixing MLPs, X 首先通过 token-mixing MLP 计算不同方块张量之间的联系,获得特征 U,之后再经过 channel-mixing MLPs 来计算通道之间的特征 Y:
在模型的最后 MLP-Mixer 也接了一个常见的全连接分类模块,来完成最终的类别预测。除此之外,MLP-Mixer 由于采用的 token-mixing MLP,导致它并不需要输入图片的位置编码信息,本身就对每个图像块的位置有了一定的敏感度,同时其采用的参数绑定(parameter tying) 也使得参数体量能够大幅度的减少。
实验部分作者采用了三个规格的模型大小分别为 base(B),large(L), huge(H), 对应的 MLP-Mixer 模型不仅在 ImageNet 与 JFT-300M 这几个大数据集上进行了 pre-train,也同时通过在中小数据集上微调(fine-tune)来进一步测试 MLP-Mixer 的迁移学习能力。与此同时与 MLP-Mixer 对比的模型均为 CNN 类别或者 Transformer 类别中实现 SOTA 性能的模型,例如 HaloNet,ViT。
通过实验结果汇总,也可以看出无论是预训练或是微调迁移,MLP-Mixer 虽然没有能达到 SOTA 的精度,但是各方面已经可以与当今的两个主流 SOTA 模型相当,同时在效率吞吐方面也存在着不错的优势。
更进一步,文章将每个输入图片方块的权重进行了可视化,可以观察的出来由粗到细、由轮廓到慢慢具象化的一个演变过程其实与 CNN 中提取视觉特征的过程也是有异曲同工之妙的。
总的来说,这篇文章提出了一个非常新颖但是有效的网络结构,涉及的方法理论并不复杂且模型结构直观,实验全面详实,是一篇非常有启发性的的 MLP 分类开山之作。尤其需要指出的是,在 MLP-Mixer 的结构描述中,对于如何设置各个 MLP 模块的顺序,以及如何进行图像映射,包括同样沿用了一个非常经典的 skip-connection 结构等方面看,是否也从某个侧面呼应了第一篇中 FF only 的部分猜想:怎样进行特征的嵌入映射,与一个合理的训练计算流程,或许才是一个高精度模型背后的支撑面。
从学术研究的角度看,MLP-Mixer 的提出启发更多学者关注到 MLP 网络结构是有潜能成为继 CNN,Transformer 之后的第三种范式的,更加先进有效的网络结构甚至微调延伸,也会不断出现并帮助完善这个研究分支。工业化部署的方面看,MLP 模型也确实为不少在性能和效率的 trade-off 之间挣扎的企业和工程师提供了新的思路,尽管目前的 MLP-Mixer 并不是精确度最优的解,但是其在效率利用甚至内存节省方面似乎看起来会比注意力机制为主的 Transformer 有更多的想象空间。
希望详细了解 MLP-Mixer 计算细节的读者可以参考我们之前的文章[7],[8]。
3. MLP 与 CNN 的结合
RepMLP: Re-parameterizing Convolutions into Fully-connected Layers for Image Recognition
清华的这篇 RepMLP 是一种 MLP 与 CNN 进行结合的新尝试,它尝试将各自网络模块的优势进行混合来实现更好的性能提升,并不限于分类,而是在多个视觉任务方面都给了我们一些全新的启发。已知全连接层通常来说更加擅长于建立特征的长依赖关系与空间关系,但是并不擅长于捕捉局部的特征或模式识别,这也一定程度上解释了 ViT 之类的模型为何需要数量更加庞大的训练集或者充分的数据扩增(data augmentation),二者都有类似难以建立局部特征的毛病。于是文章提出了 RepMLP,模型主体利用多层神经网络提取长期依赖关系与空间信息,同时利用结构化的重参数化(re-parameterization),在网络训练时候将多个卷积模块与全连接并行,用其抽取对应的局部先验知识并最后进行信息融合汇总。且 RepMLP 还巧妙地利用重参数化将推理时的参数与训练时的参数进行了再度转化,从而实现推理模型精简的目的。
RepMLP 模型总的来说并不复杂可参考其结构图如下: