炼丹笔记干货
作者:十方
众所周知,transformer已经不止火在nlp了,ViT(如下图所示)也大有取代CNN之势。我们认知中transformer最重要的部分莫过于多头的self-attention机制了,该机制发掘不同token之间的空间信息联系。这篇论文<Pay Attention to MLPs>提出了一个更简单的架构,gMLP,使用gating机制,达到和transformer在nlp或者计算机视觉一样的效果。
gMLP
gMLP也是L层block堆积而成(如下图所示),输入为X(n*d),n的长度,维度是d,每个block定义如下:
U和V就是图中Channel Proj,对embeddings做线性映射,类似transformer中的FFNs,激活函数用的GeLU,s函数表示的是spatial gating unit,该block在预训练或finetune的方式和transformer并无区别,重要的就是用s函数替代了multi-head self-attention去挖掘不同tokens之间的关系。
为了使得spatial gating unit具备挖掘不同token之间的关系的能力,必须对空间维度有收缩的操作,最简单的就是做个线性映射:
W是n*n维度的矩阵,这里就不像self-attention,W是随着Z动态变化的,而且W是独立于输入的embedding的,所以s函数定义如下:
论文里表示为了训练稳定性,W初始化接近0并且b初始化为1,这样fw,b(Z)基本都等于1,所以一开始s(Z)就接近Z,在训练过程中逐步注入空间信息。论文还对fw,b的输入做了标准化,采用SGU可以使得该block的表现类似transformer。
实验效果
结果表明,没有self-attention的模型可以像用于图像分类的transformer一样有效地处理数据。事实上,当模型被适当地正则化时,它们的准确度似乎与模型capacity相关,而不是与自注意机制相关。此外,gMLP很好的平衡了参数,准确率,以及模型性能。
参考文献:https://arxiv.org/pdf/2105.08050.pdf