1. 从“异想天开”到“大道至简”:MLP-Mixer的颠覆性思想
如果你在过去几年一直关注计算机视觉领域,可能会和我有同样的感觉:这个领域的发展,简直像一场“军备竞赛”。先是卷积神经网络(CNN)靠着它的“局部连接”和“权重共享”横扫千军,从AlexNet到ResNet,模型越来越深,结构越来越复杂。紧接着,Transformer这个原本在自然语言处理领域称王的架构,被Vision Transformer(ViT)搬到了图像上,用“注意力机制”告诉世界,没有卷积也能玩转视觉。就在大家争论是该继续卷CNN的变体,还是All in Transformer的时候,谷歌在2021年NeurIPS上扔出了一篇“重磅炸弹”——MLP-Mixer。它的核心思想简单到让人怀疑:我们能不能只用最基础的多层感知机(MLP),也就是全连接层,来构建一个强大的视觉模型?
我第一次读到这篇论文时,反应是:“这太疯狂了!” 要知道,全连接层在处理图像时有个致命弱点:参数量爆炸。一张224x224的图片,如果直接拉平成一个向量,输入到一个全连接层,那参数数量将是天文数字,根本无法训练。所以CNN用卷积核来局部感受,ViT把图像切成小块(Patch)再用注意力去关联。而MLP-Mixer的想法是,我们不直接处理原始像素,而是先像ViT一样,把图像切成一个个小块(Patch),把这些小块视为一个“序列”。然后,我们用两种极其简单的MLP,分别在这个序列的两个维度上做“混合”。这个想法妙就妙在,它把高维的、结构化的图像数据,通过“切块”和“转置”这两个简单的操作,转化成了可以用标准矩阵乘法高效处理的形式。
这背后其实是一种“大道至简”的哲学挑战。它问了一个根本性问题:视觉任务所必需的核心归纳偏置(Inductive Bias)到底是什么?CNN的答案是“局部性”和“平移等变性”,Transformer的答案是“全局注意力”。MLP-Mixer的答案则是:或许我们不需要那么强的、手工设计的偏置,只要有足够的数据和合适的结构,简单的MLP也能从数据中学到这些特性。 这种思想对习惯了复杂架构的我们来说,是一次彻底的思维刷新。它不追求结构上的精巧,而是回归到最基本的矩阵运算,试图证明视觉表征学习的核心能力,可能就蕴藏在这些最基础的数学操作之中。
2. 核心解剖:Token Mixing与Channel Mixing如何工作?
理解了MLP-Mixer的“世界观”,我们再来拆解它的“方法论”。它的整个架构,就像它的名字一样,是一个“混合器”(Mixer)。混合什么呢?混合的是图像Patch序列中蕴含的两种信息:空间信息(不同Patch之间的关系)和通道信息(每个Patch内部不同特征维度之间的关系)。为了实现这种混合,它设计了两种核心层,这也是整个模型唯二的运算单元。
2.1 Token Mixing MLP:跨越空间的“信息交换所”
首先,我们得明确输入是什么。假设输入图像是3x224x224,我们像ViT一样,用一个16x16的卷积核(步长也为16)去做“切块”,这个操作在代码里通常叫Patch Embedding。我们会得到 (224/16)^2 = 196 个块,每个块被展平成一个 16163=768 维的向量。所以,输入到Mixer Block的数据形状是 (Batch_Size, 196, 768)。我们可以把它想象成一张表格,有196行(代表196个空间位置),每行有768个特征(代表这个位置的颜色、纹理等信息)。
Token Mixing MLP的任务,就是让这196行数据之间进行交流。 它的操作非常直接:
- 转置:先把输入从
(B, 196, 768)转置成(B, 768, 196)。这下,原来的“特征维度”变成了“序列长度”。 - 全连接处理:然后,对这个形状为
(B, 768, 196)的张量,沿着最后一个维度(196) 应用一个共享的MLP。注意,这个MLP是独立作用于前面768个“通道”中的每一个的。也就是说,对于768个通道中的每一个,都有一个相同的小型神经网络(比如一个两层MLP)来处理它对应的那196个数值。这个过程就是“Token Mixing”,因为它混合了不同空间位置(Token)的信息。 - 再转置回来:处理完后,再转置回
(B, 196, 768)的形状。
我刚开始看代码时,对这个转置操作有点迷糊。后来想明白了,这其实是一个计算上的技巧。在PyTorch里,全连接层(nn.Linear)通常作用于输入的最后一个维度。如果我们想对“序列维度”(196)做全连接,而保持“通道维度”(768)独立,最直接的方法就是把这两个维度交换一下。这样,一个 nn.Linear(196, hidden_dim) 的层就能独立地处理每个通道的序列信息了。这个设计非常巧妙,它用最基础的线性层,实现了类似自注意力机制的“全局信息交互”,但计算方式简单得多。
2.2 Channel Mixing MLP:特征内部的“精炼工厂”
完成Token Mixing后,数据形状恢复为 (B, 196, 768)。接下来轮到Channel Mixing MLP上场了。它的目标正好相反:让每个空间位置(即每一行)内部的768个特征之间进行充分的交互和融合。
这个过程更符合我们对传统MLP的认知:


244

被折叠的 条评论
为什么被折叠?



