一、BP神经网络回顾
人工全连接神经网络
(1)每相邻两层之间的每个神经元之间都是有边相连的
(2)当输入层的特征维度变得很高时,这时全连接网络需要训练
的参数就会增大很多,计算速度就会变得很慢
传统神经网络存在的问题:
(1)权值太多,计算量太大
(2)权值太多,需要大量样本进行训练
二、CNN卷积神经网络
1、CNN的主要概述
卷积层的神经元只与前一层的
部分神经元节点相连
,即它的神经元间的连接是非全连接的,且同一层中某些神经元之间的连接的
权重w
和
偏置b
是共享的(即相同的)
大量地减少了需要训练参数的数量
CNN主要特点
:减少权值,局部连接,权值共享
CNN通过
感受野
和
权值共享
减少了神经网络需要训练的参数的个数。
2、CNN的一般结构
输入层
:用于数据的输入
卷积层
:使用
卷积核
进行
特征提取
和
特征映射
激励层
:由于卷积也是一种线性运算,因此需要增加非线性映射
池化层
:压缩数据和参数的量,减小过拟合。
全连接层
:通常在
CNN
的尾部进行重新拟合,减少特征信息的损失
输出层
:用于输出结果
(1)输入层
在CNN的输入层中,(图片)数据输入的格式与全连接神经网络的输入格式(一维向量)不太一样。CNN的输入层的输入
格式保留了图片本身的结构
。
对于黑白的 28×28 的图片,CNN的输入是一个28×28 的的
二维神经元
;
对于RGB格式的28×28图片,CNN的输入则是一个 3×28×28 的
三维神经元
(RGB中的每一个颜色通道都有一个 28×28 的矩阵),如下图所示:
(2)卷积层
需要明确的几个概念:
感受视野(
local receptive fields
)
即感受
上一层的部分特征。在卷积神经网络中,隐藏层中的神经元的感受视野比较小,只能看到上一次的
部分特征
,上一层的其他特征可以通过
平移感受视野
来得到同一层的其他神经元。
卷积核
感受视野中的
权重矩阵
共享权值(
shared weights
)
步长(
stride
)
感受
视野对输入的扫描间隔称为
步长(
stride
)
边界扩充(
pad
)
当
步长比较大时(
stride>1
),为了扫描到边缘的一些特征,感受视野可能会
“出界”
,这时需要对
边界扩充
(pad)
特征映射图(
feature map
)
通过一
个带有
卷积核
的
感受视野
扫描生成的下一层神经元矩阵
称为一个
特征映射图(
feature map
)
通过以下图理解以上概念及卷积计算
(3)激励层
激励层主要对卷积层的输出进行一个
非线性映射
,因为卷积层的计算还是一种线性计算。使用的激励函数一般为
ReLu
函数
卷积
层和激励层通常合并在一起称为“卷积层”。
(4)池化层
当输入经过卷积层时,若感受视野比较小,布长
stride
比较小,得到的
feature map
(特征映射图)还是比较大,可以通过池化层来对每一个
feature map
进行
降维操作
,输出的深度还是不变的,依然为
feature map
的个数。
池化层也有一个“池化视野(
filter
)”来对
feature map
矩阵进行扫描,对“池化视野”中的
矩阵值进行计算
,一般有两种计算方式:
(1
)
Max pooling
:取“池化视野”矩阵中的
最大值
(2
)
Average pooling
:取“池化视野”矩阵中的
平均值
(5)全连接层和输出层
全连接层
主要对特征进行重新拟合,减少特征信息的丢失。
输出层
主要准备做好最后目标结果的输出。
(6)中间还可以使用其他的功能层
归一化层
(
Batch Normalization
):在
CNN
中对特征的归一化
切分层
:对某些(图片)数据的进行分区域的单独学习
融合层
:对独立进行特征学习的分支进行融合
CNN卷积神经网络实现Mnist数据集:
参考博客资料: