1. 多头注意力机制的核心原理
多头注意力机制(Multi-Head Attention)是Transformer架构中的核心组件,它通过并行计算多个注意力头来捕捉输入序列中不同位置和不同表示子空间的信息。这种设计源于对人类注意力机制的模拟——就像人在阅读时会同时关注词语的语义、语法结构和上下文关系一样。
1.1 自注意力机制基础
自注意力机制的核心是计算三个关键矩阵:查询(Query)、键(Key)和值(Value)。给定输入序列X∈R^(n×d),通过三个不同的线性变换得到:
- Q = XW_Q (查询矩阵)
- K = XW_K (键矩阵)
- V = XW_V (值矩阵)
注意力得分的计算公式为:
Attention(Q,K,V) = softmax(QK^T/√d_k)V
这里√d_k的缩放因子非常重要。当d_k较大时,点积结果可能变得非常大,导致softmax函数进入梯度极小的区域。通过除以√d_k,可以保持梯度的稳定性。
1.2 多头注意力的创新设计
传统单头注意力的局限在于只能学习一种注意力模式。多头注意力的创新在于:
- 将d_model维的Q、K、V拆分为h个头,每个头的维度为d_k = d_v = d_model/h
- 每个头独立计算注意力
- 将各头的输出拼接后通过线性变换WO
这种设计带来了三个关键优势:
- 并行化计算:各头可以并行计算,提高效率
- 多样化关注:不同头可以学习不同的注意力模式
- 子空间学习:在低维子空间中更容易学习特定特征
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数学实现细节解析
2.1 维度变换过程
假设输入X∈R^(n×d_model),头数h=8,则:
- 经过W_Q、W_K、W_V变换后,每个矩阵维度仍为n×d_model
- 拆分为h个头时,reshape为n×h×(d_model/h)
- 转置为h×n×(d_model/h)以便并行计算
- 各头计算后得到h×n×(d_model/h)的输出
- 转置回n×h×(d_model/h)并拼接为n×d_model
- 最后通过WO∈R^(d_model×d_model)线性变换
2.2 关键参数选择
在实际应用中,参数选择有以下几个经验法则:
- d_model通常选择512或1024这样的2的幂次
