如前所述,自注意力提供了一种将序列中不同位置关联起来的有效机制。然而,应用单一的缩放点积注意力函数可能会像一个瓶颈。它迫使模型将可能多种不同类型的关系或依赖平均成一个单一的加权表示。设想一个句子,对其的理解需要同时追踪句法结构(如主谓一致)和语义(如词语相似性)。单一的注意力函数可能难以同时有效地捕捉这两个方面,可能会将它们模糊地混合在一起。这一局限促使我们使用多头注意力。其核心思想简单而巧妙:我们不是只计算一次注意力,而是并行执行多次注意力计算。每次并行计算被称为一个注意力头。可以将其想象为对相同输入拥有多个视角。如果你正在分析一个复杂系统,你可能会咨询来自不同领域的专家。每位专家(注意力头)带来一个独特观点,侧重于系统(表示子空间)的不同方面。多头注意力机制的运行方式与之类似。每个注意力头执行相同的核心缩放点积注意力计算。然而,它们并非都基于直接来源于输入序列嵌入的相同查询 ($Q$)、键 ($K$) 和值 ($V$) 矩阵进行运算。相反,在每个头的注意力计算之前,$Q$、$K$ 和 $V$ 矩阵会经历独立的、每个头特有的线性变换(投影)。这意味着每个注意力头学会将输入投影到一个子空间中,该子空间可能更适合捕捉特定类型的关系。为什么这样做有益?关注不同子空间: 它允许模型一同处理来自不同位置、不同表示子空间的信息。例如,一个头可能学会侧重于短期依赖,另一个侧重于语义关联,还有一个侧重于位置信息。捕捉多类模式: 通过并行操作不同的学习投影,这些注意力头可以共同捕捉比单一注意力头单独处理更丰富的特征和关系。稳定注意力: 单一注意力机制中固有的平均效应有时可能是有害的。多头注意力允许不同的头进行专业化,它们的输出稍后会组合,从而提供一个更灵活且通常更稳定的学习过程。本质上,多头注意力让模型对输入序列进行多次“审视”,每次都通过一个不同的学习视角(线性投影)进行聚焦。这种并行处理使得模型能够对数据中复杂的关联有更全面的理解。接下来的部分将详细解释这些线性投影在每个头中如何运作,以及它们的并行输出最终如何整合。