本文主要对屈老师的《神经网络与深度学习》的课堂内容进行总结。
目录
1.深度学习介绍
1.1 全连接网络问题
- 全连接网络:链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合问题
- 如:输入为1000 × 1000图像,隐含层有1M个节点,则输入->隐 含层间有1 × 1012数量级参数
- 1.解决算的慢问题:减少权值连接,每一个节点只连到上一层的少 数神经元, 即局部连接网络
2.解决难收敛、算的慢问题:权值过多极易产生过拟合。如何消除?
3.回想人类解决思路:信息分层处理,每一层在上层提取特征的基 础上获取进行再处理,得到更高级别的特征。
1.2 深度学习平台简介
库名 | 发布者 | 支持语言 | 支持系统 |
TensorFlow |
| Python/C++/Java/Go |
Linux/Mac OS/Android/iOS |
Caffe |
UC Berkeley | Python/C++/Matlab |
Linux/Mac OS/Windows |
JAX |
|
Python |
Linux/Windows |
MXNet | Amazon/DMLC (分布式机器学习社区) | Python/C++/Matlab/ Julia/Go/R/Scala | Linux/Mac OS/ Windows/Android/iOS |
Torch/PyTorch |
|
C/Python/.. | Linux/Mac OS/ Windows/Android/iOS |
PaddlePaddle | 百度 | Python | Linux/Windows |
MMdetection | 商汤/港中文 | Python | Linux/Windows |
1.3 Pytorch介绍
PyTorch是一个Python的深度学习库。 它最初由Facebook人工智能研 究小组开发 ,而优步的Pyro软件则用于概率编程。最初, PyTorch由Hugh Perkins开发,作为基于Torch框架LusJIT Python包装器。 PyTorch在Python中重新设计和实现Torch, 同时为后端代码共享相同的核心C库。
Facebook、Twitter 、GMU和Salesforce等机构都采用了 PyTorch。目前 ,据统计已有80%的研究采用PyTorch ,包括Google。
PyTorch 和TensorFlow2 的对比
PyTorch | TensorFlow2 |
上手简单、学习速度快 | 上手难 |
部署能力稍弱 | 部署方便、稳定 |
支持动态图 | 支持动态图 |
函数简洁、运用灵活 | 函数封装复杂 |
1.4 Pytorch基本使用
1.4.1 基本概念
张量(Tensor):是一个物理量,对高维 (维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为: 一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量 …
计算图:用“结点”(nodes)和“线” (edges)的有向图来描述数学计算的图像。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入的起点/输出的终点,或者是读取/写入持久变量的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。
- 1.使用 tensor 表示数据
- 2.使用 Dataset、DataLoader 读取样本数据和标签
- 3. 使用变量 (Variable) 存储神经网络权值等参数
- 4.使用计算图 (computational graph) 来表示计算任务
- 5.在代码运行过程中同时执行计算图
2 卷积神经网络基础
2.1基本概念
填充(Padding), 也就是在矩阵的边界上填充一些值, 以 增加矩阵的大小, 通常用0或者复制边界像素来进行填充。
步长(Stride)是指卷积核在每一次卷积操作中滑动的距离。步长的大小可以影响输出数据的大小,也可以影响特征提取能力和计算复杂度。当步长增大时,输出数据的尺寸会减小,特征提取能力会变弱,但计算速度会加快。
多通道卷积:如RGB,也称为深度或特征图数量,是指卷积神经网络中每一层输出的特征图数量。通道数的大小直接影响了卷积神经网络的特征提取能力和计算复杂度。通过增加通道数,可以增强卷积神经网络的特征提取能力,但也会增加计算复杂度。
2.2 池化
思想:使用局部统计特征,如均值或最大值。解决特征过多问题
构成:由多个卷积层和下采样层构成, 后面可连接全连接网络
卷积层: 滤波器
下采样层:采用mean或max
后面:连着全连接网络
2.3 误差反向传播
经典BP算法
卷积NN的BP算法:下采样层
局部误差如何从卷积层传到下采样层
卷积NN的BP算法:卷积层+卷积层
卷积NN的BP算法:卷积层+全连接层
3 LeNet-5网络
3.1 网络介绍
LeNet-5是一个经典的深度卷积神经网络,由Yann LeCun在1998年提出,旨在解决手写数字识别问题,被认为是卷积神经网络的开创性工作之一。该网络是第一个被广泛应用于数字图像识别的神经网络之一,也是深度学习领域的里程碑之一。
- 与现在网络的区别
- -卷积时不进行填充(padding)
- -池化层选用平均池化而非最大池化
- -选用Sigmoid或tanh而非ReLU作为非线性环节激活函数
- -层数较浅,参数数量小(约为6万)
4 基本卷积神经网络
4.1 AlexNet
AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。当时,AlexNet在 ImageNet 大规模视觉识别竞赛中取得了优异的成绩,把深度学习模型在比赛中的正确率提升到一个前所未有的高度。AlexNet输入为RGB三通道的224 × 224 × 3大小的图像(也可填充为227 × 227 × 3 )。AlexNet 共包含5 个卷积层(包含3个池化)和 3 个全连接层。其中,每个卷积层都包含卷积核、偏置项、ReLU激活函数和局部响应归一化(LRN)模块。第1、2、5个卷积层后面都跟着一个最大池化层,后三个层为全连接层。最终输出层为softmax,将网络输出转化为概率值,用于预测图像的类别。
改进
-池化层均采用最大池化
-选用ReLU作为非线性环节激活函数
-网络规模扩大,参数数量接近6000万
-出现“多个卷积层+一个池化层”的结构
普遍规律:随网络深入,宽、高衰减,通道数增加
4.2 VGG-16
VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。
网络说明
改进
-网络规模进一步增大,参数数量约为1.38亿
-由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
普遍规律
-随网络深入,高和宽衰减,通道数增多。
4.3 残差网络
普通网络的基准模型受VGG网络的启发。卷积层主要有3×3的过滤器,并遵循两个简 单的设计规则:①对输出特征图的尺寸相同的 各层,都有相同数量的过滤器; ②如果特征 图的大小减半,那么过滤器的数量就增加一 倍,以保证每一层的时间复杂度相同。ResNet模型比VGG网络更少的过滤器和更低的 复杂性。 ResNet具有34层的权重层,有36亿 FLOPs,只是VGG-19(19.6亿FLOPs)的18%。
5 常用数据集
5.1 MINIST
MNIST 数据集主要由一些手 写数字的图片和相应的标签组成, 图片一共有 10 类,分别对应从 0~9手写数字图片和数字标签所组成的,由60000个训练样本和10000个测试样
5.2 Fashion-MNIST数据集
FashionMNIST 是一个替代 MNIST 手写数字集 的图像数据集。 它是由 Zalando旗下的研究部门提供,涵盖了来自 10 种类别的 共 7 万个不同商品的正面图片。 FashionMNIST 的大小 、格式和训练集/测试集划分与原始的 MNIST 完全一致。60000/10000 的训练测试数据划分,28x28 的灰度图片。你可以直接用它来测试你的机器学习和深度学习 算法性能,且不需要改动任何的代码。
5.3 CIFAR-10数据集
CIFAR- 10数据集由10个类的60000个32x32彩色图像组成,每 个类有6000个图像。有50000个训练图像和10000个测试图像。数据集分为五个训练批次和一个测试批次,每个批次有10000 个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。
5.4 PASCAL VOC数据集
PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning。 VOC的全称是Visual Object Classes。目标分类(识别)、检测、分割最常用的数据集之一。第一届PASCAL VOC举办于2005年, 2012年终止。常用的PASCAL 2012。
一共分成20类:
person
bird, cat, cow, dog, horse, sheep
aeroplane, bicycle, boat, bus, car, motorbike, train
bottle, chair, dining table, potted plant, sofa, tv/monitor
标注格式:里面是图像对应的XML标注信息描述, 每张图像有一个与之对应同名 的描述XML文件, XML前面部分声明图像数据来源,大小等元信息。
5.5 MS COCO数据集
PASCAL的全称是Microsoft Common Objects in Context,起源 于微软于2014年出资标注的Microsoft COCO数据集。数据集以scene understanding为目标, 主要从复杂的日常场景中,包含目标分类(识别)、检测、分割、语义标注等数据集。ImageNet竞赛停办后, COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆。
提供的标注类别有80 类,有超过33 万张图片,其中20 万张有 标注,整个数据集中个体的数目超过150 万个。
- 人: 1类
- 交通工具: 8类,自行车,汽车等
- 公路常见: 5类,信号灯,停车标志等
- 动物: 10类,猫狗等
- 携带物品: 5类,背包,雨伞等
- 运动器材: 10类,飞盘,滑雪板,网球拍等。
- 厨房餐具: 7类,瓶子,勺子等
- 水果及食品: 10类
- 家庭用品: 7类,椅子、床,电视等
- 家庭常见物品: 17类,笔记本,鼠标,遥控器等
5.6 ImageNet数据集
- 始于2009年,李飞飞与Google的合作:
- “ImageNet: A LargeScale Hierarchical Image Database”,
- 总图像数据: 14,197,122, 总类别数: 21841,带有标记框的图像数: 1,034,908
-
ISLVRC 2012子数据集
训练集: 1,281,167张图片+标签
类别数: 1,000
验证集: 50,000张图片+标签
测试集: 100,000张图片
-
仅作交流学习,如有错误,敬请批评指正!