温故而知新——attention

最近的一些问题:
1)attention块的时间复杂度
2)attention本身的计算是否会带上序列信息
3)在encoder中normal的作用是什么

带着这些问题,重新review了一下attention,这里做一些复习笔记。
encoder结构图
scaled dot-product attention
multi-head attention

  1. multi-head attention的作用
    不同的头学习不同的信息,例如有些头学习位置信息,有些头学习语义信息,有些头学习语法信息等。但不是越多越好。
  2. 因为QKV的存在,所以序列信息会在最后的输出向量中得到体现
    QKV都会经过自己的W_i进行计算,保证了attention score矩阵不是一个对称矩阵,即矩阵中(i,j)极大概率!= (j,i),所以句子中的i这个词对j的关注和j对i的关注是不同的。
  3. 搜广推中self-attention和gate的关系
  • 相关性:SA和gate都是对input进行embedding信息关注调整的方式
  • 区别:
    • attention会用到QKV三个向量,是input和对应的W_q、W_k、W_v计算得到的三种表达,信息放大了三倍,表达能力更强了;gate只会用到input这一个向量,只做一次矩阵乘法,参数量少很多。
    • attention score矩阵(QK^T)用softmax提取了每个item对其他item的关注分数(和为1),再通过和V相乘,对向量信息进行调整,更稀疏,关注局部(和multi-head稍微呼应了,不同的头关注的东西不一样);gate的激活函数是用sigmoid,只是放缩了每个embedding的权重(在结合multi-gate的情况下也是起到了关注不同信息的作用)。
  1. 时间复杂度:O(N^2 X d)
    QK是 [N,d] 和 [d,N]的矩阵相乘,时间复杂度为O(N^2 X d)
    softmax的时间复杂度为O(N^2)
    softmax(QK/sqrt(d))V是 [N,N] 和 [d,N]的矩阵相乘,时间复杂度为O(N^2 X d)
    所以整体时间复杂度是 O(N^2 X d)

学习资料:https://zhuanlan.zhihu.com/p/149634836

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值