卷积神经网络(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的深度可分离卷积 | 降低计算成本,适配移动端 |