当前位置 博文首页 > 忽逢桃林:5分钟就能学会的简单结构 | MLP-Mixer: An all-MLP Ar

    忽逢桃林:5分钟就能学会的简单结构 | MLP-Mixer: An all-MLP Ar

    作者:忽逢桃林 时间:2021-06-07 18:23

    • 文章转自:微信公众号「机器学习炼丹术」
    • 作者:炼丹兄(欢迎交流,共同进步)
    • 联系方式:微信cyx645016617
    • 论文名称:「MLP-Mixer: An all-MLP Architecture for Vision」
    • 论文链接:https://arxiv.org/pdf/2105.01601v1.pdf

    「前沿」:最近忙各种各样的事情,更新慢了。抽空写一点。这一篇内容很简单,只需要5min就可以学完。

    正文开始

    我们提供了MLP-Mixer架构,之后简称Mixer。这是一个有竞争力,但是概念和技术都很简单的结构,并且没有用到卷积和自注意力

    类似于transformer,Mixer模型的输入依然是图片的Patch经过线性映射之后的序列,简单的说就是embedding。是一个形状如同“patches x channels” 这样的一个特征。其中,我们把图片embedding之后的序列,叫做token

    下图是Mixer的宏观结构图:
    image.png

    Mixer利用了两种MLP层:

    • channel-mixing MLPs:允许不同channels特征之间的交流;
    • token-mixing MLPs:允许不同空间位置之间的交流。
    • 这两个MLP层是交错的。

    「图解读」

    • 从图中caption部分可以看到。“Per-patch Fully-connected”我认为就是embedding层,比方说把一个32x32x3的彩色patch图片,全连接映射到128维度的序列。
    • Mixer Layer就是文章提出的主要创新结构。其中,每一个Mixer Layer包含一个token-mixing MLP 和一个channel-mixing MLP,这两个结构都是由两个全连接层和GELU激活函数组成。
    • 我们再来看上图的上面部分,体现了Mixer Layer的细节:首先,假设一个图片被分成了9个patch,然后每一个patch经过embedding,变成了一个128的向量。那么原图经过embedding,最终得到的是9x128这样的一个矩阵。
      1. 这个矩阵先经过LayerNorm,相当于是在128这个维度上进行归一化;
      2. 然后矩阵经过转置,变成128x9的样式;
      3. 经过第一个全联接层,这个MLP应该就是channel-mixing了,因为是对9这个patch维度进行计算;
      4. 然后再转置成9x128,再进行layer norm;
      5. 然后token-mixing channels,在128这个spatial维度上进行计算;
      6. 中间加了两个skip connection。

    「这里,我们可以发现,整个结构确实非常简单,回头试试效果去。」

    bk