MLP-Mixer, FNet 2021-05-29

传统CNN,卷积加下采样进行特征提取,全连接进行全局的特征融合

视觉任务一直是以CNN为主流,2020年出现了基于NLP领域Transformer的模型Vision Transformer,用自注意力机制来替换CNN,而同一团队今年发表了MLP-Mixer,表示也许CNN和Attention都不是必须的。最原始的神经网络模型 MLP就能达到媲美(稍逊)CNN的效果。

MLP 处理视觉任务

MLP Mixer : https://arxiv.org/pdf/2105.01601.pdf

对图片的处理类似ViT。

首先如ViT中一样处理图片,分成不同的patch,压扁,进行线性变换得到指定的通道数。不同的patch用不同颜色表示。核心部分mixer layer只使用了全连接层,辅以GeLU激活函数,归一化方法和跳跃连接。实现起来也很简单,只不过需要的训练数据有亿点点大,比如说有3亿图片的JFT-300M。

在详细看mix layer之前,不妨回顾一下MLP和CNN的特点和区别。

MLP 和 CNN的区别

全连接层和卷积层都是简单的加权求和,但是全连接的结果来自于上一层所有神经元,卷积的结果来自于上一层所有通道的局部的神经元。如果单单从特征融合这个角度来观察,全连接层中,融合的是一个维度中各个位置的特征,而在卷积层中,进行了局部的不同位置上的特征融合,又进行该局部的不同通道上的特征融合。

而只能在一个维度上进行的全连接,有没有办法做到和卷积层一样的效果呢,可以的,分两次进行就好啦。

( 注意力机制也可以同时进行两者。)

Mixer Layer

那就是这篇论文的主角 Mixer Layer的策略:

先看输入部分,通过线性变换我们得到一个二维矩阵,一维是channel,另一维是patch,每个patch的长度是之前压扁的二维图像。既然MLP只能在一个维度上进行,作者就通过矩阵转置,让MLP在每个通道的不同位置进行一次,再在同一个patch的不同通道进行一次。

MLP1和2分别被称为 token-mixing 和 channel-mixing。

Mixer Layer : 先在同一通道中的不同patch中进行 (token-mixing MLP),再在同一patch的不同通道中进行 (channel-mixing MLP)。

虽然说MLP-Mixer表示不使用卷积,然而官方实现的第一步就是用的卷积操作。。。正如LeNet作者LeCun的twitter所抱怨的,其实就是个核的大小和步长都等同于patchsize的卷积罢了。 至于后面的全连接操作,同样也可以用1*1卷积来实现。

LeNet解释卷积的关键在于局部连接和共享参数,MLP Mixer通过划分patch达到了局部连接的目的,由于MLP的参数共享,所以这个关键也算达成了。MLP Mixer的论文表示,MLP可以干CNN的活,然而这个MLP在实现中用的又是卷积的函数。其实叫全连接或者卷积并不重要,毕竟矩阵乘法表示,相煎何太急。

其他

LN比起BN可以保持样本之间的独立性,
如果在数据集不够大,使用dropout之类的正则化技术也能炼成比较理想的模型。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容