第六章

核心网络架构

深入理解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训练、数据增强
            
AlexNet突破性贡献
  • 首次在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)堆叠替代大卷积核
            
设计哲学:两个3×3卷积的 receptive field 等于一个5×5卷积,但参数更少(18 vs 25),且增加了非线性。

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:残差连接。跳跃连接允许梯度直接回传,解决深层网络训练难题。

ResNet核心洞察
  • 学习残差 $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结构。同一网络单元在不同时刻复用,隐藏状态传递历史信息。

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单元结构。遗忘门、输入门、输出门协同控制信息流。

LSTM核心组件
  • 遗忘门:决定从细胞状态中丢弃什么信息
  • 输入门:决定向细胞状态添加什么新信息
  • 细胞状态:长期记忆的载体,贯穿整个序列
  • 输出门:决定输出什么信息

GRU:门控循环单元

GRU是LSTM的简化版本,合并细胞状态和隐藏状态,只有两个门控,参数更少。

    GRU单元结构:
    
    xₜ ─→ ┌──────────────────┐ ──→ hₜ
          │  ┌────┐ ┌────┐  │
          │  │更新门│ │重置门│  │
          │  │  z  │ │  r  │  │
          │  └──┬─┘ └──┬─┘  │
          │     │      │    │
          │     └───┬──┘    │
          │         ↓       │
          │   hₜ₋₁ ─→ ⊙ ──→ h̃ ─→ + ─→ hₜ
          │        (重置)  (候选)   ↑
          │                      (更新)
          └──────────────────┘
            
特性 LSTM GRU
门数量 3个(遗忘、输入、输出) 2个(更新、重置)
状态 细胞状态 + 隐藏状态 仅隐藏状态
参数量 较多 较少(约75%)
训练速度 较慢 较快
性能 数据充足时略优 小数据集表现好

RNN应用

主要应用领域
  • 文本生成:语言模型、自动补全、诗歌生成
  • 机器翻译:Seq2Seq模型、注意力机制
  • 语音识别:将音频序列转为文本
  • 时间序列预测:股价预测、天气预报
  • 情感分析:分析文本情感倾向
RNN的局限
  • 难以并行化,训练速度慢
  • 长期依赖问题(虽被LSTM缓解)
  • 已被Transformer在多数NLP任务中超越

6.3Transformer架构 ⭐

Transformer是2017年Google提出的革命性架构,完全基于注意力机制,摒弃了循环和卷积,成为现代NLP和视觉任务的主流选择。

Transformer核心优势
  • 并行计算:不像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
            
BERT核心创新
  • 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架构
    无监督预训练      多任务学习        上下文学习        多模态
    
    生成过程:
    "今天" → [解码器] → "天气" → [解码器] → "很好" → ...
            
GPT特点
  • 自回归生成:逐词生成,每次只看前文
  • 大规模预训练:在大规模文本上学习语言模型
  • 上下文学习:无需微调,通过提示完成任务

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(视觉),各具特色
  • 架构选择:根据任务类型选择合适的架构范式