核心网络架构
深入理解CNN、RNN和Transformer,掌握现代深度学习的主流架构设计
6.1卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Network, CNN)是处理网格结构数据(特别是图像)的强大工具。它通过卷积操作自动提取空间特征,在计算机视觉领域取得了革命性突破。
卷积层
卷积层是CNN的核心,使用可学习的滤波器(卷积核)扫描输入,提取局部特征。
输入图像 (5×5) 卷积核 (3×3) 特征图 (3×3)
1 1 1 0 0 1 0 1 4 3 4
0 1 1 1 0 ★ 0 1 0 = 2 4 3
0 0 1 1 1 1 0 1 2 3 4
0 0 1 1 0
0 1 1 0 0
计算过程:
左上角: 1×1 + 1×0 + 1×1 + 0×0 + 1×1 + 1×0 + 0×1 + 0×0 + 1×1 = 4
图6-1:卷积操作示例。卷积核在输入上滑动,逐元素相乘求和得到输出特征图。
- 局部连接:每个神经元只连接输入的局部区域,减少参数数量
- 权重共享:同一卷积核在整个输入上共享权重,平移等变
- 多通道:使用多个卷积核提取不同类型的特征
池化层
池化层降低特征图的空间维度,减少计算量并提供一定平移不变性。
最大池化 (2×2, stride=2) 平均池化
┌───┬───┐ ┌───┬───┐
│ 1 │ 3 │ │ 1 │ 3 │
├───┼───┤ ──→ 3 ├───┼───┤ ──→ 2
│ 2 │ 4 │ │ 2 │ 4 │
└───┴───┘ └───┴───┘
──→ 2.5
图6-2:池化操作。最大池化保留最强响应,平均池化保留背景信息。
| 池化类型 | 特点 | 适用场景 |
|---|---|---|
| Max Pooling | 保留显著特征,抗噪声 | 特征提取层 |
| Average Pooling | 保留背景信息,平滑 | 网络末端 |
| Global Average Pooling | 替代全连接层,减少参数 | 现代网络末端 |
全连接层
全连接层将卷积层提取的特征映射到最终的输出空间,通常位于网络末端。
特征图Flatten 全连接层 输出
┌─┬─┬─┐
├─┼─┼─┤ ──→ [f₁,f₂,...,fₙ] ──→ 特征向量 ──→ 分类结果
└─┴─┴─┘ ↓
[分类器]
CNN经典架构演进
LeNet (1998) - 奠基之作
Input → Conv → Pool → Conv → Pool → FC → FC → Output
32×32 6@28 6@14 16@10 16@5 120 84 10
特点:首个成功的CNN架构,用于手写数字识别
AlexNet (2012) - 深度学习爆发点
Conv → MaxPool → Conv → MaxPool → Conv → Conv → Conv
96 3×3 256 3×3 384 384 256
→ MaxPool → FC(4096) → FC(4096) → FC(1000)
创新:ReLU、Dropout、GPU训练、数据增强
- 首次在ImageNet上大幅降低错误率(15.3% → 26.2%)
- 证明深度卷积网络的有效性
- 开启深度学习在计算机视觉的应用浪潮
VGGNet (2014) - 深度探索
VGG-16架构:
Conv×2 → Pool → Conv×2 → Pool → Conv×3 → Pool
64×64 112 128×128 56 256×256 28
→ Conv×3 → Pool → Conv×3 → Pool → FC×3
512×512 14 512×512 7 4096
核心理念:使用小卷积核(3×3)堆叠替代大卷积核
ResNet (2015) - 残差革命
ResNet通过残差连接(Skip Connection)解决了深层网络的梯度消失问题,使训练超深网络成为可能。
普通块: 残差块:
x ─→ Conv ─→ BN ─→ ReLU ─→ Conv ─→ BN ─→ F(x)
↓
输出 = F(x)
x ─→ Conv ─→ BN ─→ ReLU ─→ Conv ─→ BN ─→ + ─→ ReLU ─→ 输出
│ ↑
└────────────────(恒等映射)───────────────┘
输出 = F(x) + x(残差学习)
图6-3:残差连接。跳跃连接允许梯度直接回传,解决深层网络训练难题。
- 学习残差 $F(x) = H(x) - x$ 比直接学习映射 $H(x)$ 更容易
- 残差连接提供梯度高速公路,可训练152+层网络
- 更深的网络带来更好的性能,打破深度诅咒
EfficientNet (2019) - 效率最优
EfficientNet通过复合缩放(Compound Scaling)同时调整网络的深度、宽度和分辨率,在效率与精度间取得最佳平衡。
| 模型 | 参数量 | ImageNet Top-1 | 特点 |
|---|---|---|---|
| ResNet-50 | 25.6M | 76.0% | 残差连接 |
| EfficientNet-B0 | 5.3M | 77.3% | 复合缩放 |
| EfficientNet-B7 | 66M | 84.3% | SOTA精度 |
CNN应用
- 图像分类:识别图像中的主体类别
- 目标检测:定位并识别图像中的多个物体(YOLO、Faster R-CNN)
- 图像分割:像素级别的分类(语义分割、实例分割)
- 人脸识别:FaceNet、ArcFace等
- 医学影像:病灶检测、器官分割
6.2循环神经网络(RNN)
循环神经网络(Recurrent Neural Network, RNN)专门用于处理序列数据,通过循环连接保持对历史信息的记忆。
RNN基本结构
展开形式:
x₁ ─→ ┌───┐ x₂ ─→ ┌───┐ x₃ ─→ ┌───┐
│ R │──h₁──→ │ R │──h₂──→ │ R │──h₃
│ N │ │ N │ │ N │
└───┘ └───┘ └───┘
↑ ↑ ↑
h₀ h₁ h₂
循环形式:
┌─────────────────┐
│ │
↓ │
xₜ ─→ ┌───┐ ──hₜ──→ 输出 │
│ R │ │
│ N │─────────────┘
└───┘
图6-4:RNN结构。同一网络单元在不同时刻复用,隐藏状态传递历史信息。
隐藏状态更新:$\mathbf{h}_t = \tanh(\mathbf{W}_{hh}\mathbf{h}_{t-1} + \mathbf{W}_{xh}\mathbf{x}_t + \mathbf{b}_h)$
输出计算:$\mathbf{y}_t = \mathbf{W}_{hy}\mathbf{h}_t + \mathbf{b}_y$
LSTM:长短期记忆网络
LSTM通过门控机制解决RNN的长期依赖问题,选择性记忆和遗忘信息。
LSTM单元结构:
输入xₜ 输出hₜ
│ ↑
↓ │
┌───────────────────────────────┐
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │遗忘门│ │输入门│ │输出门│ │
│ │ f │ │ i │ │ o │ │
│ └──┬──┘ └──┬──┘ └──┬──┘ │
│ │ │ │ │
│ └────┬───┴───┬────┘ │
│ ↓ ↓ │
│ Cₜ₋₁ ──→ ⊙ ──→ + ──→ Cₜ ─┤──→ 细胞状态
│ (旧记忆) ↑ ↑ │
│ (遗忘) (新记忆) │
└───────────────────────────────┘
门控计算:
fₜ = σ(Wf·[hₜ₋₁, xₜ] + bf) ← 决定遗忘多少旧信息
iₜ = σ(Wi·[hₜ₋₁, xₜ] + bi) ← 决定添加多少新信息
oₜ = σ(Wo·[hₜ₋₁, xₜ] + bo) ← 决定输出多少信息
图6-5:LSTM单元结构。遗忘门、输入门、输出门协同控制信息流。
- 遗忘门:决定从细胞状态中丢弃什么信息
- 输入门:决定向细胞状态添加什么新信息
- 细胞状态:长期记忆的载体,贯穿整个序列
- 输出门:决定输出什么信息
GRU:门控循环单元
GRU是LSTM的简化版本,合并细胞状态和隐藏状态,只有两个门控,参数更少。
GRU单元结构:
xₜ ─→ ┌──────────────────┐ ──→ hₜ
│ ┌────┐ ┌────┐ │
│ │更新门│ │重置门│ │
│ │ z │ │ r │ │
│ └──┬─┘ └──┬─┘ │
│ │ │ │
│ └───┬──┘ │
│ ↓ │
│ hₜ₋₁ ─→ ⊙ ──→ h̃ ─→ + ─→ hₜ
│ (重置) (候选) ↑
│ (更新)
└──────────────────┘
| 特性 | LSTM | GRU |
|---|---|---|
| 门数量 | 3个(遗忘、输入、输出) | 2个(更新、重置) |
| 状态 | 细胞状态 + 隐藏状态 | 仅隐藏状态 |
| 参数量 | 较多 | 较少(约75%) |
| 训练速度 | 较慢 | 较快 |
| 性能 | 数据充足时略优 | 小数据集表现好 |
RNN应用
- 文本生成:语言模型、自动补全、诗歌生成
- 机器翻译:Seq2Seq模型、注意力机制
- 语音识别:将音频序列转为文本
- 时间序列预测:股价预测、天气预报
- 情感分析:分析文本情感倾向
- 难以并行化,训练速度慢
- 长期依赖问题(虽被LSTM缓解)
- 已被Transformer在多数NLP任务中超越
6.3Transformer架构 ⭐
Transformer是2017年Google提出的革命性架构,完全基于注意力机制,摒弃了循环和卷积,成为现代NLP和视觉任务的主流选择。
- 并行计算:不像RNN需要顺序处理,可完全并行
- 长距离依赖:注意力直接连接任意位置的token
- 可扩展性:支持大规模预训练(GPT、BERT)
自注意力机制(Self-Attention)
自注意力让模型关注输入序列的不同部分,计算每对token之间的关联强度。
自注意力计算流程:
输入 X 输出
[我] ──→ Wq ──→ q₁ ─┐
[爱] ──→ Wq ──→ q₂ ─┼──→ 注意力分数 ──→ 加权求和 ──→ 新表示
[AI] ──→ Wq ──→ q₃ ─┘ ↑
│
[我] ──→ Wk ──→ k₁ ─┐ │
[爱] ──→ Wk ──→ k₂ ─┼───────┘ (q·k计算相似度)
[AI] ──→ Wk ──→ k₃ ─┘
[我] ──→ Wv ──→ v₁ ─┐
[爱] ──→ Wv ──→ v₂ ─┼──→ 用于加权求和的值向量
[AI] ──→ Wv ──→ v₃ ─┘
图6-6:自注意力机制。每个输入生成Query、Key、Value,通过Q-K相似度加权V得到输出。
$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$
其中:$Q$为查询矩阵,$K$为键矩阵,$V$为值矩阵,$d_k$为键向量维度
注意力可视化
注意力权重矩阵(热力图):
我 爱 AI 技术
我 0.4 0.3 0.2 0.1 "我"关注自身和"爱"
爱 0.2 0.4 0.2 0.2 "爱"连接"我"和"AI"
AI 0.1 0.2 0.4 0.3 "AI"关注自身和"技术"
技术 0.1 0.1 0.3 0.5 "技术"最强自关注
■ 深色=高权重 □ 浅色=低权重
图6-7:注意力权重可视化。模型学习到了词语间的语义关联。
多头注意力(Multi-Head Attention)
多头注意力将注意力计算分解为多个子空间,让模型同时关注不同方面的信息。
多头注意力结构:
X ─→ 线性投影 ─┬→ Head1 ─┐
├→ Head2 ─┤
├→ Head3 ─┼──→ 拼接 ──→ 线性变换 ──→ 输出
├→ Head4 ─┤ ↑
└→ Head8 ─┘ │
(捕获不同子空间关系)
例如:
Head1:关注句法关系(主谓宾)
Head2:关注语义关系(同义词)
Head3:关注位置关系(相邻词)
Head4:关注共指关系(指代消解)
图6-8:多头注意力。不同头学习不同类型的关系,增强表达能力。
$\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O$
其中 $\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)$
位置编码(Positional Encoding)
由于注意力机制本身不具备位置信息,需要通过位置编码注入序列位置信息。
位置编码可视化:
维度
↑ ∿∿∿∿∿ ← 高维:高频波动
│ ∿∿∿∿∿∿
│ ∿∿∿∿∿∿∿
│∿∿∿∿∿∿∿∿ ← 低维:低频波动
└──────────→ 位置
1 5 10 15 20
每个位置获得唯一编码,模型可区分"我 爱 AI"和"AI 爱 我"
$PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}})$
$PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}})$
完整Transformer架构
Transformer整体结构:
┌─────────────────────────────────────────────────────┐
│ 编 码 器 (Encoder) │
│ ┌───────────────────────────────────────────────┐ │
│ │ 输入嵌入 + 位置编码 │ │
│ └───────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────┐ │
│ │ ┌─────────┐ ┌───────┐ ┌─────────┐ │ │
│ │ │多头注意力│──→│Add&Norm│──→│前馈网络 │──→ │ │
│ │ │ (Masked)│ │ │ │ │ │ │
│ │ └─────────┘ └───────┘ └─────────┘ │ │
│ │ ↓ ↓ ↓ │ │
│ │ (残差连接 + Layer Norm) │ │
│ └───────────────────────────────────────────────┘ │
│ ↓ (重复N层) │
│ ┌───────────────────────────────────────────────┐ │
│ │ 编码器输出 │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 解 码 器 (Decoder) │
│ ┌───────────────────────────────────────────────┐ │
│ │ 输出嵌入 + 位置编码 │ │
│ └───────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────┐ │
│ │ 掩码多头注意力(自回归,只看前面) │ │
│ └───────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────┐ │
│ │ 交叉注意力(Q来自解码器,K/V来自编码器) │ │
│ └───────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────┐ │
│ │ 前馈网络 → Add&Norm │ │
│ └───────────────────────────────────────────────┘ │
│ ↓ (重复N层) │
│ ┌───────────────────────────────────────────────┐ │
│ │ 线性变换 + Softmax │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
图6-9:完整Transformer架构。编码器处理输入,解码器自回归生成输出。
经典模型架构对比
BERT(Encoder-only)
BERT架构:
[CLS] 今天 [MASK] 很好 [SEP] → 编码器 × 12/24层 → 输出表示
↓
掩码词预测
下一句预测
特点:
• 仅使用Transformer编码器
• 双向上下文(看左右)
• 预训练任务:MLM + NSP
- MLM(掩码语言模型):随机掩码15%的token进行预测
- NSP(下一句预测):判断两句是否连续
- 双向编码:同时利用左右上下文信息
GPT系列(Decoder-only)
GPT架构演进:
GPT-1 (2018): GPT-2 (2019): GPT-3 (2020): GPT-4 (2023):
117M参数 1.5B参数 175B参数 ~1.8T参数
12层解码器 48层解码器 96层解码器 MoE架构
无监督预训练 多任务学习 上下文学习 多模态
生成过程:
"今天" → [解码器] → "天气" → [解码器] → "很好" → ...
- 自回归生成:逐词生成,每次只看前文
- 大规模预训练:在大规模文本上学习语言模型
- 上下文学习:无需微调,通过提示完成任务
T5(Encoder-Decoder)
T5(Text-to-Text Transfer Transformer):
统一所有NLP任务为文本到文本格式:
翻译: "translate English to German: I am happy" → "Ich bin glücklich"
分类: "cola sentence: The movie is good" → "acceptable"
问答: "question: Who wrote Hamlet? context: ..." → "Shakespeare"
摘要: "summarize: Long article text..." → "Summary text"
架构: 完整的Encoder-Decoder结构
ViT(Vision Transformer)
Vision Transformer:
图像输入 Patch嵌入 Transformer编码器
┌────────┐
│ │ 分割 ┌───┬───┬───┐ ┌────────────────┐
│ 图片 │──→ 16×16 ──→│P1 │P2 │P3 │──→ │ 编码器 × 12层 │──→ 分类
│ │ patches ├───┼───┼───┤ └────────────────┘
└────────┘ │...│ │PN│ ↑
└───┴───┴───┘ [CLS] token
+ 位置编码
图6-10:ViT架构。将图像切分为patch序列,用Transformer处理视觉任务。
经典模型对比总结
| 模型 | 架构 | 预训练任务 | 主要应用 |
|---|---|---|---|
| BERT | Encoder-only | MLM + NSP | 理解任务(分类、NER、问答) |
| GPT系列 | Decoder-only | 自回归LM | 生成任务(文本生成、对话) |
| T5 | Encoder-Decoder | Span Corruption | 翻译、摘要、多任务 |
| ViT | Encoder-only | 图像分类 | 计算机视觉 |
| BART | Encoder-Decoder | 去噪自编码 | 文本生成、理解 |
- Encoder-only(BERT):适合理解任务,需要双向上下文
- Decoder-only(GPT):适合生成任务,自回归采样
- Encoder-Decoder(T5):适合序列转换任务(翻译、摘要)
本章小结
- CNN:卷积层提取空间特征,池化降维,经典架构从LeNet演进到EfficientNet
- RNN/LSTM/GRU:处理序列数据,门控机制解决长期依赖,但难以并行
- Transformer:自注意力实现全局依赖,多头捕获多维度关系,位置编码注入位置信息
- 经典模型:BERT(理解)、GPT(生成)、T5(转换)、ViT(视觉),各具特色
- 架构选择:根据任务类型选择合适的架构范式