卷积神经网络

6 minIntermediate2026/6/15

CNN原理、卷积/池化操作、经典架构LeNet/AlexNet/VGG/ResNet详解。

1. 卷积操作

1.1 二维卷积

输入 XRH×W\mathbf{X} \in \mathbb{R}^{H \times W},卷积核 KRkh×kw\mathbf{K} \in \mathbb{R}^{k_h \times k_w}

(XK)[i,j]=m=0kh1n=0kw1X[i+m,j+n]K[m,n](\mathbf{X} * \mathbf{K})[i,j] = \sum_{m=0}^{k_h-1}\sum_{n=0}^{k_w-1} \mathbf{X}[i+m, j+n] \cdot \mathbf{K}[m,n]

1.2 输出尺寸计算

Hout=Hin+2PKS+1H_{out} = \left\lfloor \frac{H_{in} + 2P - K}{S} \right\rfloor + 1

参数说明
HinH_{in}输入高度
KK卷积核大小
PP填充(Padding)
SS步幅(Stride)

1.3 卷积

说明输出尺寸
标准卷积普通卷积缩小
Same Padding零填充保持尺寸不变
1×1卷积通道混合/降维不变
空洞卷积扩大感受野可变
深度可分离卷积逐通道+逐点缩小
转置卷积上采样放大

深度可分离卷积参数量对比:

标准:Cin×Cout×K2\text{标准}: C_{in} \times C_{out} \times K^2 分离:Cin×K2+Cin×Cout\text{分离}: C_{in} \times K^2 + C_{in} \times C_{out}

参数减少比例:1Cout+1K2\frac{1}{C_{out}} + \frac{1}{K^2}

2. 池化操作

2.1 池化

操作作用
最大池化取窗口内最大值保留最显著特征
平均池化取窗口内平均值保留整体信息
全局平均池化整个特征取平均替代全连接层

2.2 池化作用

  • 降维:减少特征尺寸和计算量
  • 平移不变性:小幅位移不影响输出
  • 防止过拟合:减少参数数量

3. 经典架构

3.1 LeNet-5(1998)

Input(32×32×1) → Conv(5×5,6) → Pool(2×2) → Conv(5×5,16) → Pool(2×2)
→ FC(120) → FC(84) → FC(10)
  • 首个成功的CNN架构
  • 应用于手写数字识别

3.2 AlexNet(2012)

Input(227×227×3) → Conv(11×11,96,s=4) → Conv(5×5,256) → Conv(3×3,384)
→ Conv(3×3,384) → Conv(3×3,256) → Pool → FC(4096) → FC(4096) → FC(1000)

创新点

  • ReLU激活函数(替代Sigmoid)
  • Dropout正则化
  • GPU并行训练
  • 数据增强
  • Local Response Normalization

3.3 VGGNet(2014)

核心设计原则:全部使用3×3小卷积核

VGG-16:
Conv3-64 ×2 → Pool → Conv3-128 ×2 → Pool → Conv3-256 ×3 → Pool
→ Conv3-512 ×3 → Pool → Conv3-512 ×3 → Pool → FC-4096 → FC-4096 → FC-1000

3×3卷积核的优势

  • 两个3×3卷积 = 一个5×5感受野,参数更少
  • 三个3×3卷积 = 一个7×7感受野
  • 更多非线性变换

参数量:1.38亿(主要在全连接层)

3.4 ResNet(2015)

核心创新:残差连接(Skip Connection)

y=F(x)+x\mathbf{y} = \mathcal{F}(\mathbf{x}) + \mathbf{x}

网络只需学习残差 F(x)=yx\mathcal{F}(\mathbf{x}) = \mathbf{y} - \mathbf{x}

graph LR
    X["输入 x"] --> Conv["Conv - BN - ReLU - Conv - BN"]
    X -->|"恒等映射 skip connection"| Add["+"]
    Conv --> Add
    Add --> ReLU["ReLU"]
    ReLU --> Out["输出"]

为什么有效

  • 恒等映射容易学习:F(x)=0\mathcal{F}(\mathbf{x}) = 0
  • 梯度可以直接回传:yx=Fx+1\frac{\partial \mathbf{y}}{\partial \mathbf{x}} = \frac{\partial \mathcal{F}}{\partial \mathbf{x}} + 1
  • 解决深层网络退化问题

ResNet变体

模型层数Top-5错误率
ResNet-181810.52%
ResNet-34348.58%
ResNet-50506.71%
ResNet-1011015.69%
ResNet-1521525.13%

3.5 架构演进总结

架构年份核心创新参数量Top-5
LeNet1998开创CNN60K
AlexNet2012ReLU+GPU61M16.4%
VGG2014小卷积核138M7.3%
GoogLeNet2014Inception模块7M6.7%
ResNet2015残差连接26M3.6%
DenseNet2017密集连接8M3.5%
EfficientNet2019复合缩放5M~66M2.9%
ConvNeXt2022现代化CNN28M~350M2.3%