一、自注意力机制(Self-Attention)
-
核心思想
自注意力机制通过计算同一序列内元素之间的相关性权重,动态捕捉全局依赖关系。与传统注意力机制(关注外部序列)不同,它聚焦于输入内部的关联性。
-
计算流程
输入:序列 X=[x1,x2,…,xn]X=[x1,x2,…,xn](每个xixi为词向量) 输出:加权后的上下文向量 Z=[z1,z2,…,zn]Z=[z1,z2,…,zn]
步骤分解:
-
线性变换:生成Q(Query)、K(Key)、V(Value)矩阵
-
Q=XWQ,K=XWK,V=XWVQ=XWQ,K=XWK,V=XWV
-
(WQ,WK,WVWQ,WK,WV为可学习参数矩阵)
-
注意力得分计算
-
Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V)=softmax(dkQKT)V
-
缩放因子 dkdk:防止点积值过大导致softmax梯度消失
-
得分矩阵:QKTQKT的每个元素表示词与词之间的关联强度
-
-
加权聚合 通过softmax归一化权重后,对Value矩阵加权求和,得到每个位置的上下文向量。
-
示例解释
以句子 “The animal didn’t cross the street because it was too tired” 为例:
-
“it”对”animal”和”street”的注意力权重: 模型通过自注意力自动判断”it”指代”animal”(而非”street”),权重分配更高。
-
优势
-
长距离依赖:直接建模任意两个词的关系,解决RNN的梯度消失问题。
-
并行计算:矩阵运算可一次性处理整个序列,加速训练。
二、多头注意力机制(Multi-Head Attention)
-
设计动机
单一自注意力机制可能无法充分捕捉不同语义子空间的信息。多头注意力通过并行多个独立的注意力头,增强模型对复杂模式的捕捉能力。
-
实现步骤
-
拆分头部 将Q、K、V矩阵按维度拆分为hh个头(如8头):
-
Qi=QWiQ,Ki=KWiK,Vi=VWiV(i=1,2,…,h)Qi=QWiQ,Ki=KWiK,Vi=VWiV(i=1,2,…,h)
-
每个头的维度降为原始维度的1/h1/h(如原始维度512 → 每个头64维)。
-
独立计算注意力 每个头独立进行自注意力计算:
-
headi=Attention(Qi,Ki,Vi)headi=Attention(Qi,Ki,Vi)
-
拼接与线性变换 将多个头的输出拼接后,通过线性层整合信息:
-
MultiHead(Q,K,V)=Concat(head1,…,headh)WOMultiHead(Q,K,V)=Concat(head1,…,headh)WO
-
(WOWO为输出投影矩阵)
-
多头的作用
-
语义子空间分化:不同头可关注语法、指代、情感等不同层面的特征。 示例:
-
头1:捕捉句法结构(如主谓关系)
-
头2:识别指代消解(如”it”指代谁)
-
头3:提取情感极性词汇关联
-
-
数学表达
MultiHead(Q,K,V)=∑i=1hsoftmax(QiKiTdk)ViWOMultiHead(Q,K,V)=i=1∑hsoftmax(dkQiKiT)ViWO
-
优势
-
信息多样性:多视角建模增强表达能力。
-
鲁棒性:减少对单一注意力模式的依赖,降低过拟合风险。
三、自注意力 vs 多头注意力对比
特性 | 自注意力(Single-Head) | 多头注意力(Multi-Head) |
计算维度 | 单一全局注意力 | 多个子空间注意力并行 |
参数量 | 较少(无头部拆分) | 较多(线性投影参数增加) |
表达能力 | 可能遗漏复杂模式 | 捕捉多样化语义关系 |
典型应用 | 简单任务或资源受限场景 | 绝大多数Transformer模型(如BERT) |
四、技术挑战与优化
-
计算复杂度问题
-
问题:自注意力计算量为 O(n2)O(n2),长序列(如1000词)处理成本高。
-
解决方案:
-
稀疏注意力:限制每个词仅关注局部窗口(如Longformer)
-
分块计算:将序列切分为块并行处理(如Reformer)
-
-
位置信息增强
-
问题:自注意力本身对词序不敏感,依赖位置编码。
-
改进方向:
-
相对位置编码(如Transformer-XL)
-
旋转位置编码(RoPE)(如LLaMA、GPT-NeoX)
-
五、实际应用示例
-
机器翻译
-
编码器-解码器注意力:解码器通过多头注意力对齐源语言与目标语言词位。
-
文本摘要
-
自注意力:识别原文中关键句子的重要性权重,指导生成摘要。
-
图像分类(ViT)
-
多头注意力:将图像分块后,建模不同图像块间的空间关系。
总结
-
自注意力是Transformer的核心创新,通过动态权重分配实现全局依赖建模。
-
多头注意力通过并行多个子空间注意力,显著提升模型对复杂语义的捕捉能力。
-
两者共同构成了大模型(如GPT、BERT)的基础,推动NLP、CV等领域的突破。未来发展方向包括降低计算复杂度与增强可解释性。