Self-Attention Mechanism
深度学习的核心引擎
从序列交互到上下文感知,揭秘 Transformer 的灵魂
1. 核心思想 (Core Idea)
自注意力机制 (Self-Attention) 的本质是让序列中的每个元素都能够“看见”并“关注”序列中的其他所有元素。 它通过计算元素之间的相互关联强度(权重),动态地聚合上下文信息,从而生成包含全局语境的特征表示。
- Self (自): 注意力机制发生在序列内部,即自己关注自己。
- Attention (注意力): 赋予重要的信息更高的权重,忽略无关信息。
想象你在阅读一句话:“The animal didn't cross the street because it was too tired.” 当你读到 "it" 时,你的大脑会自动将其与 "animal" 关联起来,而不是 "street"。 自注意力机制就是让模型学会这种“关联”能力。
2. 数学计算步骤 (Mathematical Steps)
2.1 输入表示:Q, K, V 的诞生
对于输入序列中的每个向量 \(x\),我们通过三个可学习的权重矩阵 \(W^Q, W^K, W^V\) 将其映射到三个不同的空间,得到:
- Query (Q): 查询向量,代表“我在寻找什么信息”。
- Key (K): 键向量,代表“我包含什么特征”,用于被 Query 匹配。
- Value (V): 值向量,代表“我的实际内容”,最终被加权求和的信息。
2.2 注意力分数计算 (Attention Score)
核心公式如下:
步骤解析:
- 点积 (Dot Product) \(QK^T\): 计算 Query 和 Key 的相似度。相似度越高,分数越大。
- 缩放 (Scale) \(\frac{1}{\sqrt{d_k}}\): 除以维度的平方根,防止点积结果过大导致 Softmax 梯度消失。
- 归一化 (Softmax): 将分数转换为概率分布(权重和为 1)。
- 加权求和 (Weighted Sum): 用权重乘以 Value,得到最终的上下文向量。
3. 多注意力头 (Multi-Head Attention)
为了捕捉不同子空间(Subspace)的特征,我们并行运行多个自注意力机制,称为“头”(Head)。 例如,一个头可能关注语法结构,另一个头关注语义关联。
最终,我们将所有头的输出拼接(Concat)起来,再经过一次线性变换,得到最终的输出。
4. 在 Transformer 中的应用
自注意力机制是 Transformer 架构的基石。
- 编码器 (Encoder): 利用自注意力处理输入序列,理解上下文(如机器翻译中的源语言句子)。
- 解码器 (Decoder): 利用“掩码自注意力” (Masked Self-Attention) 生成目标序列,确保生成时只能看到已生成的词。
- 交叉注意力 (Cross-Attention): 解码器关注编码器的输出,实现源语言到目标语言的对齐。
5. 位置编码 (Positional Encoding)
自注意力机制的一个关键局限:它本身是排列不变的(Permutation Invariant)。 这意味着如果打乱输入序列的顺序,输出结果在数学上是等价的。
但语言和序列数据通常对顺序敏感——"猫追狗" 和 "狗追猫" 意义完全不同。 为了解决这一问题,Transformer 引入了位置编码,将位置信息注入到输入向量中。
5.1 正弦余弦位置编码
原始 Transformer 论文使用正弦和余弦函数生成位置编码:
其中 pos 是位置索引,i 是维度索引,d_model 是模型维度。 这种设计使模型能够学习相对位置关系。
5.2 其他位置编码方法
| 方法 | 特点 | 代表模型 |
|---|---|---|
| 正弦位置编码 | 固定、无需学习、支持外推 | 原始 Transformer |
| 可学习位置编码 | 随机初始化并训练优化 | BERT, GPT |
| 旋转位置编码 (RoPE) | 融合绝对与相对位置信息 | LLaMA, GPT-NeoX |
| 相对位置编码 | 直接建模位置间的相对距离 | Transformer-XL, T5 |
6. 优点与意义
| 特性 | RNN / LSTM | CNN | Self-Attention (Transformer) |
|---|---|---|---|
| 计算并行度 | 低 (顺序计算) | 高 | 极高 (全并行) |
| 长距离依赖 | 弱 (梯度消失) | 中 (受限于卷积核) | 强 (直接交互 O(1)) |
| 可解释性 | 差 | 中 | 好 (注意力权重可视化) |
6.1 可视化演示:注意力热力图
鼠标悬停在单词上,查看它对其他单词的“关注度”(模拟数据)。
7. 实际应用案例
7.1 大语言模型 (LLM)
GPT 系列、LLaMA、Claude 等大语言模型的核心架构都基于自注意力机制。 它们使用解码器仅架构(Decoder-Only),通过掩码自注意力实现自回归文本生成。
- GPT-4:多模态大模型,支持文本与图像理解,参数规模达万亿级别
- LLaMA 3:Meta开源高效模型,使用 GQA(分组查询注意力)优化注意力计算
- Claude 3:Anthropic推出,强调安全性与长上下文处理能力(支持200K tokens)
- Gemini:Google DeepMind推出的多模态模型,原生支持文本、图像、音频、视频
7.2 计算机视觉 (Vision Transformer)
ViT (Vision Transformer) 将图像分割成固定大小的 patch, 将其展平为序列后输入 Transformer 进行处理,证明了自注意力在视觉任务中的有效性。
7.3 语音识别与合成
Whisper(语音识别)和 TTS 模型(语音合成)都采用了基于自注意力的架构, 能够处理长时间的音频序列并捕捉复杂的声学特征。
7.4 多模态融合
在多模态模型(如 CLIP、GPT-4V、Gemini)中,自注意力机制用于跨模态的信息融合, 使模型能够同时理解文本、图像、音频等多种模态的数据。
7.5 自注意力的变体与优化
随着模型规模的增长,研究者提出了多种自注意力的优化变体:
| 变体名称 | 核心思想 | 复杂度 | 代表模型 |
|---|---|---|---|
| 稀疏注意力 | 仅计算部分位置的注意力 | O(n√n) | Sparse Transformer |
| 线性注意力 | 用核函数近似softmax | O(n) | Linear Transformer |
| Flash Attention | IO感知的分块计算 | O(n²)但更快 | LLaMA 2/3 |
| 滑动窗口注意力 | 限制注意力范围为局部窗口 | O(n·w) | Mistral, Longformer |
| 分组查询注意力 (GQA) | 多个Query共享Key-Value | 减少KV缓存 | LLaMA 2/3 |