self-attention竟然没用?

众所周知,transformer已经不止火在nlp了,ViT(如下图所示)也大有取代CNN之势。我们认知中transformer最重要的部分莫过于多头的self-attention机制了,该机制发掘不同token之间的空间信息联系。这篇论文提出了一个更简单的架构,gMLP,使用gating机制,达到和transformer在nlp或者计算机视觉一样的效果。

v2-b5f3e24c885a741b2c9496f36dc8a3b5_b.jpg

v2-110de7bf743579402f0c756923cc360e_b.jpg

MLP也是L层block堆积而成(如下图所示),输入为X(n*d),n的长度,维度是d,每个block定义如下:

v2-aa91b91dd1f0114c0c76de0c7fa2451f_b.jpg

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之间的关系的能力,必须对空间维度有收缩的操作,最简单的就是做个线性映射:

v2-14055929529889f8910c2023d3159873_b.jpg

W是n*n维度的矩阵,这里就不像self-attention,W是随着Z动态变化的,而且W是独立于输入的embedding的,所以s函数定义如下:

v2-57370471b7ff12eeb9f7ce2400560dd1_b.jpg

论文里表示为了训练稳定性,W初始化接近0并且b初始化为1,这样fw,b(Z)基本都等于1,所以一开始s(Z)就接近Z,在训练过程中逐步注入空间信息。论文还对fw,b的输入做了标准化,采用SGU可以使得该block的表现类似transformer。

v2-dca927b0b4967cc180efa79a4008481b_b.jpg

v2-199215dd54b3595ccae400062dc5ddf1_b.jpg

v2-0f31ad97fde40a483252fecfb574bee5_b.jpg

结果表明,没有self-attention的模型可以像用于图像分类的transformer一样有效地处理数据。事实上,当模型被适当地正则化时,它们的准确度似乎与模型capacity相关,而不是与自注意机制相关。此外,gMLP很好的平衡了参数,准确率,以及模型性能。

参考文献:arxiv.org/pdf/2105.0805

self-attention竟然没用?


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部