神经网络与深度学习第三周学习笔记
平台发布者支持语言易用性大规模训练能力定位PyTorchFacebookPython/C++★★★★优秀学术研究首选TensorFlowGoogle★★★优秀工业部署广泛KerasGooglePython★★★★★一般入门友好百度Python★★★良好中文生态完善MindSpore华为Python★★★良好昇腾硬件适配目前PyTorch因其动态图机制和易用性,已成为学术界的主流选择,约80%的研究
·
一、卷积神经网络(CNN)基础
1.1 为什么需要深度学习
全连接网络存在以下核心缺陷,无法有效处理高维图像数据:
- 参数爆炸:输入1000×1000图像且隐含层有1M节点时,输入到隐含层的参数数量达到10¹²量级
- 计算缓慢:海量参数导致训练和推理速度极慢
- 难以收敛:优化过程容易陷入局部极小值
- 过拟合严重:过多参数容易记住训练数据的噪声,泛化能力差
解决思路:
- 局部连接:每个神经元只与上一层的少数神经元连接
- 分层特征提取:模拟人类视觉系统,从低级特征(边缘、纹理)逐步提取高级特征(物体、场景)
1.2 深度学习平台简介
主流深度学习平台对比:
| 平台 | 发布者 | 支持语言 | 易用性 | 大规模训练能力 | 定位 |
|---|---|---|---|---|---|
| PyTorch | Python/C++ | ★★★★ | 优秀 | 学术研究首选 | |
| TensorFlow | Python/C++/Java | ★★★ | 优秀 | 工业部署广泛 | |
| Keras | Python | ★★★★★ | 一般 | 入门友好 | |
| PaddlePaddle | 百度 | Python | ★★★ | 良好 | 中文生态完善 |
| MindSpore | 华为 | Python | ★★★ | 良好 | 昇腾硬件适配 |
目前PyTorch因其动态图机制和易用性,已成为学术界的主流选择,约80%的研究采用PyTorch。
1.3 CNN核心概念
1.3.1 卷积(Convolution)
卷积是CNN的核心操作,通过滑动卷积核提取局部特征,实现权值共享(同一卷积核在整个特征图上共享参数),大幅减少参数数量。
关键参数:
- 卷积核大小:常用3×3、5×5等,小卷积核堆叠可等效于大卷积核且参数更少
- 填充(Padding):在特征图边界填充0或复制像素,保持输出尺寸不变
- 步长(Stride):卷积核滑动的间隔,步长越大输出尺寸越小
- 多通道卷积:输入为多通道(如RGB)时,每个通道对应一个卷积核,结果相加得到输出通道
1.3.2 池化(Pooling)
池化层用于降维和增加感受野,同时保留主要特征,减少计算量和过拟合风险。
- 平均池化:取窗口内所有值的平均值,保留整体背景信息
- 最大池化:取窗口内的最大值,更常用,能有效保留纹理和边缘信息
1.3.3 误差反向传播
CNN的反向传播与全连接网络类似,但需要针对卷积和池化层做特殊处理:
- 池化层反向传播:
- 平均池化:误差平均分配到前一层对应窗口的所有位置
- 最大池化:误差只回传到前一层窗口中最大值的位置,其余位置为0
- 卷积层反向传播:将卷积核上下左右翻转后,与误差图进行卷积操作,得到前一层的误差
1.4 经典CNN网络
1.4.1 LeNet-5(1998)
- 提出者:Yann LeCun等
- 用途:手写数字识别(MNIST数据集)
- 结构:输入(28×28灰度) → C1(5×5卷积,6通道) → S2(2×2平均池化) → C3(5×5卷积,16通道) → S4(2×2平均池化) → C5(5×5卷积,120通道) → F6(全连接,84神经元) → 输出层(10类,RBF)
- 参数数量:约6万
- 特点:无填充、平均池化、Sigmoid/Tanh激活函数、层数较浅
1.4.2 AlexNet(2012)
- 提出者:Alex Krizhevsky等
- 成就:ILSVRC-2012图像分类冠军,top-5错误率17.0%,标志着深度学习时代的到来
- 结构:5个卷积层 + 3个全连接层
- 参数数量:约6000万
- 核心改进:
- 使用ReLU激活函数,解决Sigmoid的梯度消失问题
- 采用最大池化,提升特征提取能力
- 引入Dropout,减少过拟合
- 使用数据增强(随机裁剪、水平翻转、颜色抖动)
- 双GPU并行训练
1.4.3 VGG-16(2014)
- 提出者:牛津大学Visual Geometry Group
- 结构:13个卷积层 + 3个全连接层
- 参数数量:约1.38亿
- 核心特点:
- 全部使用3×3卷积核,多个小卷积核堆叠等效于大卷积核,同时减少参数
- 结构极其规整:"2-3个卷积层 + 1个池化层"的重复堆叠
- 特征图尺寸减半时,通道数翻倍,保持每层计算复杂度相近
1.4.4 残差网络(ResNet,2015)
- 解决问题:深层网络的梯度消失问题(普通网络层数增加时,训练误差反而上升)
- 核心创新:残差块(Residual Block),通过**捷径连接(Shortcut Connection)**将输入直接加到输出上
- 残差映射:( H(x) = F(x) + x ),其中( F(x) )是网络需要学习的残差
- 当( F(x)=0 )时,网络退化为恒等映射,保证深层网络至少不劣于浅层网络
- 常用版本:ResNet-18、ResNet-34、ResNet-50、ResNet-101、ResNet-152
- 优势:可以训练数百层甚至上千层的深度网络,显著提升模型精度
二、深度学习视觉应用
2.1 常用视觉数据集
| 数据集 | 规模 | 图像尺寸 | 类别数 | 主要用途 | 核心特点 |
|---|---|---|---|---|---|
| MNIST | 6万训练/1万测试 | 28×28灰度 | 10(手写数字) | 入门分类任务 | 简单、经典、易训练 |
| Fashion-MNIST | 6万训练/1万测试 | 28×28灰度 | 10(服饰类) | 替代MNIST | 难度略高,更贴近实际应用 |
| CIFAR-10 | 5万训练/1万测试 | 32×32彩色 | 10(飞机、汽车等) | 中等难度分类 | 小尺寸彩色图像 |
| PASCAL VOC2012 | 11540张训练验证 | 可变 | 20(人、动物、交通工具等) | 分类、检测、分割 | 标注质量高,经典基准 |
| MS COCO | 33万+张,20万+标注 | 可变 | 80 | 检测、分割、关键点 | 复杂日常场景,150万+实例,当前最权威基准 |
| ImageNet | 1400万+张 | 可变 | 21841 | 大规模预训练 | 最大的图像分类数据集,ILSVRC竞赛基础 |
2.2 任务评价指标
2.2.1 混淆矩阵
| 预测为正例 | 预测为负例 | |
|---|---|---|
| 真实为正例 | TP(真正例) | FN(假负例) |
| 真实为负例 | FP(假正例) | TN(真负例) |
2.2.2 核心指标
- 精确率(Precision, P):( P = \frac{TP}{TP+FP} ),表示预测为正例的样本中实际为正例的比例,衡量模型的"挑剔程度"
- 召回率(Recall, R):( R = \frac{TP}{TP+FN} ),表示实际为正例的样本中被正确预测的比例,衡量模型的"查全能力"
- 准确率(Accuracy):( Acc = \frac{TP+TN}{TP+FP+FN+TN} ),表示所有样本中被正确预测的比例
- P-R曲线:以召回率为横轴,精确率为纵轴绘制的曲线,反映不同阈值下模型的性能
- 平均精度(AP):P-R曲线下的面积,综合衡量模型在所有召回率下的精确率
- 平均精度均值(mAP):所有类别AP的平均值,是目标检测任务的核心评价指标
2.3 主要视觉任务简介
2.3.1 目标检测
- 任务定义:在图像中找到所有目标物体的位置(边界框)并识别其类别
- 发展历程:R-CNN → SPP-Net → Fast R-CNN → Faster R-CNN → YOLO系列
- 代表方法:YOLO(You Only Look Once),将目标检测转化为回归问题,速度快,适合实时应用
2.3.2 语义分割
- 任务定义:对图像中的每个像素进行分类,标注其所属的物体类别
- 经典方法:
- FCN(全卷积网络):第一个端到端的语义分割网络,将全连接层替换为卷积层
- DeepLab v3:当前广泛使用的语义分割方法,引入空洞卷积和空间金字塔池化,提升分割精度
更多推荐





所有评论(0)