CNN学习
框架:
各层作用:
1)输入层
2)卷积层(里面有padding)
3)激活层
4)池化层(里面有padding)
5)全连接FC层
一:输入层
进行模型数据的输入以及预处理
二:卷积层
局部感知:人的大脑识别图片的过程中,并不是一下子整张图同时识别,而是对于图片中的每一个特征首先局部感知,然后更高层次对局部进行综合操作,从而得到全局信息。
卷积层的作用:
- 提取图像的特征,根据目标函数提取出想要的特征。
- “局部感知,参数共享”的特点大大降低了网络参数,保证了网络的稀疏性,防止过拟合,之所以可以“参数共享”,是因为样本存在局部相关的特性。
小卷积核的优势
1增强网络容量和模型复杂度
2减少卷积参数个数
三:激活层
所谓激励,实际上是对卷积层的输出结果做一次非线性映射。
如果没有激励函数,将会是一个简单的线性模型,输入和输出是唯一映射关系,映射的复杂性和多样性将会大大降低
四:池化
1 池化层的位置以及形式
在激活层激活后,我们需要对提取的局部特征进行处理,一般采用均值或者最大值的方法。
它可以减小上层隐藏层的计算复杂度,增强鲁棒性,忽略目标的倾斜旋转等变化带来的影响
它可以保留显著特征、降低特征维度,增大kernel的感受野。
它可对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度并在一定程度上避免过拟合的出现;一方面进行特征压缩,提取主要特征。
2 池化带来的影响
pooling操作是特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的深度来弥补。
3 padding的理解
卷积神经网络使用filter来做元素相乘相加运算来完成卷积运算,目的是为了完成探测垂直边缘这种特征。但这样做会带来两个问题:
1)卷积运算后,输出图片尺寸缩小。
2)边缘信息易丢失。
padding可以认为是扩充图片, 在图片周围补充一些像素点,把这些像素点初始化为0。
用途:
1)保持边界信息,如果没有加padding的话,输入图片最边缘的像素点信息只会被卷积核操作一次,但是图像中间的像素点会被扫描到很多遍,那么就会在一定程度上降低边界信息的参考程度,但是在加入padding之后,在实际处理过程中就会从新的边界进行操作,就从一定程度上解决了这个问题。
2)可以利用padding对输入尺寸有差异图片进行补齐,使得输入图片尺寸一致。
3)卷积神经网络的卷积层加入Padding,可以使得卷积层的输入维度和输出维度一致。
4)卷积神经网络的池化层加入Padding,一般都是保持边界信息和用途1所述一致。
4 padding的模式
SAME:是填充,填充大小, p = (f-1)/2;VALID:是不填充,直接计算输出。
五:输出层(全连接层)
经过前面若干次卷积+激励+池化后,终于来到了输出层,模型会将学到的一个高质量的特征图片全连接层。其实在全连接层之前,如果神经元数目过大,学习能力强,有可能出现过拟合。因此,可以引入dropout操作,来随机删除神经网络中的部分神经元,正则化等来解决此问题。还可以进行局部归一化(LRN)、数据增强,交叉验证,提前终止训练等操作,来增加鲁棒性。
当来到了全连接层之后,可以理解为一个简单的多分类神经网络(如:BP神经网络),通过softmax函数得到最终的输出。整个模型训练完毕。