self-attention竟然没用?
众所周知,transformer已经不止火在nlp了,ViT(如下图所示)也大有取代CNN之势。我们认知中transformer最重要的部分莫过于多头的self-attention机制了,该机制发掘不同token之间的空间信息联系。这篇论文


MLP也是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
self-attention竟然没用?本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
