Transformer 整体架构
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ Transformer 编码器-解码器 │
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ 输入嵌入 │ │ 输出嵌入 │ │
│ │ (Input Embed) │ │ (Output Embed) │ │
│ └──────────┬──────────┘ └──────────┬──────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ + 位置编码 │ │ + 位置编码 │ │
│ │ (Positional Encod) │ │ (Positional Encod) │ │
│ └──────────┬──────────┘ └──────────┬──────────┘ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────────────┐ │ │
│ │ N× Encoder层 │ │ │
│ │ ┌───────────────┐ │ │ │
│ │ │ Self-Attention│ │ │ │
│ │ └───────────────┘ │ │ │
│ │ ┌───────────────┐ │ │ │
│ │ │ Feed-Forward │ │ │ │
│ │ └───────────────┘ │ │ │
│ └──────────┬──────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────┤ │
│ │ │ │ │
│ ▼ │ ▼ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ N× Decoder层 │ │ 线性层 + Softmax │ │
│ │ ┌───────────────┐ │ │ (Output Prob) │ │
│ │ │ Masked Attn │ │ └─────────────────────┘ │
│ │ └───────────────┘ │ │
│ │ ┌───────────────┐ │ │
│ │ │ Cross-Attn │ │ │
│ │ └───────────────┘ │ │
│ │ ┌───────────────┐ │ │
│ │ │ Feed-Forward │ │ │
│ │ └───────────────┘ │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 输出概率分布 │ │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
自注意力机制 (Self-Attention) 核心原理
┌─────────────────────────────────────────────────────────────────────────┐
│ │
│ 问题:如何让序列中每个位置都能"关注"到其他所有位置? │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Q (Query): 我想查询什么 │ │
│ │ K (Key): 我有什么特征 │ │
│ │ V (Value): 我的实际内容 │ │
│ │ │ │
│ │ Attention(Q, K, V) = softmax(Q·K^T/√d_k) · V │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ 通俗理解: │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Query = 我想找"苹果" │ │
│ │ │ │
│ │ Keys | 相似度 │ │
│ │ ────────┼───────────────────────────────────────── │ │
│ │ "苹果" │ ★★★★★ (相似度=0.9) │ │
│ │ "香蕉" │ ★★☆☆☆ (相似度=0.2) │ │
│ │ "橘子" │ ★★★☆☆ (相似度=0.5) │ │
│ │ │ │
│ │ Value × 相似度权重 = 最终关注的内容 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
多头注意力 (Multi-Head Attention)
┌─────────────────────────────────────────────────────────────────────────┐
│ │
│ 多个注意力头并行处理,捕捉不同类型的关系 │
│ │
│ 输入向量 X │
│ │ │
│ ▼ │
│ ┌────────────┼────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Head 1 Head 2 Head 3 │
│ (位置) (语义) (语法) │
│ │ │ │ │
│ └────────────┼────────────┘ │
│ │ │
│ ▼ │
│ 拼接后线性变换 │
│ │ │
│ ▼ │
│ 输出向量 │
│ │
│ 示例:句子 "苹果很好吃,我喜欢吃" │
│ • Head 1: 关注"苹果"和"水果"的关系 │
│ • Head 2: 关注"苹果"和"好吃"的情感关系 │
│ • Head 3: 关注"苹果"和"喜欢"的语法连接 │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Transformer vs RNN 对比
┌─────────────────────────────────────────────────────────────────────────┐
│ │
│ ┌────────────────────────┬──────────────────────────────────────────┐ │
│ │ RNN │ Transformer │ │
│ ├────────────────────────┼──────────────────────────────────────────┤ │
│ │ 顺序处理,依赖上一步 │ 并行处理,同时关注所有位置 │ │
│ │ O(n) 序列化 │ O(1) 并行化 │ │
│ │ 长序列梯度消失 │ 自注意力无长依赖问题 │ │
│ │ 信息只能单向传递 │ 双向/全局信息流动 │ │
│ │ 适合短序列 │ 适合各种长度序列 │ │
│ └────────────────────────┴──────────────────────────────────────────┘ │
│ │
│ 为什么Transformer成为主流? │
│ ✓ 可以并行训练,速度快 │
│ ✓ 捕捉长距离依赖 │
│ ✓ 可扩展性强(GPT可达万亿参数) │
│ ✓ 预训练效果好 │
│ │
└─────────────────────────────────────────────────────────────────────────┘
基于Transformer的著名模型
┌─────────────────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ BERT (2018) │ │
│ │ 双向Transformer编码器 │ │
│ │ 预训练:掩码语言建模 + 下一句预测 │ │
│ │ 用途:分类、问答、命名实体识别 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ GPT系列 (2018-2024) │ │
│ │ 单向Transformer解码器 │ │
│ │ GPT-2: 15亿参数 / GPT-3: 1750亿 / GPT-4: 万亿级 │ │
│ │ 用途:文本生成、代码编写、对话 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ LLaMA / ChatGLM / Qwen (2023-) │ │
│ │ 开源大语言模型 │ │
│ │ 7B, 13B, 70B 参数版本 │ │
│ │ 用途:本地部署、私有化部署 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
💡 Transformer核心要点
✓ 自注意力:每个位置都能直接关注其他所有位置
✓ 多头:多个头捕捉不同类型的关系(语义、语法、位置)
✓ 位置编码:用数学方式注入位置信息(因为没有循环结构)
✓ 残差连接:帮助深层网络训练
✓ 层归一化:稳定训练过程