Multi-Head Attention

Initial
Initial

多头注意力就是将 query 的不同部分和 KV 的不同部分分别做 Attention 之后再拼接起来,达到“不同 Head 感受句子的不同信息”的效果。

Multi-Head Attention 的 Head 分的是什么

我们假定有 HH 个 head,多头注意力做的事是将维度为 DD 的 word embedding 分成 HH 个维度为 DH\frac{D}{H} 的子 embedding。

考虑输入的一批训练样本的大小为 (B,S,D)(B,S,D),那么实际上每一个 Head 计算的 Self-Attention 是 (B,S,DH)(B,S,\frac{D}{H}).

如果硬要直观理解的话……我们可以假想 word embedding 的不同部分蕴含了不同的内在含义。例如,一个 DD 的 word embedding 的前 D/8D/8 维度编码了“数学”,接下来 D/8D/8 编码了 “情感”……那么,我们 split head 就是想让 Attention 学习到这批样本所有 token 之间、不同领域上的关联。例如 Head 1 学习到数学层面的联系,Head 2 学习到情感层面的联系……