目录
如果说 Self-Attention(自注意力机制)是 Transformer 的心脏,那么 Multi-Head Self-Attention(多头自注意力机制)就是 Transformer 真正变得强大的关键所在。
在上一篇文章《掌握 Self-Attention(自注意力)机制》中,我们已经了解到:
Self-Attention 可以让序列中的每个元素与所有元素建立联系,从而获得全局信息。
然而,研究人员很快发现:
单个 Self-Attention 仍然存在一定局限性。
因为:
一次注意力计算
只能学习一种关系
例如:
对于一句话:
小明喜欢打篮球
模型可能学习到:
喜欢 ↔ 篮球
之间的语义关系。
但却无法同时充分学习:
小明 ↔ 喜欢
之间的主谓关系。
为了让模型能够同时关注不同类型的信息。
Google 在 Transformer 中提出了:
Multi-Head Self-Attention
即:
多头自注意力机制
这一机制最终成为:
-
Transformer
-
BERT
-
GPT
-
ChatGPT
-
Claude
-
DeepSeek
等大模型的核心基础。
二、为什么需要多头自注意力
(一)单头Attention的问题
传统 Self-Attention:
结构如下:
Input
↓
Self-Attention
↓
Output
看起来已经能够学习全局关系。
但实际上:
一次注意力计算只能产生:
一个注意力空间
例如:
句子:
小明喜欢打篮球
可能得到:
喜欢 ↔ 篮球
较高权重。
但是:
小明 ↔ 喜欢
关系可能学习不足。
(二)现实语言关系非常复杂
自然语言中同时存在:
1、语法关系
例如:
主语 ↔ 谓语
2、语义关系
例如:
喜欢 ↔ 篮球
3、上下文关系
例如:
代词 ↔ 指代对象
4、长距离依赖关系
例如:
小明
...
他
之间关系。
单个 Self-Attention:
很难同时学习所有关系。
因此:
Google 提出了:
多头机制
三、多头自注意力核心思想
(一)多个注意力同时工作
传统方式:
一个专家
分析问题
多头机制:
多个专家
同时分析问题
每个专家:
关注不同角度。
最后汇总结果。
(二)结构示意
例如:
Input
↓
Head1
Head2
Head3
Head4
↓
Concat
↓
Linear
↓
Output
每个 Head:
都是一个独立的 Self-Attention。
(三)优势
不同 Head 可以学习:
Head1 → 语法
Head2 → 语义
Head3 → 长距离依赖
Head4 → 上下文关系
最终:
获得更丰富的特征表达。
四、多头自注意力整体结构
完整结构如下:
Input
↓
Linear
↓
Q
K
V
↓
Split
↓
Head1
Head2
Head3
...
HeadN
↓
Concat
↓
Linear
↓
Output
整个过程:
可以分为:
1、生成QKV
2、拆分多个Head
3、独立Attention计算
4、拼接结果
5、线性映射
五、Q、K、V回顾
(一)Query
表示:
我要找什么
记作:
Q
(二)Key
表示:
我拥有什么信息
记作:
K
(三)Value
表示:
真正输出的信息
记作:
V
(四)生成过程
输入:
X
通过三个线性层:
Q = XWQ
K = XWK
V = XWV
得到:
Q
K
V
六、Head拆分过程
(一)为什么要拆分
假设:
Embedding维度:
512
如果直接做 Self-Attention:
只有一个表示空间。
因此:
Transformer 采用:
8个Head
进行拆分。
(二)拆分方式
例如:
512维
拆成:
64维 × 8
即:
Head1 = 64
Head2 = 64
Head3 = 64
...
Head8 = 64
(三)目的
让不同Head:
学习不同特征。
避免所有信息混在一起。
七、多头Attention计算过程
(一)单个Head计算
每个Head:
执行标准 Self-Attention。
公式:
Attention(Q,K,V)
=
Softmax(
QKᵀ/√dk
)
V
(二)多个Head并行
例如:
Head1
↓
Attention1
Head2
↓
Attention2
Head3
↓
Attention3
...
同时执行。
(三)结果拼接
所有Head输出:
Concat
例如:
64
+
64
+
64
+
64
+
64
+
64
+
64
+
64
=
512
恢复原维度。
(四)线性映射
最后:
Concat
↓
WO
↓
Output
得到最终输出。
八、多头自注意力结构图
整体流程:
Input
↓
Linear
↓
Q K V
↓
Split
↓
Head1 Attention
Head2 Attention
Head3 Attention
Head4 Attention
Head5 Attention
Head6 Attention
Head7 Attention
Head8 Attention
↓
Concat
↓
Linear
↓
Output
这是 Transformer 中最核心的模块。
九、多头机制为什么有效
(一)学习不同特征
不同 Head:
能够关注不同关系。
例如:
Head1
关注语法
Head2
关注语义
Head3
关注上下文
Head4
关注长距离依赖
(二)提高模型表达能力
单头:
一个观察角度
多头:
多个观察角度
因此:
特征表达能力更强。
(三)避免信息损失
多个空间同时建模。
减少重要信息遗漏。
十、多头自注意力在Transformer中的位置
Transformer Encoder:
Input
↓
Embedding
↓
Multi-Head Attention
↓
Add & Norm
↓
Feed Forward
↓
Add & Norm
↓
Output
Transformer Decoder:
同样包含:
Multi-Head Attention
模块。
因此:
整个 Transformer 架构都依赖多头机制。
十一、多头自注意力的计算复杂度
(一)时间复杂度
复杂度:
O(n²)
其中:
n
表示序列长度。
(二)为什么大模型显存占用高
例如:
上下文长度:
2048
Attention矩阵:
2048 × 2048
已经非常庞大。
如果:
32768 Tokens
显存压力会急剧增加。
(三)这也是长上下文优化的原因
后来出现:
-
FlashAttention
-
Sparse Attention
-
Linear Attention
等改进方案。
十二、PyTorch实现多头自注意力
下面实现一个简化版 Multi-Head Attention。
python
import torch
import torch.nn as nn
class MultiHeadAttention(nn.Module):
def __init__(self,
embed_dim,
num_heads):
super().__init__()
self.attn = nn.MultiheadAttention(
embed_dim=embed_dim,
num_heads=num_heads,
batch_first=True
)
def forward(self,x):
output,_ = self.attn(
x,
x,
x
)
return output
使用:
model = MultiHeadAttention(
embed_dim=512,
num_heads=8
)
即可创建:
8头注意力
模型。
十三、多头自注意力在大模型中的应用
目前几乎所有主流大模型都依赖 Multi-Head Attention。
(一)Transformer
首次提出:
8 Head
设计。
(二)BERT
Encoder全部采用:
Multi-Head Attention
(三)GPT系列
例如:
-
GPT-2
-
GPT-3
-
GPT-4
均依赖:
多头注意力。
(四)ChatGPT
本质上:
仍然运行在:
Transformer
+
Multi-Head Attention
架构之上。
(五)DeepSeek
当前主流 MoE 大模型。
同样采用:
Multi-Head Self-Attention
进行上下文建模。
十四、多头自注意力的优势与不足
(一)优势
1、学习多种关系
同时建模:
-
语法
-
语义
-
上下文
2、表达能力更强
远超单头Attention。
3、支持并行计算
GPU利用率更高。
4、适合大规模训练
支撑千亿参数模型。
(二)不足
1、计算复杂度高
O(n²)
2、显存消耗大
长文本场景成本较高。
3、推理成本较高
需要较强硬件支持。
十五、总结
Multi-Head Self-Attention(多头自注意力机制)是 Transformer 成功的关键技术之一,也是现代大语言模型最核心的基础组件。
本文重点掌握了:
1、多头自注意力提出背景;
2、单头Attention存在的问题;
3、多头机制核心思想;
4、Q、K、V作用;
5、多头Attention计算流程;
6、Head拆分机制;
7、Concat与线性映射过程;
8、Transformer中的位置;
9、PyTorch实现方式;
10、多头自注意力优势与不足。
可以将 Multi-Head Self-Attention 理解为:
"让多个 Self-Attention 从不同角度同时观察输入数据,并融合结果形成更强特征表达能力的机制。"
正是这一机制,让 Transformer 具备了强大的语言理解能力,也推动了 GPT、BERT、ChatGPT、DeepSeek 等大模型的诞生。因此,对于学习 Transformer 和大模型开发的工程师而言,多头自注意力机制是必须深入掌握的核心知识。