Transformer

重塑人工智能的基石架构

架构总览

Attention Is All You Need

Transformer 模型由 Google 团队在 2017 年提出,彻底改变了自然语言处理(NLP)领域的格局。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)结构,完全基于注意力机制(Attention Mechanism)来处理序列数据。

核心设计思想

并行化计算是 Transformer 的最大优势。不同于 RNN 需要按时间步顺序处理,Transformer 可以同时处理整个序列,极大地提高了训练效率,并能够捕捉长距离的依赖关系。

整体架构由编码器(Encoder)解码器(Decoder)两部分组成。编码器负责将输入序列转化为高维向量表示,解码器则根据这些向量生成目标序列。

原始论文参数 数值
dmodel 512(模型维度)
N 6(编码器/解码器层数)
h 8(注意力头数)
dff 2048(FFN内层维度)
ENCODER × N DECODER × N Inputs Outputs (shifted) Self-Attention Feed Forward Masked Attn Cross Attn Feed Forward Linear + Softmax Probabilities

自注意力机制 (Self-Attention)

寻找序列内部的关联

X Q Query K Key V Value MatMul Softmax MatMul Z (Attention)

自注意力机制是 Transformer 的灵魂。它允许模型在处理每个单词时,都能“关注”到序列中的其他单词,从而捕捉上下文信息。

计算公式

Attention(Q, K, V) = softmax(QKT / √dk)V
参数 说明
Q (Query) 查询向量,代表当前单词去“寻找”什么
K (Key) 键向量,代表被查询单词的“标签”
V (Value) 值向量,代表单词的实际内容信息
√dk 缩放因子,防止点积结果过大导致 Softmax 梯度消失

通过计算 Q 和 K 的点积,我们得到了注意力分数(Attention Score),经过 Softmax 归一化后,作为权重对 V 进行加权求和,最终得到包含了上下文信息的输出向量 Z。

为何需要缩放因子?

当维度 dk 较大时,点积结果会变得很大,导致 Softmax 函数进入梯度极小的区域。除以 √dk 可以缓解这个问题。

多头注意力 (Multi-Head Attention)

并行子空间中的多视角关注

如果说自注意力是“看一眼”,那么多头注意力就是“从多个角度看”。模型将 Q、K、V 投影到多个不同的子空间中并行计算注意力,最后将结果拼接起来。

MultiHead(Q,K,V) = Concat(head1, ..., headh)WO

为什么要使用多头?

单一注意力可能只关注一种类型的关系。多头机制允许模型同时关注不同位置的不同类型信息,如语法关系、语义关系、指代关系等。

  • 每个头独立学习不同的表示子空间
  • 捕捉不同类型的依赖关系(语法、语义)
  • 增强模型的表达能力和鲁棒性
  • 计算成本与单头注意力相当(维度均分)
参数 说明
h 注意力头的数量,通常为 8 或 16
dk 每个头的维度,dmodel / h
WO 输出投影矩阵,将拼接结果映射回原始维度
Multi-Head Attention Head 1 Attn Head 2 Attn ... Head h Attn Concat Linear (Wᴼ) Output Q, K, V (Input)

位置编码 (Positional Encoding)

为并行计算注入序列信息

Positional Encoding Visualization sin(pos/10000^(2i/d)) cos(pos/10000^(2i/d)) Input Embed Pos Encoding + Position-Aware Embedding

由于 Transformer 并行处理所有输入,它天生不具备“顺序”概念。为了解决这个问题,我们需要注入位置信息。

为何位置信息很重要?

“我爱你”和“你爱我”包含相同的词,但意义完全不同。没有位置编码,模型无法区分它们。

正弦余弦编码公式

PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
  • pos: 单词在序列中的位置索引
  • i: 维度索引
  • d_model: 模型的嵌入维度

为什么使用正弦/余弦函数?

• 周期性:可以表示任意长度的序列
• 有界性:值始终在[-1, 1]范围内
• 相对位置:任意两个位置的编码可以通过线性变换互相表示

编码器与解码器 (Encoder & Decoder)

深度解析内部组件

Encoder Layer Multi-Head Attention Add & Norm Feed Forward (FFN) Add & Norm FFN 内部结构 ReLU Linear x 2

残差连接与层归一化

每个子层(Attention 或 FFN)周围都有一个残差连接(Residual Connection),随后进行层归一化(Layer Normalization)。这有助于解决深层网络中的梯度消失问题,加速收敛。

Output = LayerNorm(x + Sublayer(x))

前馈网络 (FFN)

在 Attention 层之后,每个位置的向量都会独立地通过一个全连接前馈网络。它包含两个线性变换,中间有一个 ReLU 激活函数。

FFN(x) = max(0, xW1 + b1)W2 + b2

FFN 的作用是进一步处理和提取特征,增加模型的非线性能力。通常内层维度是输入维度的 4 倍。

解码器的特殊之处

解码器比编码器多一个“交叉注意力”层,用于关注编码器的输出。此外,解码器的自注意力使用 Mask 防止关注未来位置。

编码器 vs 解码器

特性 编码器 解码器
注意力类型 双向自注意力 掩码+交叉注意力
子层数量 2 (Attn + FFN) 3 (Masked + Cross + FFN)
输入来源 原始序列 编码器输出 + 已生成序列
典型应用 BERT、ViT GPT、LLaMA

应用与变体 (Applications & Variants)

Transformer 如何改变人工智能

自然语言处理 (NLP)

Transformer 最初为 NLP 设计,并在该领域取得了革命性的成功:

  • 机器翻译: Google Translate 的核心技术
  • 文本生成: ChatGPT、Claude 等对话系统
  • 文本理解: 情感分析、问答系统、文档摘要
  • 代码生成: GitHub Copilot、Cursor 等

计算机视觉 (CV)

Vision Transformer (ViT) 将图像分割成 Patch 序列,证明了 Transformer 在视觉任务上的潜力:

  • 图像分类: 在 ImageNet 上超越传统 CNN
  • 目标检测: DETR 等端到端检测框架
  • 图像生成: Stable Diffusion、DALL-E 等

主流模型变体

模型 特点
BERT 双向编码器,擅长理解任务
GPT 单向解码器,擅长生成任务
T5 编码器-解码器,统一文本到文本框架
LLaMA 高效开源大语言模型
Transformer Core Architecture NLP GPT, BERT, T5 Vision ViT, DETR Audio Whisper Multimodal GPT-4V, Gemini, CLIP 2017 Transformer 2018-19 BERT/GPT 2020-22 ViT/GPT-3 2023+ GPT-4/LLMs

训练技巧 (Training Techniques)

让 Transformer 达到最佳性能

学习率调度 (Learning Rate Schedule)

Transformer 使用特殊的学习率调度策略,包含 Warmup 阶段和递减阶段:

lr = dmodel-0.5 · min(step-0.5, step · warmup_steps-1.5)

Warmup 的作用

训练初期参数随机初始化,梯度可能很大。Warmup 缓慢提升学习率,避免训练不稳定。通常 warmup_steps 设为 4000。

正则化方法

  • Dropout: 在注意力权重、FFN、Embedding后应用,率通常为 0.1
  • Label Smoothing: 将硬标签软化为概率分布,通常 ε=0.1
  • Layer Normalization: 每个子层后进行归一化,稳定训练
  • Gradient Clipping: 限制梯度范数,防止梯度爆炸

计算复杂度分析

组件 时间复杂度 空间复杂度
Self-Attention O(n² · d) O(n² + n · d)
FFN O(n · d²) O(d²)
Total per Layer O(n² · d + n · d²) O(n² + n · d + d²)

注意力的平方复杂度

自注意力的 O(n²) 复杂度是处理长序列的主要瓶颈。这也催生了 Sparse Attention、Linear Attention 等改进方法。

Learning Rate Schedule Training Steps LR warmup Regularization Techniques Dropout p = 0.1 Label Smooth ε = 0.1 Grad Clip max_norm Attention: O(n²) → 长序列瓶颈 Self-Attention Cost

注意力变体 (Attention Variants)

突破 O(n²) 复杂度的各种创新

稀疏注意力 (Sparse Attention)

标准自注意力计算所有 token 对之间的关系,而稀疏注意力只计算部分关键位置,大幅降低计算成本。

  • Longformer: 局部窗口 + 全局 token 组合
  • BigBird: 随机 + 窗口 + 全局注意力
  • Sparse Transformer: 固定稀疏模式

Flash Attention

Flash Attention 是一种IO 感知的精确注意力算法,通过分块计算和缓存优化,在不牺牲精度的情况下大幅加速。

Flash Attention 核心特点

• 避免存储完整的 n×n 注意力矩阵
• 分块计算,充分利用 GPU SRAM
• 训练速度提升 2-4倍,内存减少 5-20倍

线性注意力 (Linear Attention)

通过核函数近似将复杂度从 O(n²) 降到 O(n),但可能牺牲部分表达能力。

  • Performer: 使用随机特征映射近似 Softmax
  • Linear Transformer: 直接移除 Softmax
  • RWKV: 结合 RNN 和 Transformer 优点
  • Mamba: 基于状态空间模型 (SSM)

MQA 与 GQA

通过共享 KV 头来减少内存占用和推理延迟。

方法 KV 头数 应用
MHA h 个 (每个头独立) 原始 Transformer
MQA 1 个 (所有头共享) PaLM, StarCoder
GQA g 个 (分组共享) LLaMA-2, Mistral
Attention Complexity Comparison Standard O(n²) Full Attention Sparse O(n√n) Longformer Linear O(n) Mamba/RWKV Attention Patterns Full Sparse Linear Flash Attention IO-Aware • Memory Efficient • 2-4x Faster 2019 Sparse 2022 Flash 2023 Mamba

缩放法则 (Scaling Laws)

模型能力与资源的关系

Scaling Laws Visualization Compute (FLOPs) Performance 1B 10B 100B 1T+ L ∝ C^(-α) 幂律关系

计算与性能的关系

OpenAI 的研究发现,模型性能与计算量、参数量、数据量都呈现幂律关系:

Loss ∝ N^(-0.076) ∝ D^(-0.095) ∝ C^(-0.050)

其中 N 是参数量,D 是数据量,C 是计算量。

参数与数据的平衡

资源分配困境

给定固定的计算预算,应该训练更大的模型还是使用更多数据?这是 LLM 训练中的核心问题。

Chinchilla 法则

DeepMind 的 Chinchilla 研究表明,大多数大模型训练数据不足

  • 最优比例: 参数量和训练 token 数应同等缩放
  • 实践建议: 1B 参数 ≈ 20B tokens 训练数据
  • 70B 参数: 约需 1.4T tokens
模型 参数量 训练 Tokens
GPT-3 175B 300B (欠拟合)
Chinchilla 70B 1.4T (最优)
LLaMA-2 70B 2T

推理优化 (Inference Optimization)

加速部署,降低成本

KV Cache

在自回归生成中,每步只需计算新 token 的 Q,而 K 和 V 可以缓存复用,避免重复计算。

KV Cache 内存估算

KV Cache 内存 = 2 × batch × layers × heads × seq_len × head_dim × dtype_size
例如 LLaMA-70B,序列长度 4096,FP16:约 2.6GB/请求

量化技术 (Quantization)

将模型权重从 FP16/FP32 压缩到更低精度,减小内存占用并加速推理:

方法 精度 压缩比 特点
INT8 8-bit 2x 精度损失小,广泛支持
INT4/GPTQ 4-bit 4x 在消费级硬件上运行 LLM
AWQ 4-bit 4x 保留重要通道精度
GGUF 2-8 bit 变化 CPU 推理优化

推测解码 (Speculative Decoding)

使用小模型快速生成候选 token,再用大模型并行验证,可加速 2-3 倍。

  • Draft Model: 小模型快速生成多个候选 token
  • Target Model: 大模型一次性验证所有候选
  • 接受/拒绝: 根据概率分布决定接受哪些 token
  • 无损: 输出质量与原始模型完全一致

其他优化技术

Continuous Batching: 动态批处理提高吞吐
Paged Attention: 类似虚拟内存管理 KV Cache
Tensor Parallelism: 多 GPU 并行推理

Inference Optimization Pipeline KV Cache K₁ K₂ K₃ ... Kₙ ← New Quantization FP16 → INT4 4x 内存减少 Speculative Draft + Verify 2-3x 加速 Continuous Batching Request 1 | Request 2 | Request 3 | ... 综合优化效果 10-100x 性能提升 | 4-16x 内存减少