多头注意力机制和单注意力头多输出的区别
多头注意力得到的是一个 6×4 维的张量:我们有 6 个输入 token 和 4 个自注意力头,其中每个自注意力头返回一个 1 维输出。之前的自注意力一节也得到了一个 6×4 维的张量。这是因为我们将输出维度设为了 4,而不是 1。既然我们可以就在 SelfAttention 类中调整输出嵌入的大小,那么我们为什么在实践时需要多个注意力头?
增加单自注意力头的输出维度和使用多个注意力头的区别在于模型处理和学习数据的方式。尽管这两种方法都能提升模型表征数据的不同特征或不同方面的能力,但它们的方式却有根本性的差异。例如,多头注意力中的每个注意力头都可以学习关注输入序列的不同部分,捕获数据中的不同方面或关系。这种表征的多样性是多头注意力成功的关键。
参考链接:大模型时代还不理解自注意力(Self-Attention)?这篇文章教你从头写代码实现
此链接还包括关于交叉注意力、因果注意力的讲解