Google于2017年提出了Transformer,而提出该模型的论文名为《Attention is all you need》,之前翻译该论文的时候并没有太多注意attention,更多的放在了整体的模型结构上。最近面试了一个候选人,他介绍项目用到的AOA时,提到了从“横向”和“纵向”两个维度做softmax,突然让我对Transformer中的multi-head attention有了新的求知欲(虽然这两个事情联系不大,但的确对之前不在意的细节产生了好奇)。
从文章名可以看出attention在Transformer中的重要性,那么笔者就从以下三点再来整理一下multi-head attention。
- 为什么要用多个“头”呢?
这个操作和CNN使用多个卷积核的目的一样,从多个维度(或角度)来进行语义理解。只不过,在Transformer中,通过采用h个不同的权重,实现了h个线性变换。
- W的维度和embedding维度关系
论文中 d k ∗ h = d e m b e d d i n g d_k*h=d_{embedding} d