浅谈Self-attention自注意力机制

参考

台大李宏毅:机器学习

Self-attention的直白解释sequence labeling

在sequence lableling问题中,我们会希望模型在输出的时候能够考虑整个序列的全局语义,而传统的全连接网络和卷积却只能同时考虑有限个输入向量,无法同时考虑整个输入序列(向量组)。
self-attention
那么如何考虑输入序列的全局语义信息呢?我们可以通过self-attention计算机制来实现。对数字信号,语音信号,图形等输入,我们都可以用特定的编码形式生成对应的向量组。因此,假设self-attention模块的输入为[a1,a2,a3,a4]输出为[b1,b2,b3,b4]则具体计算机制如下图所示:
self-attention-2
首先,对每个向量,先通过乘以特定的矩阵(Wq,Wk,Wv)可以生成其对应的q, k, v。这里先通俗地解释一下,我们一般可以认为,q是该向量想要查询的关联性,k是该向量自身特征,v则是该向量的利用价值。

那么self-attention的第一步则是,利用该向量的q查询向量组中所有向量的k(包括它自身的k,查询过程即为点乘)。标注点乘结果为α,则记α11=q1k1,α12=q1k2…由此获得一组与向量组等长的α1=[α11,α12,α13,α14],这里记α为attention score,经过归一化处理即得到向量组中所有向量对a1的“参考价值”。同理可得,向量组中所有向量对a2, a3, a4的参考价值得到α2, α3, α4。

这里要注意两点。第一,这里的αi再获得后可以再做进一步地处理,经验化的结论是最好再经过一次softmax,或者经过其他的activation也可以。第二,αi的计算过程全部都可以是并行地,这将会是self-attention与RNN最本质的区别

若记向量a1经self-attention的输出结果为b1,则定义:b1=α11v1+α12v2+α13v3+α14v4。

也正因如此该,也有不少学者认为self-attention的本质就是加权和。至此,经过self-attention的处理,我们成功地将输入a1转换成了输出b1,好处是相比a1,b1成功地考虑了输入序列的全局语义,更方便后续经过feed forward做进一步地处理

最后,我们可以尝试用矩阵乘法来表示整个self-attention的运算过程。令A=[α1,α2,α3,α4]T,则A’=softmax(A),标注获得的A’为attention matrix;令输出矩阵B=[b1,b2,b3,b4],初始价值矩阵V=[v1,v2,v3,v4],则对输入矩阵I=[a1,a2,a3,a4]的self-attention可以用矩阵表示为:self-attention(I)=B=VA’,就将上述冗长的过程可以使用轻松的矩阵乘法一步到位。

什么是多头注意力?

以上就是最简单的自注意力机制的计算过程,那么对于复杂问题实际上每个向量想要查询的关联性q往往是有很多种类型的,即该向量关注地不仅仅是一种关联性而是与其他向量多种不同的关联性以实现更优地提出有效信息。为此,我们引入多头注意力(Multi-head self-attention)。
Multi-head self-attention
如上图所示,在多头注意力的计算机制当中。以两头为例,则对每一个向量的q,都将经过最简单的等分亦或是复杂的矩阵变换转换成q1与q2,同理该向量的k也变换成k1与k2,v也变成v1与v2。由此查询过程就变成了,q1查询k1与其他向量的k1,q2查询k2与其他向量的k2。最终得到两组与向量组等长的attention score矩阵,这个时候同样地可以直接将两组分别考虑不同关联性得到的score相加,亦或是拼接后做复杂的矩阵变换得到最终的score,后续步骤则与普通的self-attention并无二致。

与RNN的比较

相比传统的处理序列问题的RNN模型,最直观来看,self-attention可以更有效地利用全局信息,因为每个输入都要与其他输入计算相似度。而RNN一般而言只会考虑先前的输入。但是特殊情况下,如双向RNN也可以近似看成考虑全局的信息。因此考虑局部还是全局信息并非self-attention与RNN最本质的区别。
self-attention and RNN
真正的区别在于并行与串行的计算模式。RNN实际上是串行计算方式,而self-attention则能做到并行计算。串行计算的缺点,大部分人都了然于心的是计算时间漫长,因为必须要等待前面计算完成,后面才能开始计算。其次对内存要求也更高,比如假定对一串长序列,最后一个输入向量要想考虑第一个输入向量则必须存入之前所有的计算结果,因此内存要求也高的多。

与Transformer的关联

广义上来说,所有应用了self-attention的模型都可以称之为Transformer,狭义上来说Transformer则是指《Attention is all you need》这篇著作中提出的seq2seq模型。因此,后续出现的各种以former命名的模型都可以认为是基于魔改的self-attention的计算机制。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值