CNN卷积神经网络
- 卷积提取特征,池化压缩特征;全连接层:加权重
卷积层
- 卷积神经网络还是一个学习找最优权重参数的过程。
- 将图像分成很多小区域,对于整个原始输入图像按照一个区域进行加权得到特征图,每个特征图的每个元素是相应位置卷积的结果
- 32* 32 *3,其中3表示RGB三个颜色通道,多通道分别卷积得到输出再相加
- 利用filter权重参数进行特征提取,通过特征参数卷积和得到一个值(特征值),filter前两个值大小表示在原始图像数据中每多大的区域对应一个特征值。不同颜色通道对应的filter要不一样。
- 利用内积(对应位置相乘)进行计算,注意加上一个偏置项Bias b0
- 选择不同特征矩阵(规格相同)得到的特征图不同,每一次卷积选择的和是一致的,这样就导致结果有多个,称作为特征图的深度
整个卷积层特征提取过程:将输入图像分隔成很多个像素点以及RGB三个颜色通道(例如32* 32* 3,分隔成长为32宽为32,RGB三个颜色通道),选择fliter以及移动距离进行相应位置卷积加权,将三个计算结果以及偏置加起来可以得到特征图中第一个元素,重复可以得到整个特征图;改变初始权重值可以得到不同的特征图,称为深度。
卷积层涉及参数
- 滑动窗口步长(能移动越多得到的特征图越大,提取的特征越细腻,常见步长为1)
- 卷积核尺寸(选择区域的大小—最后得到结果个数的大小,一般3×3)
- 边缘填充(由于步长选择,有些元素重复加权贡献的,越往里的点贡献多,越往外的点贡献少,是边界点贡献多些,在外面加上一圈0,可以弥补一些边界特征缺失)zero padding 以0为值进行边缘填充
- 卷积核个数:最后要得到多少个特征图(每个卷积和都是不一样的)
实际计算公式
卷积参数共享:用同样一组卷积和对图像中每一个区域进行特征提取
池化层
特征太多了,但并不是都是有用的,因此要进行压缩(下采样),选择重要的留下了,不重要的丢弃,只会对特征图长和宽进行缩减,不会改变特征图的深度,没有涉及到矩阵的计算。
池化层压缩过程:在通过卷积层后对特征图进行筛选,滑动窗口(例如:max pooling将该区域最大值提取出来)
整个卷积神经网络的框架
每次卷积结束后需要加上一个非线性变换(核bp神经网络一致),执行几次卷积得到一个比较大的特征图就进行一次池化,最后的结果要转化为分类的概率值(全连接层)
由于全连接层参数不能为3维,需要把处理过后的特征图拉成一个特征向量,将该向量转化为5分类的概率值。
带参数计算才能称作层(卷积层和全连接层)
VGG网络
卷积大小都是3*3,经过池化层后会损失一部分信息,在下一次卷积过程中使得特征值翻倍(用特征图的个数来弥补长宽的损失)
Resnet残差网络
并不是层数越多越好,在堆叠层数时可能有不好的进行影响,需要设计一个方案进行剔除
可以理解为经过卷积层后学的不好把原来学的好的覆盖了,现在重新构建堆叠原始学的好的那部分,及时之前不好的部分有影响,但只要学习使得该部分权值为0即可(好的我用,不好的我权重为0,相当于白搞,也就是对我有用的我加上,没用的我也加上但是不影响,最后效果至少一定不会比原来差)
感受野
当前这个值是由前面多少个值参与计算得到的,一般希望感受野越大越好。
3个3*3卷积层需要的参数比一个大的要参数小,实际效率更快一些
计算速度与参数个数挂钩,卷积越多越细腻,加入的非线性变换野随着增多