以下是CNN网络的简要介绍。
1 CNN的发展简述
CNN可以有效降低传统神经网络(全连接)的复杂性,常见的网络结构有LeNet、AlexNet、ZFNet、VGGNet、GoogleNet、ResNet等。
1.1 CNN常见的网络结构
(1)LeNet(1998年 ): 首个CNN网络结构
(2)AlexNet(2012年 ): 错误率 15.3%
(3)ZFNet(2013年 ): 错误率 14.8%
(4)VGGNet(2014年 ): ILSVRC2014比赛分类项目亚军,错误率 7.3%
(5)GoogleNet(2014年 ): ILSVRC2014比赛分类项目冠军,错误率 6.67 %
(6)ResNet(2015年 ): 错误率 3.6 %
1.2 CNN的应用场景
(1)图像分类
(2)目标检测
(3)图像分割
(4)语义分割
2 CNN网络的主要结构
2.1 输入层(Input Layer)
网络数据输入之前要进行数据预处理。
(1)为什么要数据预处理
主要原因是输入数据的单位如果不一样,会导致神经网络收敛速度慢。激活函数是有值域限制的,所以需要将输入数据映射到激活函数的值域范围内。
(2)数据预处理的常见方式
1)去均值
2)归一化
3)PCA降维、白化
白化:在PCA的基础上,对转换后的数据 每个特征轴上进行归一化处理。实际应用中,一般并不会使用PCA和白化的操作。
2.2 卷积层(CONV Layer)
卷积层的输出也被称为特征映射(feature map),因为它可以被视为一个输入映射到下一层的空间维度的转换器。
在卷积神经网络中,对于某一层的任意元素 𝑥 ,其感受野(receptive field)是指在前向传播期间可能影响 𝑥 计算的所有元素(来自所有先前层)。
而权值共享:给定一张输入图片,用一个filter去扫描这张图,filter里面的数就叫做权重,而这张图的每个位置是被同样的filter扫的,所以卷积计算的权重是一样的,这就是权值共享。
下图是卷积计算过程示例:
在卷积之前还有填充的处理以及步幅的选择,在此不做过多阐述,后面会专门进行介绍。
2.3 激活层(Activiation Layer)
激活层的作用是将卷积层的输出结果再做一次非线性的转换。
常用的激活函数有:Sigmoid、Tanh、Relu、Leaky Relu、Maxout等。
(1)Sigmoid
优点:简单,容易理解。
缺点:容易产生梯度消失或梯度爆炸。
数学表达式:
导函数表达式:
函数图像:
(2)Tanh(双曲正切)函数
优点:易理解,0中心化。
缺点:容易产生死神经元。
数学表达式:
导函数表达式:
函数图像:
(3)Relu函数
优点:相比于Sigmoid和Tanh,具有更快的收敛速度。
缺点:没有边界。
数学表达式:
导函数表达式:
函数图像:
2.3 小结
(1)首先使用Relu,如果效果不好,考虑使用Leaky或者Maxout,目前大多数CNN均使用Relu作为激活函数。
(2)sigmoid激活函数在CNN中一般不用,而tanh激活函数只在某些特定场景下效果好。
2.4 池化层(Pooling Layer)
实施池化的目的:
(1) 降低信息冗余;
(2) 提升模型的尺度不变性、旋转不变性;
(3) 防止过拟合。
池化层的常见操作包含以下几种:最大值池化,均值池化,随机池化,中值池化,组合池化等。
更为常用的有两种池化层:最大池化和平均池化。(一般选择最大池化)
最大池化方式的特点:
(1)最大池化(max-pooling)即取局部接受域中值最大的点。
(2)最大值池化的优点在于它能学习到图像的边缘和纹理结构。
(3)根据相关理论,特征提取的误差主要来自两个方面:
1)邻域大小受限造成的估计值方差增大;
2)卷积层参数误差造成估计均值的偏移。
一般来说,mean-pooling能减小第一种误差,更多的保留图像的背景信息,max-pooling能减小第二种误差,更多的保留纹理信息。与mean-pooling近似,在局部意义上,则服从max-pooling的准则。
下图是最大池化方式的示例:
2.5 全连接层(FC Layer)
全连接层目的:对卷积观测到的局部信息进行整合,得到全局信息。
2.6 Batch Normalization层
在网络每一层输入前,插入一个BN归一化层,将输入数据处理为服从高斯分布的数据,然后再进入网络的下一层。
BN层作用:
(1)防止梯度消失
(2)加快网络训练速度
(3)抑制网络过拟合。
BN层一般放在卷积层后,池化层前:
(1)卷积层 --> Relu激活层 --> BN层 --> 池化层
(2)卷积层 -->BN层 --> Relu激活层 --> 池化层
3 总结
以上是对CNN网络的基本结构作简要介绍,CNN网络的实现中仍有许多细节,如,如何处理梯度消失和梯度爆炸、卷积里的填充和步幅等,这些将在以后进行具体介绍。