神经网络Transformer架构中的多头注意力机制与自注意力的计算差异
字数 1597 2025-12-16 14:09:13
神经网络Transformer架构中的多头注意力机制与自注意力的计算差异
第一步:自注意力机制的基础回顾与计算流程
自注意力机制是Transformer的核心组件,它允许序列中的每个位置(例如句子中的一个词)在编码时,同时关注并整合序列中所有其他位置的信息。其标准计算流程分为三步:
- 投影:对于输入序列中的每个位置的向量,通过三个独立的线性变换(权重矩阵 W_Q, W_K, W_V),生成对应的查询向量、键向量和值向量。
- 注意力分数计算与权重分配:计算一个位置(查询)与序列所有位置(键)的关联度。通常使用缩放点积注意力:将查询向量与所有键向量进行点积运算,结果除以键向量维度的平方根进行缩放,再通过Softmax函数归一化,得到一组注意力权重(和为1)。
- 加权求和:用上一步得到的注意力权重,对对应位置的值向量进行加权求和,生成该位置的自注意力输出。这个输出融合了序列中所有位置根据相关性加权后的信息。
第二步:多头注意力机制的基本概念与结构设计
多头注意力是对上述自注意力机制的扩展。其核心思想是:不进行一次“全局性”的注意力计算,而是并行地进行多次(h次)注意力计算,每次关注输入信息的不同“子空间”或不同“方面”。
- 结构:它将输入序列的嵌入向量(或前一层的输出)分别输入到h个并行的“注意力头”中。每个头都有自己独立的一套查询、键、值的投影矩阵(W_Q^i, W_K^i, W_V^i,其中i表示第i个头)。这意味着每个头可以将输入向量投影到不同的低维表示空间。
- 目的:通过多头设计,模型能够同时捕捉不同类型的依赖关系。例如,在语言处理中,一个头可能关注句法结构(如主谓一致),另一个头可能关注语义关联(如指代消解),再一个头可能关注话语中的连接词。这比单一的自注意力头拥有更强的表示能力。
第三步:多头注意力的计算过程与核心差异点
多头注意力的具体计算步骤清晰地体现了其与单头自注意力的差异:
- 并行投影与低维映射:对于每个注意力头i,使用其专属的投影矩阵,将输入向量分别投影到维度为 d_k(键/查询维度)和 d_v(值维度)的空间。通常,d_k 和 d_v 被设置为总维度 d_model(例如768)除以头数h(例如12),即 d_k = d_v = d_model / h。这是实现参数效率和计算并行化的关键设计。
- 并行执行缩放的注意力计算:在每个头上,独立执行标准的缩放点积注意力操作。由于每个头的维度更低,其计算复杂度与单头在全维度的计算相当,但通过并行化,整体计算效率更高。
- 多头输出的拼接:将h个注意力头计算出的输出向量(每个维度为 d_v)按顺序拼接起来,形成一个维度为 h * d_v = d_model 的长向量。
- 最终线性投影:将拼接后的向量通过一个共享的输出投影矩阵 W_O 进行一次线性变换,得到最终的多头注意力输出。这个投影允许模型综合各个头提取的信息,并将其映射到适合下一层处理的表示空间。
第四步:差异总结与设计优势
多头注意力机制与基础自注意力的核心差异在于分而治之的并行化策略,而非计算原理的根本改变。
- 表示多样性 vs. 单一性:多头允许模型在不同表示子空间学习不同模式的关系,而单头只能学习一种混合模式。
- 计算效率:将高维(d_model)的注意力计算分解为多个低维(d_k, d_v)的并行计算,在总计算量近似的情况下,更利于硬件(如GPU)的并行加速。
- 模型容量与泛化:通过多头机制,模型在不显著增加单个投影矩阵参数量的情况下(因为每个头的维度降低了),增加了可学习的投影组合,提升了模型容量和灵活性,有助于更好地泛化到复杂模式。
因此,多头注意力是 Transformer 架构在处理复杂序列数据时,提升其表示能力和效率的关键性工程设计。