attention is all your need 之 scaled_dot_product_attention

“scaled_dot_product_attention”是“multihead_attention”用来计算注意力的,原文中“multihead_attention”中将初始的Q,K,V,分为8个Q_,8个K_和8个V_来传入“scaled_dot_product_attention”中进行计算。

在“scaled_dot_product_attention”主要就是进行attention的计算以及一些mask操作。首先要知道Attnetion机制的公式以及原理:

公式中Q表示所需计算的注意力项,K为被计算注意力项,V为被注意力项的取值,很多时候K和V是相等的。画图理解一下:

其中Q代表一个(3,7)的向量,K也是一个(3,7)的向量,所以Q×K的转置所得一个(3,3)的向量score,根据score的数学运算可以将score[0,0]理解为Q中第一个向量Q[0,:]与K第一个向量K[0,:]的相似度所以score的第一行代表的就是Q的第一行向量(Q[0,:])与K中所有向量(K[:,:])的相似度。然后将所得的结果除以一个标量,公式中是dk,然后通过softmax函数进行映射,所得到的就是Q向量相对于K向量的相似度得分(3,3)。最后通过得到的score(3,3)与V相乘,如下图所示:

所得到的result的第一行就是V中所有向量与score中第一行分数相乘得到的(有点拗口),也就是result是V中向量通过加权得到的,这个权重矩阵就是score,也就使得模型具有了注意力机制。(其实这一块的思想是attention机制中共有的,在seq2seq模型中比较好理解,可以参考着来理解)。
在tensorboard整个“scaled_dot_product_attention”所做的工作就是上面那个公式。总体就是Q*K的转置,然后除以一个标量,然后softmax一下,最后乘以V向量。知识在其中加入了两个mask操作。这是为了将Q和K中一些填充的为零的向量清除掉。这个mask也是个骚操作,理解起来,也不难。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值