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维度关系
论文中,所以可以将h个头的结果直接拼接,进行之后的计算。这样操作的前提就是h能被整除,且和如前公式的关系。
- 多个头如何计算
因为h个线性变换之间是相互独立的,所以多头可以并行计算。这样在工程实现上不需要任何的前提等待计算。
翻译论文的时候,虽然把这部分完全翻译出来,但是没有独立思考,对细节的理解还是不到位。当然,现在的理解也可能有不足之处,欢迎指正~
更多内容,请关注“机器爱学习”公众号~