读《多头自注意力层和卷积层的关系》笔记

这是一篇2020年ICLR会议的文章,链接如下

https://iclr.cc/virtual_2020/poster_HJlnC1rKPB.html

摘要:

  1. (多头自)注意力层可以执行卷积
  2. (拥有足够数量的head)的多头注意力层的表现力大于等于卷积层
  3. 自注意力层和cnn层一样,都会处理像素网格模式

卷积的计算过程就是分区域的提取特征,具体的提取特征方式有很多,可以求和可以求最大值也可以求最小值。

这里是单头自注意力层的计算过程,就是把selfattention的公式实现一遍。

需要注意的是单头的输入输出维度是不变的。多头的拼接再乘以一个矩阵才能够是输出结果变形。

代码实现如下:

def single():
  W_Q = np.random.rand(5,5)
  W_K = np.random.rand(5,5)
  W_V = np.random.rand(5,5)

  Q1 = (Q+PE)*W_Q
  K1 = (K+PE)*W_K
  V1 = V*W_V
  
  K_T1 = K1.transpose(1,0)
  
  self_attention = model(torch.from_numpy((Q1*K_T1)/math.sqrt(5)))*V1
  return self_attention

#九个head,z0-z8
for i in range(9):
  locals()['z'+str(i)] = single()

W_O = np.random.rand(45,3)

#拼接9个head得多头
multi_self_attention = np.mat(torch.cat((z0,z1,z2,z3,z4,z5,z6,z7,z8),1))*np.mat(W_O)

变形了:

卷积层代码略。

 

结论:作者的意思是多头这种映射到多个空间,变相分割,达到了在不同区域分别集中注意力的效果,就跟卷积一样了。(解答了我之前的疑问:怎么就能确定多头一定是映射到了不同空间去了?)

具体证明没看,以后用上了再看吧。至少知道了可证。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值