理解 Transformer 中的多头注意力
发布: (2026年5月4日 GMT+8 04:08)
3 分钟阅读
原文: Dev.to
Source: Dev.to
多头注意力概述
自注意力让 Transformer 通过 Query(查询)、Key(键) 和 Value(值) 向量捕获词语之间的关系。然而,单个注意力头往往一次只能关注一种关系,而自然语言通常同时包含多层结构、意义和远距离依赖。
多头注意力通过 并行多次应用注意力机制 来解决这个问题。每一次并行运行称为一个 head(头),每个头都有自己学习的 Query、Key、Value 权重。因此,每个头都会从自己的视角审视同一句子。
工作原理
- 准备输入嵌入 – 像往常一样生成 token 嵌入(加上位置编码)。
- 拆分为多个头 – 线性投影层将嵌入映射到 h 个独立的子空间,每个子空间对应一个头。
- 每个头的自注意力 – 每个头独立计算注意力得分并进行加权求和。
- 头的输出 – 每个头产生自己的输出表示。
- 拼接 – 将所有头的输出在特征维度上拼接起来。
- 最终线性层 – 最后一个投影层将拼接后的向量混合为单一输出,供下一个 Transformer 块使用。
不同头捕获的内容
- 词序和语法 – 句法模式和位置关系。
- 邻近词关系 – 本地依赖,如搭配词。
- 远距离链接 – 序列中相距较远的词之间的联系。
- 语义/意义关联 – 上下文相似性和主题连贯性。
类比
可以把单个头想象成以一种特定焦点阅读句子。多头注意力则像是多次阅读同一句子,每次关注不同的方面,然后将这些观察结果合并,形成更丰富的整体理解。
这种并行处理使模型能够同时从多个角度把握语言,而不必让单一注意力机制去处理所有类型的关系。