李宏毅Self-attention

Self-Attention

self-attention 当你输入很多向量时候,然后经过神经网络进行输出结果,self-attention就是对输入的其中某一个向量处理时,让它充分的考虑与其它向量是否存在关系或者关系程度考虑过后再输出。建立关联性的过程就是self-attention。
词性标记场景:
在这里插入图片描述
红色框中就是每个单词的向量,如果我们单独把每个单词作为一个向量输入到FC网络中,输出词性,那么第二个saw和第四个saw输出一定是同一个词性,但是很明显第二个saw是动词,第四个saw是名词。那么如何解决这个问题呢?就需要self-attention,它的处理方式就是把所有单词向量输入进去,然后考虑每个单词与其它单词的联系,综合考虑之后输出。

运作原理

总体结构

在这里插入图片描述
首先,所有vector输入到self-attention中,有多少个vector输入,就会对应有多少个vector输出,红色框里的vector就是上面self-attention网络的输出,这里的每个vector是对应原来的vector考虑一整个vector得到的输出。然后再把输出的vector放到FC网络中,最后得到一个输出结果。这里的self-attention。同时上面这个结构不止可以使用一次,可以多次叠加。

在这里插入图片描述

self-attention专注于做所有向量的信息处理,FC专注做一个向量的处理。

具体原理

在这里插入图片描述

上面红色框就是self-attention,首先假设输入a1…a4向量,这个向量可能是input,也可能是某一层的输出,然后输出b1…b4,这里的b1是考虑了a1…a4向量的输出结果。
怎么产生b1?
计算两个向量关联程度
方法(Dot-product):
在这里插入图片描述
计算两个向量的关联性α,首先输入两个向量,分别乘上Wq,Wk,输出q, k两个向量,再对两个向量做乘积运算最后得到α。
计算a1与每个向量的关联性
首先把a1乘以矩阵Wq,得到q1,然后对每个向量都乘以Wk,得到k1,k2,k3,k4。然后q1与k1,k2,k3,k4分别都做点积(Dot-product)运算, 最后得到a1与每个向量的关联性值α1,1,α1,2,α1,3,α1,4在这里插入图片描述
然后对每个数值做Soft-max得到,这里也可以用其他的激活函数。最后得到α1,1

在这里插入图片描述
根据上面这个α我们已经知道哪些向量与a1最有关系,然后我们就要根据这个分数抽取重要信息。
根据关联性,抽取重要信息
在这里插入图片描述
我们对a1…a4分别都乘以Wv得到v1,v2,v3,v4,然后用α1,1,α1,2,α1,3,α1,4,分别乘以v1,v2,v3,v4再累加求和,最后得到b1。

在这里插入图片描述
需要注意的是b1…b4,不是分别产生出来的,是一次同时计算出来的。

整体来看运作原理

我们如果模拟上面求b1的过程,来依次求得b2…b4。我们会发现,整体来看,第一步,a1…a4每个向量都会分别乘以Wq,Wk,Wv得到q, k, v, 所以整合起来就是把a1…a4作为一个矩阵I分别乘以Wq,Wk,Wv,得到Q,K,V。其中Wq,Wk,Wv是我们要学习的参数。
在这里插入图片描述
第二步要计算关联性(attention score),就是q1分别与k1,k2,k3,k4分别都做点积(Dot-product)运算。那么从矩阵角度就是下面红色方框中操作。就可以得出a1与其它向量的相关性。
在这里插入图片描述
但是不仅q1要与k1,k2,k3,k4分别都做点积(Dot-product)运算,我们会发现q2,q3,q4都要与k1,k2,k3,k4做计算,那么整体来看,第二步操作就是对KT乘以Q得到A,然后再对A中每一列进行求Soft-max,得到A。这样每一列对应的a1…a4中每一个向量与其它向量关联性的分数。
在这里插入图片描述
第三步
由下图,接下来的操作就是A中每一列乘以v1,v2,v3,v4再累加求和,最后得到b1…b4。也就是O矩阵。在这里插入图片描述

总之

在这里插入图片描述
从输入矩阵I开始其实就是做了一系列的矩阵操作,其中只有Wq,Wk,Wv这里面的参数是需要我们训练学习。这就是self-attention出来从a1…a4到b1…b4的所有过程。

Multi-head Self-attention

这是self-attention的进阶版本。因为相关性可以有很多种类,比如说可以依据身高这个角度计算相关性得到α,可以依据体重这个角度计算相关性。。。所有出现了multi-head self-attention
在这里插入图片描述
其实跟self-attention类似,上面以2个head举例,每个qi,ki,vi,都分别乘以两个矩阵得到qi,1,qi,2,ki,1,ki,2,vi,1,vi,2,都分解为两个,进行对应的操作。其它都一样。最后得到bi在这里插入图片描述
如果要考虑位置的信息
那么为每个位置设置一个向量ei(尚待研究的问题),然后加到每个向量ai上。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值