1.卷积神经网络(CNN)
1.1 基础结构
主要由三个基本组件组成:
卷积层(Convolutional layer)
池化层(Pooling layer)
全连接层(Fully-Connected layer)—就是正常神经网络层,不做过多介绍
(1)以下以一个经典的LeNet-5卷积神经网络来介绍:
第一层:输入层,输入的是 batchsize∗32∗32的黑白分辨率图像
第二层:C1,卷积层,有6个特征图,卷积核大小为 5 ∗ 5 ,深度为 6,没有使用全0填充且步长为1,所以共有 28 ∗ 28 ∗ 6 个神经元(32-5+1=28),参数数量为156( 5 ∗ 5 ∗ 6 + 6 = 156 ,6为偏置项参数),每一个单元与输入层的25个单元连接。
第三层:S2,池化下采样层,有6个特征图,每个特征图大小为 14 ∗ 14 ,池化核大小为2*2,长和宽步长都为2。
第四层:C3,卷积层,卷积核大小为 5 ∗ 5,有16个特征图,每个特征图大小为 10 ∗ 10 ( 14 − 5 + 1 = 10 ) ,与第三层有着固定的连接。
第五层:S4,池化下采样层,有16个特征图,每个特征图大小为 5 ∗ 5 ( 10 / 2 ) ,池化核大小为 2 ∗ 2 ,长和宽步长都为2。
第六层:F5,全连接层,有 batchsize∗400个特征图。
第七层:F6,全连接层,有 batchsize ∗ 120个特征图。
第八层:F7,全连接层,有 batchsize ∗ 84个特征图。
第九层:输出层,有 batchsize ∗ 10个特征图。
1.2 卷积层
实际上和图像处理的卷积滤波是类似的,就是用卷积核对图像进行特征提取。一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值,乘卷积核内相对应点的权重,然后求和, 再加上偏置后,最后得到输出图片中的一个像素值。
卷积层的功能是对输入数据进行局部特征提取,其内部包含多个卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量(bias vector),然后每一个卷积核对应一个输出通道,其中的权重参数是需要学习,而不是直接得出的。
1.2.1 什么是感受野?
感受野用来表示网络内部的不同神经元对原图像的感受范围的大小,或者说,convNets(cnn)每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。
简单的说,就是卷积后的图像上一个像素点回推到原图像上的区域大小
计算公式是:
n代表卷积层;rn代表第n个卷积层的感受野大小;Kn代表第n个卷积层的卷积核大小;Sn代表第n个卷积层的步长。
1.2.2 卷积层超参数
卷积神经网络的超参数 :
(1)滤波器/卷积核数量(output number)
D=卷积核的数量=输出通道
(2) 核尺寸(kernel size)
由卷积核的交叉相关计算可知,随着卷积层的堆叠,特征图的尺寸会逐步减小,例如16×16的输入图像在经过单位步长、无填充的5×5的卷积核后,会输出12×12的特征图。
具体计算方式如下所示:
实例如下所示,注意卷积核图层和原图层是一致的,如下图输入图片是3层,卷积核也得是3层:
(3) 步长(stride)
卷积步长定义了卷积核相邻两次扫过特征图时位置的距离,卷积步长为1时,卷积核会逐个扫过特征图的元素,步长为n时会在下一次扫描跳过n-1个像素 。
卷积步长大于1的情况可以起到降维的作用
(4)填充(padding)
填充是在特征图通过卷积核之前人为增大其尺寸以抵消计算中尺寸收缩影响的方法。
常见的填充方法为
–1--全零填充(zero padding):
–2--重复边界值填充(replication padding)
1.2.3 激励函数
常用的还是ReLU激活函数
(1)分段线性函数
(2)无饱和问题,明显减轻梯度消失问题
(3)深度网络能够进行优化的关键
1.2.4 卷积层误差反向传播
1.2.4.1 卷积运算实例
在图像上显示这个过程就是一个连接层的过程,每个像素点是一个变量,相当于9个输入变成了4个输出,然后卷积核里面包含了权重,偏置,如下图所示:
1.2.4.2 卷积层误差反向传播
回顾一下在基础神经网络得到的误差反向传播的公式: