深度学习:算法到实战笔记03——卷积神经网络

深度学习:算法到实战笔记03——卷积神经网络

绪论

1.卷积神经网络的应用

无处不在的卷积神经网络——基本应用
分类
检索
检测
分割
人脸验证
人脸识别
识别遗传病(准确率达91%)
人脸表情识别
图像生成
图像风格转化
自动驾驶

2.传统神经网络VS卷积神经网络

深度学习三部曲

Step1:搭建神经网络结构
Step2:找到一个合适的损失函数(交叉熵损失,均方误差)
Step3:找到一个合适的优化函数,更新参数(反向传播(BP),随机梯度下降(SGD))

损失函数

在这里插入图片描述
在这里插入图片描述
重点:1.损失函数是用来衡量吻合度的
          ~~~~~~~~~           2.可以调整参数/权重W,使得映射的结果和实际类别吻合
          ~~~~~~~~~           3.常用分类损失、常用回归损失(常用于求取值连续的情况)

大致流程:计算损失->优化

全连接网络处理图像问题

参数太多:权重矩阵的参数太多——>过拟合
过度的拟合了训练集中的一些特征导致泛化性差。

卷积网络的解决方式

局部关联,参数共享

相同之处

卷积神经网络沿用了传统神经网络的层级结构。
在这里插入图片描述

基本组成结构

1.卷积

一维卷积

一维卷积经常用在信号处理中,用于计算信号的延迟累积。
在这里插入图片描述
例如
在这里插入图片描述
此处的 f=[f1,f2,f3] 被称为滤波器(filter)或卷积核(convolutional kernel)。
设滤波器f长度为m,它和一个信号序列x=[x1,x2,x3,…]的卷积记为

在这里插入图片描述

卷积是什么?

卷积是对两个实变函数的一种数学操作。

二维卷积

在图像处理中,图像是以二维矩阵的形式输入到神经网络的,因此我们需要二维卷积。

下图所示即二维卷积计算方法:
在这里插入图片描述
得到如下公式:
在这里插入图片描述

卷积中涉及的基本概念

在这里插入图片描述
input:输入,即输入的二维矩阵

在这里插入图片描述
kernel/filter:卷积核/滤波器
weights:权重,卷积核里的每一个值,如:w,x,…

在这里插入图片描述

在这里插入图片描述

图中蓝色边框区域即感受野
receptive field:感受野,卷积核进行一次卷积所对应的输入上的一块区域

stride:步长
以步长为1举例:
在这里插入图片描述
步长为1即下一次感受野区域向左移一步(或一列)
在这里插入图片描述
走到边界后改为向下走一步(即换下一行首列得到对应感受野)
在这里插入图片描述
针对上图,当步长为3时,就会出现大小不匹配的情况,这就需要进行填充
在这里插入图片描述
在这里插入图片描述

padding:填充,一般用0来填充
更多内容:
在这里插入图片描述

在这里插入图片描述
图中紫色边框区域即特征图
activation map 或 feature map:特征图,卷积输出的结果

如果输入二维矩阵的大小为NN,Filter的大小为FF,则输出的特征图的大小为:
(N - F)/ stride + 1(未加padding)

有padding时输出的特征图大小为:
(N + padding * 2 - F)/ stride + 1

depth/channel:深度,特征图的厚度,和filter的个数保持一致(注意:看的是filter的个数,而不是输入的图的维度或者通道数)

output:输出,例如分类任务中输出每个类别的概率

2.池化(Pooling)

池化过程更像是在做缩放的过程
在这里插入图片描述
保留了主要特征的同时减少参数和计算量,防止过拟合,提高模型泛化能力。

一般处于卷积层与卷积层之间,全连接层与全连接层之间。

池化(Pooling)类型:

Max pooling:最大值池化
Average pooling:平均池化
在这里插入图片描述
在分类中,最大值池化更加常用。

3.全连接(Fully Connected Layer)

全连接层/FC layer:
· 两层之间所有神经元都有权重链接
· 通常全连接层在卷积神经网络尾部
· 全连接层参数量通常最大

小结

在这里插入图片描述

卷积神经网络典型结构

1.AlexNet

在这里插入图片描述
Relu的优点:
· 解决了梯度消失问题(在正区间)
· 计算速度特别快,只需要判断输入是否大于0
· 收敛速度远快于sigmoid

DropOut(随机失活):训练时随机关闭部分神经元测试时整合所有神经元。
在这里插入图片描述
在这里插入图片描述

AlexNet分层解析

在这里插入图片描述
可以看出全连接层的参数数量很大

2.ZFNet

网络结构与AlexNet相同

3.VGG

VGG是一个更深网络
深度从ALexNet的8层加深到了16-19层
到今天还是有很多人在用的网络结构
参数量大约是AlexNet的两倍
在这里插入图片描述

4.GoogleNet

在这里插入图片描述
在这里插入图片描述
网络结构:
· 网络包含22个带参数的层(如果考虑pooling层就是27层),独立成块的层总共有约100个;
· 参数量大概是Alexnet的1/12
· 没有FC层

Inception模块

初衷:多卷积核增加特征多样性
在深度上串联
在这里插入图片描述
缺点:计算量大,计算复杂
解决思路:插入11卷积核进行降维
在这里插入图片描述
例如:
在这里插入图片描述
Inception V3 进一步对V2的参数数量进行降低
用小的卷积核替代大的卷积核
在这里插入图片描述
认为5
5的卷积核经过两个33的卷积核卷积,就会得到词汇表输出,和55的卷积核进行一个卷积所对应的感受野的大小是一样的。
在这里插入图片描述
好处:
降低参数量
增加非线性激活函数:数据表征能力更强,训练更快。

在这里插入图片描述
前面Stem部分(stem network):卷积——池化——卷积——卷积——池化

在这里插入图片描述
画框部分是两个辅助分类器:解决由于模型深度过深导致的梯度消失的问题。

5.ResNet

残差学习网络(deep residual learning network)
错误率从6.7%降低到3.57%
深度有152层
在这里插入图片描述在这里插入图片描述
通过给导数+1解决了梯度消失问题

代码实战

MNIST 数据集分类:构建简单的CNN对 mnist 数据集进行分类。同时,还会在实验中学习池化与卷积操作的基本作用。链接:https://github.com/OUCTheoryGroup/colab_demo/blob/master/05_01_ConvNet.ipynb
CIFAR10 数据集分类:使用 CNN 对 CIFAR10 数据集进行分类,链接:https://github.com/OUCTheoryGroup/colab_demo/blob/master/05_02_CNN_CIFAR10.ipynb
使用 VGG16 对 CIFAR10 分类,链接:https://github.com/OUCTheoryGroup/colab_demo/blob/master/05_03_VGG_CIFAR10.ipynb

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值