AI大模型-attention(注意力机制)与self attention(自注意力机制)

AI大模型中的注意力机制(Attention)与自注意力机制(Self-Attention)深度解析

在现代大语言模型(LLM,如GPT、LLaMA、BERT、Qwen、DeepSeek等)中,注意力机制是核心驱动力,而自注意力机制则是Transformer架构最关键的创新。下面从概念、本质区别、计算过程、Transformer中的实际应用以及为什么它能“统治”AI大模型三个层面来系统讲解。

1. 注意力机制(Attention)的通用概念

注意力机制最早出现在Seq2Seq模型(2014–2015年 Bahdanau & Luong Attention),目的是解决RNN/LSTM在长序列上的信息瓶颈问题。

核心思想:不要把源序列压缩成一个固定向量,而是让解码器在每一步都“动态查看”源序列中所有部分,并根据当前需求加权求和

经典公式(Scaled Dot-Product Attention 的前身):

  • 输入:源序列的隐藏状态(作为Key和Value),当前解码器的隐藏状态(作为Query)
  • 计算:
    Attention(Q, K, V) = softmax(QKᵀ / √dₖ) V

其中:

  • Q(Query):当前需要信息的“问题”或“需求”
  • K(Key):用来匹配的“索引”或“标签”
  • V(Value):真正要传递的内容

一句话总结经典Attention:让一个序列(通常是解码器侧)去关注另一个不同序列(通常是编码器侧)。

2. 自注意力机制(Self-Attention)—— Transformer的革命性创新

2017年《Attention is All You Need》论文中,Google提出:既然Attention这么好,为什么不让序列自己关注自己呢?

Self-Attention的核心区别就在于:Q、K、V 全部来自同一个序列

对比维度经典Attention(Cross-Attention)Self-Attention
Q 来源通常来自解码器(Decoder)与K、V来自同一个序列(Encoder或Decoder内部)
K、V 来源来自另一个序列(通常Encoder输出)与Q来自同一个序列
关注的对象关注“别人”(跨序列)关注“自己序列内部的所有token”
典型使用位置Transformer的Decoder中Encoder-Decoder Attention层Encoder每一层、Decoder的Masked Self-Attention层
主要解决的问题源语言与目标语言的对齐序列内部的长距离依赖、上下文建模
是否允许并行解码时仍需逐步生成完全并行(这是最大杀手锏)

一句话总结Self-Attention:让序列中的每个token同时“看到”序列中所有其他token(包括自己),并根据相关性加权聚合信息

3. Self-Attention 的详细计算过程(Scaled Dot-Product Attention)

假设输入序列是 X ∈ ℝ^{n × d}(n个token,每个维度d)

  1. 线性投影得到三组向量(可学习参数):
   Q = X W_Q    ∈ ℝ^{n × d_k}
   K = X W_K    ∈ ℝ^{n × d_k}
   V = X W_V    ∈ ℝ^{n × d_v}
  1. 计算注意力分数(相似度):
   scores = Q Kᵀ / √d_k     ∈ ℝ^{n × n}
  • 除以 √d_k 是缩放(Scaled),防止点积过大导致softmax梯度消失
  1. softmax归一化得到注意力权重:
   attention_weights = softmax(scores)    ∈ ℝ^{n × n}
  1. 加权求和得到输出:
   output = attention_weights V    ∈ ℝ^{n × d_v}

每一行output[i] 就是第i个token经过了整个序列加权后的新表示。

4. Transformer中三种注意力实际用法对比

层级位置Attention类型Q 来源K、V 来源是否Mask作用
Encoder 的每一层Self-AttentionEncoder自身Encoder自身无Mask建模输入序列内部全局依赖
Decoder 的第一子层Masked Self-AttentionDecoder自身Decoder自身因果Mask(上三角)只看前面token(自回归生成)
Decoder 的第二子层Encoder-Decoder Attention(Cross-Attention)Decoder当前层Encoder最后一层输出无Mask让生成时关注整个源序列

这三种共同组成了Transformer的强大表达能力。

5. 多头注意力(Multi-Head Attention)——进一步增强

单次Self-Attention只能捕捉一种关系模式。

多头 = 把d_model拆成 h 份(通常 h=8/16/32),每份独立做一次Self-Attention,然后拼接起来再做一次线性变换。

效果

  • 不同head可以关注不同的语义维度(句法、语义、指代、情感等)
  • 相当于集成学习,表达能力大幅提升

公式简写:
MultiHead(Q,K,V) = Concat(head₁, …, headₕ) W^O

6. 为什么Self-Attention让大模型“起飞”?

维度RNN/LSTM/GRUSelf-Attention + Transformer
长距离依赖非常困难(梯度消失)直接建模,距离无关
并行计算顺序计算,慢所有token同时计算,极易并行
路径长度O(n)O(1)(任意两个token直接交互)
位置信息天然带有需要额外加Positional Encoding
可扩展性很难到几百层轻松堆到几十上百层(LLaMA 405B等)

一句话:Self-Attention让模型第一次真正做到了“全局视野 + 完全并行 + 可深度堆叠”,这是后续所有大模型(GPT、BERT、T5、PaLM、LLaMA、Grok、Qwen、DeepSeek……)的共同基石。

如果你想更直观理解计算过程,推荐这两篇经典可视化文章(依然不过时):

  • The Illustrated Transformer (Jay Alammar)
  • LLM Transformer Model Visually Explained (Georgia Tech)

有想深入探讨的部分(例如Rotary Position Embedding、FlashAttention、GQA/MQA、Grouped-Query Attention等现代优化)也可以继续问!

文章已创建 4665

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部