Multi-head Self-attention(多头注意力机制)

Self-attention 有一个进阶的版本,叫做 Multi-head Self-attention, Multi-head Self-attention,其实今天的使用是非常地广泛的 。



在LHY2021作业 4 裡面,助教原来的 code 4 有,Multi-head Self-attention,它的 head 的数目是设成 2,那刚才助教有给你提示说,把 head 的数目改少一点 改成 1,其实就可以过medium baseline
但并不代表所有的任务,都适合用比较少的 head,有一些任务,比如说翻译,比如说语音辨识,其实用比较多的 head,你反而可以得到比较好的结果至於需要用多少的 head,这个又是另外一个hyperparameter,也是你需要调的那為什麼我们会需要比较多的 head 呢,你可以想成说相关这件事情我们在做这个 Self-attention 的时候,我们就是用 q 去找相关的 k,但是相关这件事情有很多种不同的形式,有很多种不同的定义,所以也许我们不能只有一个 q,们应该要有多个 q,不同的 q 负责不同种类的相关性


所以假设你要做 Multi-head Self-attention 的话,你会怎麼操作呢?

 1.先把 a 乘上一个矩阵得到 q
2.再把 q 乘上另外两个矩阵,分别得到q^{1}q^{2} ,那这边还有 这边是用两个上标,i 代表的是位置,然后这个 1 跟 2 代表是,这个位置的第几个 q,所以这边有 q^{i,2}q^{i,2} ,代表说我们有两个 head

我们认為这个问题,裡面有两种不同的相关性,是我们需要產生两种不同的 head,来找两种不同的相关性。既然 q 有两个,那 k 也就要有两个,那 v 也就要有两个,从 q 得到q^{1}q^{2} ,从 k 得到 k^{1}k^{2},从 v 得到 ,那其实就是把 q 把 k 把 v,分别乘上两个矩阵,得到这个不同的 head,就这样子而已,对另外一个位置,也做一样的事情。

只是现在q^{1},它在算这个 attention 的分数的时候,它就不要管那个 k^{2}

 所以 q^{i,1}就跟k^{i,1} 算 attention
q^{i,1}就跟算 k^{i,1}attention,也就是算这个 dot product,然后得到这个 attention 的分数
然后今天在做 weighted sum 的时候,也不要管v^{2} 了,看 V^{i,1}就好,所以你把 attention 的分
数乘 V^{i,1},把 attention 的分数乘V^{i,1},然后接下来就得到 b^{i,1}

 

 

 

 

这边只用了其中一个 head,那你会用另外一个 head,也做一模一样的事情

 

 如果你有多个 head,有 8 个 head 有 16 个 head,那也是一样的操作,那这边是用两个 head 来当作例子,来给你看看有两个 head 的时候,是怎麼操作的,现在得到的bi1和bi2

然后接下来你可能会把 b^{i,1}b^{i,2} ,把它接起来,然后再通过一个 transform。

 也就是再乘上一个矩阵,然后得到 bi,然后再送到下一层去,那这个就是 Multi-head attention,一个这个Self-attention 的变形

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是随便学学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值