CNN网络的5个层级结构:
1.输入层
2.卷积层
3.激活层
4.池化层
5.全连接FC层
下面我们对每一层分别了解
输入层
任务:进行预处理操作
进行预处理操作的原因:
1.输入数据单位不一样,可能会导致神经网络收敛速度慢,训练时间长
2.数据范围大的输入在模式分类中的作用可能偏大,而数据范围小的作用
就有可能偏小
3.由于神经网络中存在的激活函数是有值域限制的,因此需要将网络训练
的目标数据映射到激活函数的值域
预处理方法:
1.去均值(把输入数据各个维度都中心化到0)
2.归一化(范围最好是 [-1, 1])
3.PCA降维
4.白化
卷积层
任务:特征提取
卷积操作过程(一个通道)
卷积核中的每一个数值与对应位置的输入图像的数值进行相乘运算,再把9个计算结果求和,最终得到特征图像上的数值
卷积操作过程(多个通道)
将三个通道分开计算最终将三个结果求和得到特征图像
多个卷积核计算最终由有1个通道的输入图像得到有多个通道的特征图像
卷积层值得注意的点
1.卷积核是需要通过训练得出的参数
2.卷积核的大小一般是奇数,这样的话它是按照中间的像素点中心对称的
3.感受野的深度必须和输入图像的深度相同
4.可能加上 zero pad项,即为图像加上一个边界,边界元素均为0.(对原输入无影响)
目的:为了使输入图像和卷积后的特征图具有相同的维度,即为了减少卷积操作导致的,边缘信息丢失
5.卷积核所有的元素之和一般要等于1,这是为了原始图像的 能量(亮度)守恒
激励层
任务:对卷积层的输出结果做一次非线性映射
常用的激励函数有:
- Sigmoid函数
- Tanh函数
- ReLU
- Leaky ReLU
- ELU
- Maxout
激励层建议:
首先ReLU,因为迭代速度快,但是有可能效果不加。如果ReLU失效的情况下,考虑使用Leaky ReLU或者Maxout,此时一般情况都可以解决。Tanh函数在文本和音频处理有比较好的效果。
池化层
任务:特征降维
两种形式:
Max Pooling:最大池化
Average Pooling:平均池化
池化在不同的 depth 上是分开执行的,也就是 depth=5的话,pooling进行5次,产生5个池化后的矩阵
池化降低卷积层输出的特征向量,同时改善结果(不易出现过拟合)
最大池化最为常用,并且一般都取2 × 2 的池化核代大小且步长为2
平均池化是取每个区域的均值(很少使用)
输出层(全连接层)
任务: 分类,连接所有的特征,将输出值送给分类器(如softmax分类器)
具体内容:通过卷积操作得到了局部特征,全连接层得到了全部的局部特征,并根据这些局部特征最终对图像进行分类