self-attention机制

传统的CNN得弱点在于一般都是读取局部信息,而没有考虑整个全局的信息。此时如果使用很大的kernel size一次覆盖掉所有的输入。但是弱点有:

  1. 在机器翻译中的输入长度不定。
  2. 这种情况下的kernel参数量非常多,容易overfitting。

self-attention就是一种可以考虑全局信息的机制。相关论文为: attention is all you need
在这里插入图片描述

self-attention可以和CNN和FC结合使用。

self-attention计算方法如下:

  1. 计算 a 1 a^1 a1与其他输入的相似度:
    在这里插入图片描述

连个vector相似度的计算方法有点积和相加两种:
在这里插入图片描述

对于dot-product, 将连个向量分别乘以两个矩阵 W q W^q Wq W k W^k Wk,然后讲得到的向量相乘得到:
α = q ⋅ k \alpha = q\cdot k α=qk

然后分别计算 a 1 a_1 a1 a 1 , a 2 , a 3 , a 4 a_1, a_2, a_3, a_4 a1,a2,a3,a4的关联性:
在这里插入图片描述
注意这里的querykey的名字,表示 q q q是要搜寻的向量, k k k是要比较的向量。

接下来就可以得到 a 1 a^1 a1与其他向量的相似度:
在这里插入图片描述

接下来利用相似度来提取sequence的信息,即将输入 a a a乘以一个矩阵 W v W^v Wv得到一个新的value,然后再与相似度进行加权求和:
在这里插入图片描述
接下来同样的方法得到 b 2 b^2 b2:
在这里插入图片描述
有些情况下,相关性有多种不同的定义,因此就需要multi-head attention。即使用多个 k , q , v k, q, v k,q,v:
在这里插入图片描述

注意这里 q i , 1 q^{i, 1} qi,1之和 k i , 1 k^{i, 1} ki,1 v i , 1 v^{i, 1} vi,1做相似度计算,不和 k i , 2 k^{i, 2} ki,2, v i , 2 v^{i, 2} vi,2做相似度计算。

得到多个相似度之后拼接起来然后乘以一个矩阵得到最终的输出:
在这里插入图片描述
以上即为multi-head attention的计算过程。

但是问题在于: 这样的机制么有考虑输入sequence的位置信息。即将位置打乱后没有任何差别。

因此需要将位置的信息加入进去, 在self-attention中使用positional encoding方法:
在这里插入图片描述
将位置信息 e i e^i ei直接加到原始输入 a i a^i ai上。

不同的positioning encoding的生成方法有:
在这里插入图片描述
如果sequence过长,可以使用truncated self-attention,即计算相似度时限制范围:
在这里插入图片描述
self-attention与CNN的区别:

  1. CNN只计算了receptive field范围内的相似度, self-attention考虑了整个图像的相似度。self-attention是复杂版本的CNN. 即self-attention是自动定义receptive field. CNN是self-attention的特例。但是self-attention需要更多的数据集,而CNN需要的数据量相对较少。

相关文章: On the Relationship between Self-Attention and Convolutional Layers
, 讨论了CNN和self-attention的关系。

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
讨论了不同的数据量下self-attention和CNN的性能。

RNN与self-attention的区别:

  1. RNN会存在长期记忆遗忘的问题,self-attention没有。
  2. RNN是串行输出, 而self-attention则可以并行处理,可以一次性一起输出。因此self-attention计算效率更高。

相关文章: Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention

self-attention与graph的应用:
在这里插入图片描述
self-attention的效果和效率的关系:
在这里插入图片描述

self-attention和attention的区别:

  • Attention机制发生在Target的元素Query和Source中的所有元素之间。

  • Self Attention不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。

其具体计算过程是一样的,只是计算对象发生了变化而已。

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值