四.卷积神经网络基础
1.为什么要“深度”学习
1.1全连接网络问题
全连接网络:链接权过多,算的慢,难收敛,同时可能进入局部 极小值,也容易产生过拟合问题。
e.g. 输入为1000 × 1000图像,隐含层有1M个节点,则输入->隐 含层间有1 × 1012数量级参数。
解决算的慢问题:减少权值连接,每一个节点只连到上一层的少数神经元,即局部连接网络。
解决难收敛、算的慢问题:权值过多极易产生过拟合。
解决思路:信息分层处理,每一层在上层提取特征的基 础上获取进行再处理,得到更高级别的特征。
1.2深度学习平台简介
1.3PYTORCH简介
- PyTorch是一个Python的深度学习库。它最初由Facebook人工智能研 究小组开发,而优步的Pyro软件则用于概率编程。
- 最初,PyTorch由Hugh Perkins开发,作为基于Torch框架的LusJIT的 Python包装器。PyTorch在Python中重新设计和实现Torch,同时为 后端代码共享相同的核心C库。
- 除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了 PyTorch。
- 到目前,据统计已有80%的研究采用PyTorch,包括Google。
PyTorch 和TensorFlow2 的对比
1.4PyTorch基本使用
基本概念:
- 使用 tensor 表示数据
- 使用 Dataset、DataLoader 读取样本数据和标签
- 使用变量 (Variable) 存储神经网络权值等参数
- 使用计算图 (computational graph) 来表示计算任务
- 在代码运行过程中同时执行计算图
简单示例:
构建简单的计算图,每个节点将零个或多个tensor作为输入,产生一个 tensor作为输出。PyTorch中,所见即为所得,tensor的使用和numpy中的多 维数组类似:
2.卷积神经网络基础
2.1进化史
2.2基本概念
特征提取:
注意,图像卷积时,根据定义,需要首先把卷积核上下左右转置。此处 卷积核(黄色)是对称的,所以忽视。
填充(Padding):在矩阵的边界上填充一些值,以 增加矩阵的大小,通常用0或者复制边界像素来进行填充。
步长(Stride):如上图步长为2。
多通道卷积:如RGB。
池化思想:使用局部统计特征,如均值或最大值。解 决特征过多问题。
卷积神经网络结构:
- 构成:由多个卷积层和下采样层构成,后面可连 接全连接网络
- 卷积层:𝑘个滤波器
- 下采样层:采用mean或max
- 后面:连着全连接网络
学习算法:
2.3误差反向传播
经典BP算法:
如果当前是输出层:,隐含层(按从后向前顺序更新):,然后更新:,
卷积NN的BP算法:下采样层
如果当前是卷积层,下一层为下采样层,误差如何从下采样层回传 假设为2*2核平均池化。
卷积NN的BP算法:卷积层+卷积层
卷积NN的BP算法:卷积层+全连接层
3.LeNet-5网络
3.1网络介绍
网络结构:
3.2结构详解
C1层:
- 6个Feature map构成
- 每个神经元对输入进行5*5卷积
- 每个神经元对应5*5+1个参数,共6个feature map, 28*28个神经元,因此共有 (5*5+1)*6*(28*28)=122,304连接
S2层:
C3层:
S4层:与S2层工作相同
C5层:
- 120个神经元
- 每个神经元同样对输入进行5*5卷积,与S4全连接
- 总连接数(5*5*16+1)*120=48120
F6层:
- 84个神经元
- 与C5全连接
- 总连接数(120+1)*84=10164
输出层:
- 由欧式径向基函数单元构成
- 每类一个单元
- 输出RBF单元计算输入向量和参数向量之间的欧式距离
4.基本卷积神经网络
4.1AlexNet
网络结构:
网络说明:
- 网络一共有8层可学习层——5层卷积层和3层全连接层
- 改进:池化层均采用最大池化;选用ReLU作为非线性环节激活函数;网络规模扩大,参数数量接近6000万;出现“多个卷积层+一个池化层”的结构
- 普遍规律:随网络深入,宽、高衰减,通道数增加
改进:输入样本(最简单、通用的图像数据变形的方式)
- 从原始图像(256,256)中,随机的crop出 一些图像(224,224)。【平移变换,crop 】
- 水平翻转图像。【反射变换,flip】
- 给图像增加一些随机的光照。【光照、彩 色变换,color jittering】
改进:激活函数
- 采用ReLU替代 Tan Sigmoid
- 用于卷积层与全连接层之后
改进:Dropout(在每个全连接层后面使用一个 Dropout 层,以概率 p 随机关闭激活函数)
改进:双GPU策略(AlexNet使用两块GTX580显卡进行训练,两块显卡只需要在特定的层进行通信)
4.2VGG-16
网络结构:
网络说明:
- 改进:网络规模进一步增大,参数数量约为1.38亿;由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
- 普遍规律 -随网络深入,高和宽衰减,通道数增多。
4.3残差网络
非残差网络的缺陷:
残差网络的优势:
残差块:
残差网络:
5.附录:常用数据集
5.1MNIST
MNIST数据集主要由一些手 写数字的图片和相应的标签组成,图片一共有 10 类,分别对应从 0~9。
原始的 MNIST 数据库一共包含下面 4 个文件。
MNIST数据集是由0〜9手写数字图片和数字标签所组成的,由60000个训练样本和10000个测试样 本组成,每个样本都是一张28 * 28像素的灰度手写数字图片。
5.2CIFAR-10
CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每 个类有6000个图像。有50000个训练图像和10000个测试图像。
数据集分为五个训练批次和一个测试批次,每个批次有10000 个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。
5.3PASCAL VOC
PASCAL VOC数据集一共分成20类:
- person
- bird, cat, cow, dog, horse, sheep
- aeroplane, bicycle, boat, bus, car, motorbike, train
- bottle, chair, dining table, potted plant, sofa, tv/monitor
5.4MS COCO
提供的标注类别有80 类,有超过33 万张图片,其中20 万张有 标注,整个数据集中个体的数目超过150 万个。
- 人:1类
- 交通工具:8类,自行车,汽车等
- 公路常见:5类,信号灯,停车标志等
- 动物:10类,猫狗等 携带物品:5类,背包,雨伞等
- 运动器材:10类,飞盘,滑雪板,网球拍等。
- 厨房餐具:7类,瓶子,勺子等
- 水果及食品:10类 家庭用品:7类,椅子、床,电视等
- 家庭常见物品:17类,笔记本,鼠标,遥控器等
5.5ImageNet与ILSVRC
ImageNet数据集:
- 始于2009年,李飞飞与Google的合作: “ImageNet: A Large-Scale Hierarchical Image Database”
- 总图像数据:14,197,122
- 总类别数:21841
- 带有标记框的图像数:1,034,908
ISLVRC 2012子数据集:
- 训练集:1,281,167张图片+标签
- 类别数:1,000
- 验证集:50,000张图片+标签
- 测试集:100,000张图片