Seq2Seq中Self-Attention 如何运作的

Self-Attention的Input是一串Vector,这个Vector可能是整个Network中的Input,也可能是某个Hidden Layer的Output。

假设我们用一排向量a1,a2,a3,a4来表示这个Input,用b1,b2,b3,b4来表示Output。我们有一种机制,这个机制能够找出这一个Input中,哪一个向量和a1关联性最大,我们把这个关联记作α

那么我们是如何找出这个关联性然后给他一个α呢?

方法有很多,此处列举一个比较常见的做法:Dot-product

假设计算a1和a2向量的关联性(绿色方框),分别给a1,a2乘上一个矩阵Wq和Wk,再把得到的结果进行点积得到α

 我们已经计算出α,但是如何把他套用在attention中呢?

我们按照此逻辑把a1到a4的关联性分数都计算出来记为\alpha _{11}, \alpha _{12}\alpha _{13}\alpha _{14}

 

 计算出关联性以后我们分别对它进行一下Soft-max,当然也可以使用其他函数,但是使用Soft-max效果最好。我们记为\alpha _{11}^{​{}'}...\alpha _{14}^{​{}'} 。

 我们已经知道了向量之间的关联性了。现在开始抽取这一个sequence的重点。我们把a1,...a4分别乘上矩阵Wv,把得到的矩阵和上面得到的attention score相乘,再得到的数值相加得到b1 。 b_{1}=\sum_{i}^{}\alpha _{1,i}^{​{}'}v^{i}

如果说a1和a2的关联性较强,那么他得到的attention score就会较高。所得到的b1的值就会接近v2

 

写完发现有一篇文章讲的很好,贴在这儿回头回头方便自己找:Seq2Seq中的Attention和self-attention_seqselfattention_我叫龙翔天翼的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值