🧠 Self-Attention vs Multi-Head Attention:同一个灵魂的两种形态
“Self-Attention 是根,多头注意力是枝。”
Transformer 的成功,很多人很自然地会想到 Attention,但 Attention 本身也有“进化链”。其中最核心、最易被混淆的两个概念,就是:
- Self-Attention
- Multi-Head Attention
它们之间的关系有点像“单核思维” 与 “多线程大脑”,看起来结构类似,实则表达力天差地别。
本文将从原理、结构、能力三个维度,深入对比这两种 Attention 机制,帮助你不再混淆“一个注意力头”和“多个 Attention 头”的区别。
📉 一、什么是 Self-Attention?
Self-Attention(自注意力)是 Transformer 架构的基本构件,其作用是:
让一个序列中的每个位置,基于其他所有位置的信息,计算出新的表示。
它的核心机制是:
每个词(token)都去关注整个句子中其他词,根据相关性动态加权,融合为新的语义向量。
Self-Attention 是整个 Transformer 的“原子操作”,后续一切 Attention 机制都是它的变形。
🌱 二、什么是 Multi-Head Attention?
Multi-Head Attention 是 Self-Attention 的增强版,它的灵感很简单:
我们何不同时用多个注意力头,从不同角度去“看”这句话?
而不是每次只能学一种模式(比如“主语”关系),多个 Attention Head 可以分别关注:
- 实体与修饰词;
- 指令与回指;
- 时间状语与事件动词……
它的结构上就是:
- 把输入拆成多个子空间(每个头维度更小);
- 每个头单独做一套 Self-Attention;
- 最后拼接起来,通过线性层融合为一个输出。
📊 三、对比:Self-Attention vs Multi-Head Attention
比较维度 | Self-Attention | Multi-Head Attention |
---|---|---|
本质机制 | 单个注意力机制 | 多个并行的 Self-Attention 子模块 |
表达能力 | 一种语义模式 | 多语义建模(结构、上下文、情感等并行表达) |
参数量 | 较少 | 多组 Q/K/V 权重矩阵,参数量增加 |
训练与推理开销 | 相对较小 | 更高的计算成本,但更强表示能力 |
可解释性 | 易可视化、易理解 | 可视化更复杂,但有更多可观察的“专精头” |
是否可以互换 | 是 Multi-Head 的基础构件 | 是 Self-Attention 的增强结构,不能等价互换 |
摘要一句话:
Self-Attention 是方法,Multi-Head 是策略。
🔍 图示对比:Self vs Multi-Head 看谁看得更多
例句:
“The cat that was sitting on the mat looked happy.”
单头 Attention 观看:
多头 Attention 分头看:
Head 1 看 “happy” 和 “looked”
Head 2 分析 “cat” 和 “sitting”
🧰 四、实际使用场景中的区别与配合
BERT / GPT:
- 全部是 Multi-Head Attention
- 应对自然语言的复杂结构,需要多个头分别学习
ViT:
- 多头 Attention 用来对图片 patch 做局部、边缘、全局维度的观察
TinyBERT / Mobile Model:
- 减头:保留最有用的 1-2 个头
- 实现在移动端、弱资源设备上
✅ 总结:一个看自己,一个一路分工
观点 | 说明 |
---|---|
Self-Attention 能“看”,Multi-Head 让它“多角度看” | |
多头提升的是语义多样性,而不是简单的计算量 | |
它是一种架构上的归纳偏好,告诉模型要去捕捉多个层次的关联 |