多头注意力机制的目的是通过捕捉不同的注意力信息来提升 AI 模型的表达能力。利用多头矩阵的子空间从不同的视角或者说维度来表达输入的数据。
从贝叶斯神经网络的角度,多头注意力机制是一种采样(Sampling)技术, 每个注意力头是一个采样。 每个头区分度越大,相当于视角越多, 这样的话按道理Transformer 对目标可以进行更好的拟合。 但注意力头真的是越多越好么?(不考虑过拟合和硬件条件的情况下)
问题的关键是注意力头本身是矩阵形式,对输入数据进行线性变换, 得到的结果是离散的而非连续的, 不能够真正表达连续的目标概率分布。与真正的目标间存在误差,而注意力头越多,累计误差也会越大,导致模型的表现也变差。
训练的时候注意力头越多拟合的越好,但是 test 的时候注意力头多不一定效果好,并且还比较多余。
这个我们人脑的机制是一样的, 我们阅读一段文字,很快的读过去, 能够注意到的关键点和它们之间的联系并不会特别多,但也不妨碍我们理解一段话的意思。所以这给我们一个启示,对神经网络的设计,很多时候可以参考人脑思考运行的规律, 模拟人脑的运行方法,也会获得接近的运行效果。
Reference:
Transformer 101 个思考问题:
https://gitee.com/oatmeal3000/Transformer101Q