卷积神经网络(CNN)的设计范式经过多年的发展,形成了一套经典的结构和模块化设计原则。以下是常规CNN的核心设计范式及其背后的逻辑:

层级化特征提取

  • 堆叠卷积层:通过多层的卷积操作逐步提取从简单到复杂的特征(边缘→纹理→物体部件→整体)。
  • 小卷积核:常用3×3或5×5的卷积核(如VGG),减少参数量的同时增加非线性(通过多层叠加等效于大感受野)。
  • 示例:VGGNet通过重复堆叠3×3卷积构建深层网络。

空间下采样与感受野扩大

  • 池化层(Pooling)​:通过最大池化(Max Pooling)或平均池化(Average Pooling)降低特征图分辨率,减少计算量并扩大感受野。
  • 替代方案:现代设计中,步长大于1的卷积(Strided Convolution)常替代池化层(如ResNet)。

维度扩展与压缩

  • 1×1卷积:用于调整通道数(如Inception中的降维,ResNet中的Bottleneck结构),减少计算量并融合跨通道信息。
  • 示例:GoogleNet的Inception模块通过1×1卷积压缩通道数后并联不同尺度的卷积。

残差连接(Residual Learning)​

  • 残差块(Residual Block)​:引入跳跃连接(Skip Connection),允许梯度直接回传,缓解梯度消失问题,支持训练更深的网络(如ResNet)。
  • 变体:DenseNet通过密集连接(Dense Block)进一步复用特征。

模块化设计

  • 重复结构单元:将网络划分为多个重复的模块(如VGG的卷积块、ResNet的残差块),简化设计并提升可扩展性。
  • 多分支结构:并行使用不同大小的卷积核(如Inception的多尺度卷积)或操作(如SENet中的通道注意力)。

正则化与训练优化

  • 批归一化(BatchNorm)​:加速训练收敛,缓解梯度问题(常插入在卷积层后、激活函数前)。
  • Dropout:在全连接层随机丢弃神经元,防止过拟合(现代设计中较少用于卷积层)。
  • 权重初始化:使用He初始化或Xavier初始化适配ReLU等激活函数。

全局信息聚合

  • 全连接层(FC Layers)​:传统CNN末尾用全连接层整合全局特征(但参数量大,易过拟合)。
  • 替代方案:现代设计中常用全局平均池化(Global Average Pooling,如ResNet)替代全连接层,减少参数量并保留空间信息。

轻量化设计

  • 深度可分离卷积(Depthwise Separable Convolution)​:将标准卷积分解为逐通道卷积和1×1卷积,大幅减少计算量(如MobileNet)。
  • 分组卷积(Grouped Convolution)​:将输入通道分组处理(如ResNeXt),提升效率并增加模型容量。

经典设计范式总结表

设计原则典型结构/模块作用
小卷积核堆叠VGG的3×3卷积块减少参数量,等效大感受野
残差连接ResNet的残差块解决梯度消失,训练超深层网络
多尺度融合Inception模块同时捕获不同尺度的特征
通道注意力SENet的SE Block动态调整通道权重,增强重要特征
轻量化卷积MobileNet的深度可分离卷积降低计算成本,适配移动端