Multi-Head Attention
对于Q和K一般先将降维然后在计算注意力,然后将此操作重复多次(h次)最后将结果拼接即为多头注意力。这里假设降维的Q、K维度是 n ∗ ( d / h ) n*(d/h) n∗(d/h),点积后为 n ∗ n n*n n∗n,也就是说要用一个 2 ∗ n ∗ ( d / h ) 2*n*(d/h) 2∗n∗(d/h)参数量去逼近一个 n 2 n^2 n2的参数量,然而 2 n d / h < < n 2 2nd/h<<n^2 2nd/h<<n2,尤其h更大时,这种建模存在瓶颈的(低秩瓶颈)。
改进1:增大d(Low-Rank Bottleneck in Multi-head Attention Models)
跟剧上文所说的缺点,直接想法就是增大 2 n d / h 2nd/h 2nd/h,h不能减小(与多头注意力冲突),n与V维度相关,不能变,所以只能增大d,实验表明能增加注意力的表达能力
改进2:混合各head注意力(Talking-Heads Attention)
当前的Multi-Head Attention每个head的运算是相互孤立的,而通过将它们联系(Talking)起来,则可以得到更强的Attention设计
如上图,就是将多头注意力用一个参数矩阵重新融合成多个混合注意力。每个新的得到的混合注意力都融合了原先的各head注意力。
注:
1、这里省略了缩放因子 d k \sqrt d_k d k
2、新生成的多个混合注意力可以多于原先的h