神经网络与深度学习课程总结:卷积神经网络基础
📚 课程全景概览
课程主题:哈尔滨工业大学《神经网络与深度学习》第五讲
核心内容:CNN基础理论、经典网络架构、数据集应用实践
技术亮点:LeNet-5手写实现、AlexNet双GPU策略、ResNet残差思想
适合读者:CV方向研究生/算法工程师/深度学习爱好者
第一部分:深度学习的必要性
1.1 全连接网络的致命缺陷
问题类型 | 具体表现 | 数学量化 |
---|---|---|
参数爆炸 | 输入1000×1000图像,隐含层1M节点时 | 参数量级达 1 0 12 10^{12} 1012 |
计算效率低下 | 权值矩阵过大导致GPU显存溢出 | 单层计算复杂度 O ( n 2 ) O(n^2) O(n2) |
梯度消失 | Sigmoid激活函数导致深层网络梯度指数衰减 | ∏ i = 1 L σ ′ ( z i ) w i \prod_{i=1}^L \sigma'(z_i)w_i ∏i=1Lσ′(zi)wi |
过拟合风险 | 高维空间中模型复杂度过高 | VC维理论证明 |
1.2 局部连接与参数共享
# 全连接 vs 局部连接对比
class FullyConnected(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(1000*1000, 1000000) # 1e12参数
class ConvNet(nn.Module):
def __init__(self):
super().__init__()
self.conv = nn.Conv2d(3, 64, kernel_size=3) # 3x3x3x64=1,728参数
第二部分:CNN 核心组件详解
2.1 卷积操作的数学本质
离散卷积公式
(
f
∗
g
)
(
x
,
y
)
=
∑
u
=
−
k
k
∑
v
=
−
k
k
f
(
x
−
u
,
y
−
v
)
⋅
g
(
u
,
v
)
(f * g)(x, y) = \sum_{u=-k}^{k} \sum_{v=-k}^{k} f(x - u, y - v) \cdot g(u, v)
(f∗g)(x,y)=u=−k∑kv=−k∑kf(x−u,y−v)⋅g(u,v)
- f:输入特征图
- g:卷积核(需翻转后计算相关操作)
- 输出尺寸:
N o u t = ⌊ N i n + 2 p − k s ⌋ + 1 N_{out} = \left\lfloor \frac{N_{in} + 2p - k}{s} \right\rfloor + 1 Nout=⌊sNin+2p−k⌋+1
多通道卷积
- 输入:6x6x3(RGB三通道)
- 卷积核:3x3x3(每个通道独立卷积后求和)
- 输出:4x4x1(单通道特征图)
2.2 池化层的降维魔法
池化类型 | 计算公式 | 特点 |
---|---|---|
Max Pooling | ( a_{pool} = \max(a_{ij}) ) | 保留纹理特征,抑制噪声 |
Average Pooling | ( a_{pool} = \frac{1}{k^2} \sum a_{ij} ) | 平滑特征,LeNet-5采用此方式 |
2.3 反向传播的梯度计算
卷积层梯度公式
∂ L ∂ w u v l = ∑ x , y δ l ( x , y ) ⋅ a l − 1 ( x + u , y + v ) {\frac{\partial L}{\partial w^l_{uv}} = \sum_{x,y} \delta^l(x, y) \cdot a^{l-1}(x + u, y + v)} ∂wuvl∂L=x,y∑δl(x,y)⋅al−1(x+u,y+v)
- δ ′ \delta' δ′:当前层误差信号
- a l − 1 a^{l-1} al−1:上一层激活值
池化层梯度示例
- 假设2x2最大池化前向输出为 [5, 2; 3, 1]
- 反向传播时梯度分配:
- 梯度矩阵 → [δ, 0; 0, 0](仅最大值位置传递梯度)
第三部分:LeNet-5 手写数字识别实战
3.1 网络结构分解
Input(32x32)
├── Conv1(5x5, 6@28x28) → 122,304连接
├── AvgPool1(2x2) → 6@14x14
├── Conv2(5x5, 16@10x10) → 16,000连接
├── AvgPool2(2x2) → 16@5x5
├── FC1(120) → 48,120参数
├── FC2(84) → 10,164参数
└── Output(10) → RBF分类
3.2 关键参数计算
C1层参数示例:
- 每个神经元参数:5×5权重 + 1偏置 = 26
- 总连接数:26 × 6 × 28×28 = 122,304
现代改进方向:
- 使用ReLU替代Sigmoid
- 增加Padding保持尺寸
- 引入Batch Normalization
第四部分:经典CNN架构演进
4.1 AlexNet:深度学习的黎明
里程碑式创新
- ReLU激活函数:解决梯度消失,加速训练
→ 对比实验证明,ReLU vs Sigmoid训练速度提升6倍 - Dropout正则化:全连接层以0.5概率随机失活
- 多GPU并行:GTX 580双卡训练,互相优化卷积核
- 数据增强:输入图片翻转、水平偏移、光照扰动等
网络结构细节
层类型 | 参数设置 | 输出尺寸 |
---|---|---|
Conv1 | 11×11, stride4, 96 filters | 55×55×96 |
MaxPool1 | 3×3, stride2 | 27×27×96 |
Conv2 | 5×5, pad2, 256 filters | 27×27×256 |
MaxPool2 | 3×3, stride2 | 13×13×256 |
FC Layers | 3层全连接(4096→4096→1000) | 1000维分类 |
4.2 VGG-16:深度统一的典范
结构特点
- 小卷积核:全部使用3×3卷积,堆叠获得大感受野
→ 两个3×3卷积感受野 ≈ 一个5×5卷积(参数减少28%) - 通道增强策略:每次池化后通道数翻倍(64→128→256→512)
- 全连接替代:最后三层FC替换为全局平均池化
参数量分布
Total params: 138 million
- Conv Layers: 14.7M (约11%)
- FC Layers: 123M (约89%)
→ 现代网络通常移除全连接层以降低参数量
4.3 ResNet:跨越深度的鸿沟
残差块设计
class ResidualBlock(nn.Module):
def __init__(self, in_channels):
super().__init__()
self.conv1 = nn.Conv2d(in_channels, in_channels, 3, padding=1)
self.conv2 = nn.Conv2d(in_channels, in_channels, 3, padding=1)
def forward(self, x):
residual = x
x = F.relu(self.conv1(x))
x = self.conv2(x)
x += residual # 跳跃连接
return F.relu(x)
性能对比
网络深度 | 训练误差(Top-1) | 测试误差(Top-5) |
---|---|---|
ResNet-34 | 18.4% | 6.7% |
ResNet-152 | 16.9% | 5.2% |
第五部分:CV领域核心数据集
5.1 数据集全景图
数据集 | 规模 | 任务类型 | 特点 |
---|---|---|---|
MNIST | 70k (28×28) | 手写数字分类 | 入门级,快速验证模型 |
CIFAR-10 | 60k (32×32) | 物体分类 | 小尺寸彩色图像基准 |
PASCAL VOC | 11k | 检测/分割 | 20类,XML标注格式标准化 |
COCO | 330k | 实例分割/关键点检测 | 复杂场景,80类,Mask标注 |
ImageNet | 1.2M | 大规模分类 | 1000类,推动深度学习革命 |
5.2 数据加载示例(PyTorch)
# COCO数据集加载
from torchvision.datasets import CocoDetection
dataset = CocoDetection(
root='path/to/images',
annFile='path/to/annotations.json',
transform=transforms.ToTensor()
)
# 输出示例
print(f"图像总数量:{len(dataset)}")
print(f"标注字段:{dataset.coco.dataset['categories']}")
第六部分:关键问题深度思考
Q1:浅层网络已足够,为什么需要深度模型?
- 理论层面:深层网络具有更强的特征抽象能力(参考:Cover定理)
- 实验证据:ImageNet竞赛中,ResNet-152错误率比AlexNet降低80%
- 生物类比:人类视觉皮层V1→V4的多级处理机制
Q2:如何设计交通监控系统数据集?
- 数据来源:路口摄像头实况流 + 公开数据集(Cityscapes)
- 标注要求:行人/车辆边界框 + 运动轨迹标注
- 增强策略:雨天/雾天模拟、遮挡物合成
- 评估指标:mAP(平均精度)、FPS(检测速度)
附录:学习资源导航
扩展阅读清单
-
经典论文:
- [AlexNet] ImageNet Classification with Deep Convolutional Neural Networks
- [ResNet] Deep Residual Learning for Image Recognition
-
实战代码:
-
在线课程:
- Coursera《Deep Learning Specialization》
- 斯坦福CS231n《卷积神经网络视觉识别》