前言
本文写于2021年8月27日。最近好像没人写这方面的总结,我就稍微写一写。
Transformer最近成为cv学术圈的宠儿,有声音鼓吹要取代CNN。其实所谓的self-attention, 简单地说,就是输入I乘以一个权重P得到一个新权重Q,再乘以I本身。虽然在推断时P是固定的,但Q的值也取决于I,由于I是变化的,于是乎美其名曰“自适应”“动态权重”。CNN可以实现类似的功能,更不用说MLP。
Transformer热潮未过,谷歌又吹响了复兴MLP的号角,一系列魔改接踵而至。MLP能否达到Transformer的热度?拭目以待。
为什么需要复兴MLP?我觉得有两个原因很重要:简单,通用。目前的实验结果表明,MLP确实有成功的可能。
先锋:MLP-Mixer
MLP-Mixer: An all-MLP Architecture for Vision
MLP-Mixer让大家重新注意到纯MLP架构在CV中的应用。这篇文章也受到很多吐槽,主要是因为CNN中卷积操作与MLP中全连接操作可以相互转化。卷积是全连接的一种特化,所以可以将卷积核参数转化成全连接的参数矩阵;而全连接操作即二维矩阵相乘可以看成为1x1卷积。所以MLP-Mixer既可以用全连接来实现,也可以用卷积来实现。
预处理层
要证明一个新结构的有效性,往往先在CV最基础的任务——图像识别上进行验证。最近的MLP网络大都遵循预处理层->多个堆叠的block->分类器。不同网络的差异主要体现在block。分类器就是和类别数目相关的一层MLP,而预处理层负责将输入图像抽象成二维矩阵,便于后续进行矩阵乘法。这里先具体介绍一下预处理层。
假设输入图像大小为
(
W
,
H
,
3
)
(W,H,3)
(W,H,3),沿着长和宽将其均匀得分成
w
∗
h
w*h
w∗h块,每块的大小为
(
W
/
w
,
H
/
h
,
3
)
(W/w,H/h,3)
(W/w,H/h,3)。将块伸展成大小为
(
W
∗
H
∗
3
/
(
w
∗
h
)
)
(W*H*3/(w*h))
(W∗H∗3/(w∗h))的向量,所有块按行拼成大小为
(
w
∗
h
,
W
∗
H
∗
3
/
(
w
∗
h
)
)
(w*h, W*H*3/(w*h))
(w∗h,W∗H∗3/(w∗h))的二维矩阵,经过一层mlp提出特征,得到大小为
(
w
∗
h
,
c
)
(w*h, c)
(w∗h,c)的输出,其中
c
c
c为每个块特征的长度。
形形色色的block
如何让输入的各元素进行充分地进行信息交互是研究的重点。什么是信息交互?举个例子,加权和是神经网络里常用的计算方式,如果一组元素加权和得到一个输出,则称这组元素互相进行信息交互,因为它们一起为输出的某个值作贡献。
在预处理层得到了大小为
(
w
∗
h
,
c
)
(w*h, c)
(w∗h,c)的特征图。其中
w
∗
h
w*h
w∗h表示图像分块的数量,这个维度包含空间信息。假设输入输出大小不变,考虑普通的全连接操作,即有个大小为
(
c
,
c
)
(c, c)
(c,c)的权重矩阵,与输入特征图做矩阵乘法,得到大小为
(
w
∗
h
,
c
)
(w*h, c)
(w∗h,c)的输出特征图,图示如下
会发现只是按行交互,即只是进行通道之间的交互。这种称为通道间的全连接操作(Channel FC)。为了按列交互,即进行空间上的交互,MLP-Mixer添加了空间上的全连接操作(Spatial FC),图示如下
MLP-Mixer的block长下面这样。图中MLP1是Spatial FC, MLP2是Channel FC。
Spatial FC的权重矩阵大小为
(
w
∗
h
,
w
∗
h
)
(w*h, w*h)
(w∗h,w∗h),其中
w
,
h
w,h
w,h都由图像大小决定,这就导致了MLP-Mixer要求输入图像的大小是固定的,而不像CNN那样可以处理变长数据。有什么方法既可以交互空间上的信息,又可以处理变长数据呢?目前针对Spatial FC的优化参考了ShuffleNet中的通道交换思想,按一定方法对空间维度上的值进行采样,然后进行Channel FC。比如CycleMLP的按阶梯方式采样
无独有偶,S2MLP的Spatial Shift 模块将通道分成四组,分别向前后左右四个方向位移一个单位进行空间信息的交互。
还有许多魔改网络,总的来说大同小异,这里不多说。
再审视“纯MLP”网络
去卷积,却又处处是卷积。
- 预处理层可以用大小为 ( 3 , c , W / w , H / h ) (3,c,W/w,H/h) (3,c,W/w,H/h)的卷积实现。
- Channel FC和 Spatial FC,前面说了,可以用大小为 ( c , c , 1 , 1 ) (c,c,1,1) (c,c,1,1)和 ( h ∗ w , h ∗ w , 1 , 1 ) (h*w,h*w,1,1) (h∗w,h∗w,1,1)的卷积实现。
- Cycle FC 和 Spatial Shift 本质是先进行空间移位再进行Channel FC。而空间移位操作也可以用参数固定的卷积实现。
究竟什么是完美的inductive bias
为了简化问题,算法往往会对问题做一些符合认知的假设,即inductive bias,中文翻译是归纳偏置。
CNN的inductive bias是邻域相关性和空间不变性。领域相关性指二维空间上互相靠性的元素有联系而远的没有,所以卷积核有个相对小的面积,常用的比如
3
×
3
3\times 3
3×3; 空间不变性指卷积核参数在各位置共享。
而MLP-Mixer的inductive bias是全局相关性,空间上的联系不再局限于领域而是全局。S2MLP和CycleMLP也是如此,不过加了更多的人工规则。
笔者认为,各种各样的inductive bias可能有效,却很难接近完美。