多头注意力模型

多头注意力模型(Multi-Head Attention)是自注意力机制的扩展版本,它通过并行执行多组独立的注意力计算,让模型能够从不同的表示子空间中捕获信息。

动机

单一的自注意力机制使用一组 QKV 投影矩阵,只能从一个固定的角度建模序列中的依赖关系。然而,语言中的关系是多维度的——例如,一个词可能与不同距离、不同语法角色的多个词同时相关。多头注意力正是为了应对这种多维度建模需求而提出的。

工作原理

多头注意力并行地使用多组独立的、可学习的 Q、K、V 投影矩阵,对输入进行多次不同的注意力计算,得到多个上下文表示(“多个视角”),然后再经过一个可学习的线性变换,将得到的这些新表示进行融合将它们拼接起来,形成更丰富、更全面的最终表示。

计算步骤

  1. 多头分割:将输入 分别投影到 组不同的 空间()。
  2. 并行注意力计算:对每组 独立执行缩放点积注意力计算。
  3. 拼接与投影:将所有头的输出拼接为一个长向量,再通过一个输出投影矩阵 线性变换为最终表示。

设计特点

  • 维度分配:如果模型的总维度为 ,每个头的维度通常为 ,使得多头注意力的总计算量与单头注意力大致相当。
  • 并行化:各头的计算相互独立,可以在 GPU 上高效并行执行。
  • 互补性:不同的头倾向于关注序列中不同类型的模式——有的关注语法关系,有的关注语义相似性,有的关注位置邻近性。

在 Transformer 中的角色

多头注意力在 Transformer 架构中出现了三种不同的形式:

  • 编码器的自注意力:每个位置关注编码器输入序列的所有位置。
  • 解码器的掩码自注意力:每个位置只关注其之前(包括自身)的位置。
  • 编码器-解码器交叉注意力:解码器的查询关注编码器的输出键值对。

链接到