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
dk
2、新生成的多个混合注意力可以多于原先的h