Transformer中Multi-Head的理解
论文是这么说的:
attention is all you need
Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions.
大概意思就是: 多头注意力允许模型在不同位置共同关注来自不同表示子空间的信息,也就是可以让网络捕捉更丰富的信息。
问题: 那为什么有了多头注意力机制就可以关注不同的特征?原理是什么?是不是头越多就越好呢?
一 直观说说
先直观说说对多头注意力机制的理解,
上面这张图片,如果我们让10个同学去看这张图,大家的关注点肯定不在一个地方,有的同学更关注羊群,有些同学更关注云朵,还有些关注草坪。那我们集成所有同学的关注点可能就会很好的描述这张图片;反过来如果只有1个同学去看的话,他一分钟可能关注的羊群,下一分钟可能关注的草坪。。。可能10分钟才能把图片所有信息看完。
所以与其让1个同学看10分钟,那为啥不能让10个同学看一分钟呢?那从这个角度讲,其实就类似于集成学习,多个弱分类器的效果>一个强分类器的效果。
二 self-attention内理解
1. 如果理解了self-attention里面的W,Q,V矩阵,那多头无非就是多个W,Q,V矩阵,并且每个矩阵初始化参数是不同的;
- 那既然初始化的参数不同,但损失结果是一样的,在反向求参的时候肯定会导致每个W,Q,V的参数矩阵不同,所以W,Q,V也会是不同的权重矩阵
三 理解总结
- 大量实验表明: Transformer,或Bert的特定层是有独特的功能的,底层更偏向于关注语法,顶层更偏向于关注语义;
- 这篇论文讨论了多头的作用,发现并不是头越多越好,去掉一些头效果依然有不错的效果(而且效果下降可能是因为参数量下降),这是因为在头足够的情况下,这些头已经能够有关注位置信息、关注语法信息、关注罕见词的能力了,再多一些头,无非是一种 enhance 或 noise