【NLP】self-attention运行原理详解

self-attention是如何运行的?

在原论文里,作者很霸气的丢出了一个公式,

Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

要直接去理解这个公式,对矩阵运算不是非常熟练的同学可能有点困难,因此,我们还是先拆分去考量一个单词向量的计算过程,再回过头来理解这个矩阵的运算。如下图,是进行运算的第一步,

Figure 4.png

对于每一个单词向量(Embedding后的),我们都会计算出3个不同的向量,名为query, keys, values。这些向量都是我们通过模型参数计算得出来的。相比于词向量的纬度(论文中为512),这些向量的纬度会小一点(为64),当然这些向量的纬度肯定都是超参数,是可以调整的。至于这三个向量的具体含义,只能让大家从后续的计算过程中自行体会来,我也会穿插讲一下自己的理解。

self-attention的第二步是对每一个词进行打分(dot products of the query with all keys)其实就是把当前位置q的向量与所有位置的k向量进行点积相乘,然后再除以\sqrt{d_k}(原论文是8,据说是可以让训练收敛的更平稳),最后再做一层softmax操作,每一个词就会得到一个对当前位置的打分,显然,当前词应该会对当前位置有最高的权重。(总感觉看到了一丝rnn的意思,考虑所有的输入序列,对当前预测结果的影响)

self-attention的最后一步,也是很简单了,就是把权重与每一个位置的v向量加权求和,最后得到的z向量就是我们要送入到下一层前馈神经网络的。上述过程的计算示意图如下,

Figure 5.png

至此,每一个词向量的计算过程已经描述清楚了,矩阵的运算想必也是很好理解了。首先,我们计算Q,K,V三个矩阵,再根据上述的运算过程,简化为矩阵的运算就如下图,

Figure 6.png

至此,对原论文中的公式就剖析完毕了(当然也是整个self-attention)的核心。

 

转载:
作者:蘑菇轰炸机
链接:https://www.jianshu.com/p/bb7935f5c717
来源:简书

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值