卷积神经网络CNN解析

1 功能

卷积神经网络(Convolutional Neural Network,CNN)包括两种基本运算,一是特征提取,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,他与其他特征间的位置关系也随之确定下来。二是特征映射,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。这两种操作形成了CNN的卷积层。此外,卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,即池化层,这种特有的两次特征提取结构减小了特征分辨率。

2 作用

CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以使用CNN时,避免了显式地特征提取,而隐式地从训练数据中进行学习。由于同一特征映射面上的神经元权值相同,所以网络可以进行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点,避免了特征提取和分类过程中数据重建的复杂度。

3 结构

最基本的CNN由输入层、卷积层、池化层、全连接层、Softmax层和输出层组成。
CNN

图3.1 CNN结构

3.1 输入层

即神经网络的输入。在处理图像的卷积神经网络中,输入层一般表示某张图片的像素矩阵。如图2.11所示,输入图片以三维矩阵表示,如3×4×1或3×4×3,其中,3×4表示图片大小(尺寸),最后的元素1或3表示矩阵深度即图像的色彩通道(channel)。黑白片深度为1,在RGB色彩模式下,图像深度为3。从输入层开始,卷积神经网络通过不同的神经网络结构将上一层的三维矩阵转化为下一层的三维矩阵,直到最后的全连接层。该层对原始图像数据进行预处理,包括:

  • 中心化(去均值)
    把输入的数据各个维度都中心化为0,即数据减去均值,是新数据的期望为0,目的是把样本的中心拉回到坐标原点上,在0附近偏移,浮动。
  • 归一化
    幅度归一化到同样的范围,减少各维度数据取值范围的差异带来的干扰,如两个维度的特征A和B,A范围是[1,100],B的范围是[1,10000],如果直接使用这两个特征是有问题的,正确做法是归一化,将A和B的数据都变为0到1的数据。
  • PCA/白化
    用PCA降维,降低数据维度,即将数据投影到最大方差的向量方向,以期获取离散程度最大,保留原始数据集信息最完整的低维数据,若做可视化,降维到二维或三维,白化是对数据各个特征轴上的幅度归一化。

3.2 卷积层

卷积层旨在学习输入的特征表示。卷积层由几个特征图(feature maps)组成。一个特征图的每个神经元与他前一层的临近神经元相连,这样的一个临近区域叫做神经元在前一层的局部感知野。为计算一个新的特征图,输入特征图首先与一个学习好的卷积核(也称滤波器、特征检测器)做卷积,然后将结果传递给一个非线性激活函数。通过应用不同的卷积核得到新的特征图。注意到,生成一个特征图的核是相同的即权值共享。权值共享优点:减少模型的复杂度,使网络更易训练。
  卷积层是神经网络中最重要的部分。与传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块,这个小块常用的大小有3×3或5×5。卷积层试图将神经网络中的每一个小块进行更加深入地分析,为了得到抽象程度更高的特征。一般,通过卷积层处理过的节点矩阵会变得更深。

  • 局部关联:每个神经元看做一个滤波器(filter)
  • 感受野(receptive field):滑动窗口,filter对局部数据计算,权重weights尺寸即为感受野尺寸,即处理后(相当于压缩)的一个数据可以是从滑窗获取的,这个新的数据感知的是滑窗大小的数据,也称滑动窗口,卷积核;
  • 深度(depth):权重组数,图像层数
  • 步长(stride):窗口一次滑动的长度
  • 填充值(zero-padding):补充图像尺寸;如图像尺寸为5×5(一个格子为一像素),滑动窗口取2×2,步长取2,剩下一个像素没有滑完,填充一层,变成6×6矩阵,此时,窗口刚好可以遍历所有像素,保证输出的图像数据尺寸不变,仍为5×5;若不填充则使图像尺寸减小为3×3。

【卷积计算过程1】
Calculate

图3.2 卷积计算过程

【卷积计算过程2】
如图3.3所示,解析卷积计算和感受野,正如图所示,滑窗尺寸为3×3,卷积计算3×3的图像区域,获取一个值为-8,这个值是经过“压缩”处理的,她可以感受到的是3×3的区域,即-8的感受野为3×3。
Cal

图3.3 卷积计算

3.3 池化层(pooling)

池化层旨在通过降低特征图的分辨率实现空间不变性。通常位于两个卷积层之间,每个池化层的特征图和他相应的前一卷积层的特征图相连,因此他们的特征图数量相同。典型的池化操作是平均池化和最大池化,通过叠加几个卷积核池化层,可以提取更抽象的特征表示。
  池化层神经网络不会改变三维矩阵的深度,但可以改变矩阵的大小。池化操作可理解为将一张分辨率较高的图片转化为分辨率较低的图片。通过池化层,选择邻域中最大的数值作为输出,这样可以进一步缩小最后全连接层中节点的个数,从而达到减少神经网络参数的目的。
  最大池化层计算:
Pool

图3.4 最大池化层计算

3.4 全连接层

经过多轮卷积层和池化层的处理之后,在卷积神经网络的最后,一般会是由1到2个全连接层来给出最后的分类结果。经过几轮卷积层和池化层的处理后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。可将卷积层和池化层看成自动提取图像特征的过程。在特征提取完成之后,仍需使用全连接层完成分类任务。

3.5 softmax层

主要用于分类问题,通过softmax可以得到当前样例属于不同种类的概率分布情况,输出分类结果。
  softmax分类:softmax

图3.4 全连接及softmax分类

4 总结

  • 卷积神经网络主要用于计算机视觉,他可有效提取图像特征,成功用于人脸识别,目标检测等;
  • 较著名的卷积神经网络:AlexNet, ZFNet,VGGNet,GoogleNet, ResNet;
  • 感受野:卷积核尺寸;卷积计算利用滑动窗口将与之对应的区域进行“压缩”,这个“压缩”处理的值对应的区域(滑窗尺寸)即为该数据的感受野,她来自谁就能感受谁;
  • 卷积填充:填充可保持卷积计算后图层的尺寸,不填充,则图层尺寸在卷积计算后会减小;
  • 池化层:筛选数据,最大池化层即挑选出区域内最大的数据作为下一步骤的原始数据;
  • softmax:将数据拉伸为一个一维向量(行向量),作为分类结果,挑选最大的数值对应数据标签;模型最终也是暴露softmax,将结果与标签的数据字典进行比对,提取最终分类结果;

更新ing
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值