Transformer 架构与 Attention 机制:技术解析
Transformer 架构由 Google 在 2017 年的论文 “Attention Is All You Need” 中提出,是现代人工智能的核心基础。所有主流大语言模型,例如 GPT、Claude 和 Gemini,都构建在这一架构之上。
在 Transformer 之前:RNN 和 LSTM 的局限
在 Transformer 时代之前,NLP 任务主要依赖循环神经网络(RNN)和长短期记忆网络(LSTM):
RNN/LSTM 的问题:
- 需要顺序处理 → 无法并行化。
- 在长序列中出现梯度消失/爆炸。
- 难以学习长距离依赖关系。
- 训练时间非常长。
Self-Attention 机制
Self-attention 是一种计算序列中每个元素与其他所有元素关系的机制。
数学公式
Attention(Q, K, V) = softmax(QK^T / √d_k) × V
参数说明:
- Q(Query): 查询向量。
- K(Key): 用于匹配的键向量。
- V(Value): 实际信息向量。
- d_k: Key 向量的维度。
逐步计算流程
- 投影: 输入 → Q、K、V 矩阵
1Q = X × W_Q 2K = X × W_K 3V = X × W_V
- 计算 Attention Scores: Q 与 K 的点积
scores = Q × K^T
- 缩放: 用 √d_k 进行缩放以保证梯度稳定
scaled_scores = scores / √d_k
- Softmax: 转换为概率分布
attention_weights = softmax(scaled_scores)
- 加权求和: 与 V 相乘
output = attention_weights × V
Multi-Head Attention
Transformer 不使用单一的 attention head,而是并行使用多个 head:
1MultiHead(Q, K, V) = Concat(head_1, ..., head_h) × W_O 2 3where head_i = Attention(QW_Q^i, KW_K^i, VW_V^i)
Multi-Head Attention 的优势
- 在不同的表示子空间中学习。
- 捕捉多种类型的上下文关系。
- 更丰富的特征提取能力。
典型配置:
- GPT-3:96 个 attention heads,d_model = 12288。
- GPT-4:估计超过 120 个 heads。
Positional Encoding
由于 Transformer 以并行方式处理数据,需要加入位置信息以保存序列上下文:
正弦位置编码(Sinusoidal Positional Encoding)
PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
Rotary Positional Embedding(RoPE)
一种现代模型中使用的更先进方法:
f(x, pos) = x × e^(i × pos × θ)
RoPE 的优势:
- 自然编码相对位置信息。
- 更强的长序列外推能力。
- 用于 GPT-NeoX、LLaMA 和 Mistral 等模型。
Feed-Forward Network
每个 attention 层后跟随一个 MLP 层:
FFN(x) = GELU(xW_1 + b_1)W_2 + b_2
典型维度:
- d_model = 4096
- d_ff = 4 × d_model = 16384
激活函数
- ReLU: 经典且简单。
- GELU: GPT 模型常用。
- SwiGLU: LLaMA 和 PaLM 使用。
Layer Normalization
这是训练稳定性的关键组件:
Pre-LN vs Post-LN
Post-LN(原版):
x = x + Attention(LayerNorm(x))
Pre-LN(现代):
x = LayerNorm(x + Attention(x))
Pre-LN 提供更稳定的训练效果,已成为当今行业标准。
Encoder 与 Decoder 架构
Encoder-Only(BERT 风格)
- 双向 attention。
- 用于 Classification、NER、语义相似度。
- Masked Language Modeling。
Decoder-Only(GPT 风格)
- 因果/自回归 attention。
- 用于文本生成与对话。
- 下一个 token 预测。
Encoder-Decoder(T5、BART)
- 序列到序列任务。
- 用于翻译与摘要。
Causal Masking
用于在 decoder 模型中遮蔽未来 token:
mask = triu(ones(seq_len, seq_len), diagonal=1) masked_scores = scores + mask × (-inf)
这确保模型在生成时只能看到先前的 tokens。
KV-Cache 优化
为防止推理过程中出现重复计算:
1Step 1: Calculate K_1, V_1 → save to cache 2Step 2: Calculate K_2, V_2 → K = [K_1, K_2], V = [V_1, V_2] 3Step n: Calculate only for the new token, retrieve old values from cache
**内存节省:**处理步骤由 O(n²) → O(n)。
Flash Attention
一种高效利用内存的注意力机制实现:
标准 Attention 的问题:
- O(n²) 的内存占用。
- HBM(高带宽内存)瓶颈。
Flash Attention 的解决方案:
- **Tiling:**将注意力拆分为小块处理。
- **Online Softmax:**增量式计算。
- **I/O Aware:**优化 GPU 内存层级。
**效果:**2-4 倍速度提升,5-20% 内存节省。
Sparse Attention 变体
通过减少注意力复杂度来支持更长的上下文:
Local Attention
仅关注邻近的 tokens。
Dilated Attention
以特定间隔进行注意力计算。
Longformer Pattern
结合 Local + Global 注意力。
Modern Transformer 变体
| Model | Feature | Context Length |
|---|---|---|
| GPT-4 | MoE, long context | 128K |
| Claude 3 | Constitutional AI | 200K |
| Gemini 1.5 | Sparse MoE | 1M |
| Mistral | Sliding window | 32K |
结论
Transformer 架构是现代 AI 的核心构建模块。其自注意力机制、并行处理能力以及学习长距离依赖的能力,使这一架构具有革命性意义。
在 Veni AI,我们在企业解决方案中高效使用基于 Transformer 的模型。如需技术咨询,请联系我们。
