Attention is all you need:Attention机制

最近在阅读论文发现有很多论文用到了Attention机制,一直对Attention机制的原理不大清楚,在此总结一下网上查到的好资料。
我主要关注Attention机制在图像处理领域的应用,但Attention机制最初在NLP领域中提出,故在此介绍一下NLP中的Attention机制。

一、NLP中的Attention机制

Attention is all you need论文链接
提到Attention机制就不得不想到这篇论文,这篇论文中利用简短的公式表达了Self-Attention机制的工作原理,公式如下:
在这里插入图片描述
公式中 d k d_k dk为一个和输入序列维度有关的常数,用来进行归一化。看到公式难免有四个疑问:
1.Q、K、V表示啥;
2.Attention(Q,K,V)表示啥;
3.Attention(Q,K,V)如何进行计算;
4.Attention机制的优点和缺点。
下面是我根据阅读的文献对这三个疑问的解答。

1.Q、K、V表示啥?
论文中表明Q、K、V分别名为‘Queries’ , ‘Keys’, ‘Values’的矩阵,论文中是通过随机选取三个矩阵 W q W_q Wq W k W_k Wk W v W_v Wv通过和输入(为语句则进行编码)相乘得到,当然我在图像处理的论文(STANet)中也遇到用这个表达式的,但Q、K、V的获得是通过三个卷积层获得。总之Q、K、V要和输入要构成映射关系(如矩阵映射)就行,该映射关系可以通过后期网络训练得到。

2.Attention(Q,K,V)表示啥

这是论文中对该函数的描述
An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key.
谷歌翻译:注意力函数可以描述为将查询和一组键值对映射到输出,其中查询、键、值和输出都是向量。输出计算为值的加权和,其中分配给每个值的权重由查询与相应键的兼容性函数计算。

费劲千辛万苦得到了这个Attention值到底有啥用???论文中是将得到的Attention值和经过编码的输入进行直接相加(Add&Norm模块),然后带入网络进行训练,至于为啥采用相加的形式,我没有找到文献进行说明(玄学,神经网络就是玄学)
在这里插入图片描述
3.Attention(Q,K,V)如何进行计算。
从论文的结构图中可以看到,网络一共有三处用到了Attention,当然这里使用的Multi-Head Attention。多头可以看作几个单个的Attention的合并,相当于取了多种情况,例如单个的Attention只取一个Q、K、V,而多头则要取多个 Q i Q_i Qi K i K_i Ki V i V_i Vi,通过Attention函数计算得到不同的Attention值,然后把这些不同的Attention值进行合并即可。下图为论文中Multi-Head Attention的结构图。
在这里插入图片描述
这三个用到的Attention的地方有两处是相同的,另一处是不同的,差别在于Q的来源不同。结构图中下面两个Multi-Head Attention(简记为1 self-atteniton)的Q来源于输入/输出自身,而最上面的Multi-Head Attention(简记为2 attention机制)的Q来自于输出这一个分支、K和V来自输入经过Encoder得到的结果。

下面对这两种不同的结构分别进行举例。因为网上有两篇博客通俗易懂的展示了相关的计算过程,故此处仅放置链接。
a.1 self-attention
理解自注意力(self-attention)
b.2 attention机制
动画图解Attention机制,让你一看就明白

个人觉得通过softmax(QK)得到了一个权重矩阵,矩阵中每一个数值代表对应的value值对当前的输入的重要度。我觉得不少博客出现下面这张图中连接线颜色的深浅就是表示着权重大小。
在这里插入图片描述
此外博客中有一句话我觉得写的非常好

softmax 之后得到的所有分数相加为 1。而且能够使得原本分值越高的隐藏状态,其对应的概率也越大,从而抑制那些无效或者噪音信息。

4.Attention机制的优点和缺点

相比于传统的 RNN 和 CNN,attention 机制具有如下优点:

(1)一步到位的全局联系捕捉,且关注了元素的局部联系;attention 函数在计算 attention value时,是进行序列的每一个元素和其它元素的对比,在这个过程中每一个元素间的距离都是一;而在时间序列 RNNs中,元素的值是通过一步步递推得到的长期依赖关系获取的,而越长的序列捕捉长期依赖关系的能力就会越弱。

(2)并行计算减少模型训练时间;Attention 机制每一步的计算都不依赖于上一步的计算结果,因此可以并行处理。

(3)模型复杂度小,参数少

但 attention机制的缺点也比较明显,因为是对序列的所有元素并行处理的,所以无法考虑输入序列的元素顺序,这在自然语言处理任务中比较糟糕。因为在自然语言中,语言的顺序是包含了十分多的信息的,如果缺失了该部分的信息,则得到的结果往往会大大折扣。

好了,到此NLP中的Attention机制就简单介绍完了,但是个人觉得仅停留于了解如何进行工作,至于为啥起作用也是没有搞明白——玄学。

二、参考文献

浅谈 Attention 机制的理解
综述:图像处理中的注意力机制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值