文章目录
卷积神经网络
卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,特别适用于处理具有网格结构的数据。主要目的是自动地、层次化地从原始数据中学习有效的特征表示,以完成特定的任务,如图像识别、分类、检测、分割等。
一、画面不变性
什么是画面不变性呢?我们知道一个物体,不管将其如何变换旋转 都能够将其识别为同一个物体 ,这就是画面不变性。比如:
不管上图中物体如何的变换,我们都希望所建立的网络可以尽可能的满足这些不变性特点。
二、图像识别
我们知道传统的神经网络,训练时会将图形展开,使得在训练时网络模型的记忆比较刻板,比如下图中,我们进行训练时让神经网络记住正确的目标,但是当正确的图形变换一个位置时就无法识别了。
那么对于传统神经网络该怎么解决这个问题呢?
解决办法是:用大量物体位于不同位置的数据训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。
这是不是需要花费很大很大的数据采集以及计算空间呢?让我们来看看卷积神经网络是如何做的。
三、卷积网络
结构
卷积神经网络的结构:由输入层、卷积层、激活层、池化层、全连接层、输出层组成。
1. 原理
类比自然界的动物,不同的物种有自己独有的特征 ,比如小狗的叫声是"汪汪汪~",小猫是"喵~",这就是这两个动物的区别,我们人类也可以通过这种方法来区分二者。
同样的,卷积神经网络也是同样的道理,卷积网络将图片划分出几个特征点,在识别图片时,找寻图片中是否有符合特征点的信息。
比如上图中,卷积网络如何将右边手写的"x"图片识别成x?
将标准的x图片划分出三个特征,x图片由上方的三个小部分组成,手写"x"图片中有包含第二部分的特征,没有另外两部分特征,那这我们怎么判断它到底是还是不是呢?
就像是每个动物都有自己重要的特征,我们可以通过调整 三个部分特征的权重,来决定所识别的图片是否是x图片。
所以,综上所述:卷积就是 对图像(不同的数据窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
2. 卷积层
- 卷积操作:
卷积操作中需要注意的:
- 步长stride:每次滑动的位置步长。
- 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数以及滤波器的个数。
- 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
对于卷积层,可以形象的将卷积核当作是每个人的眼睛,每个眼睛都能得到一个特征图,不同的眼睛(卷积核)看到的图片是不一样的,这样我们就能得到多个不同的特征图。
- 寻找目标特征:
我们都知道卷积是通过与卷积核的内积得到特征图,但是,我们如何精准的找到卷积出来的特征图是不是我们的目标呢?
以鸢尾花为例:
我们的目标是识别图片中的花朵是不是鸢尾花,那我们卷积时寻找的特征图,当然得是关于鸢尾花的特征,尽量减少其余噪声的影响。这就要通过调整卷积核中的参数来调整特征目标:
一开始的卷积核是随机的,在最后的结果中同正确结果做比对,如果有误差,再返回卷积层中,更新调整卷积核的参数重新计算特征图,使得最后的特征图是目标特征。
- 特征图计算:
计算图片经过卷积后获得的特征图大小。
3. 池化层
- 池化层的作用:
一种降采样,减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。
- 常见的池化层:
最大池化、平均池化、全局平均池化、全局最大池化。
平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。
最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。
通常来说,CNN的卷积层之间都会周期性地插入池化层。
- 我们偏常用的池化方法是最大池化,最大池化的原理分析:
最大池化的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的特征图中有对于识别物体不必要的冗余信息。
观察上图,我们之前就提到过,卷积神经网络可以将不同位置的相同物体给识别成同一个物体,在这里就给体现出来了。我们看到第一行三个图片中,目标物体(黑色标注)在图片的不同位置,它们经过卷积之后,得到了第二行的三个特征图,我们再将特征图进行最大池化,发现池化后的压缩结果都为3,将其识别为了同一个特征,其余的噪声影响都被处理了。
- 池化层操作方法:
与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。
4. 全连接层
当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。
四、感受野
在卷积神经网络中,感受野 (Receptive Field)是一个核心概念,它指的是网络中每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。换句话说,感受野描述了某一层神经元所"看到"的输入图像的区域范围。
例如图片是3通道:
卷积核为3个7 x 7的,则卷积核所需要的参数个数为:3 x (3 x 7 x 7)=441个
卷积核为3个3 x 3的3层,则卷积核所需要的参数个数为:3 x (3 x 3 x 3)+3 x (3 x 3 x 3) +3 x (3 x 3 x 3) =243个
同样的效果,后者需要调整的参数更小,自然使用后者更好啦!
总结
本篇介绍了卷积神经网络的结构以及它的优点:
- 卷积神经网络能够将变换的物体识别出来。
- 卷积神经网络的结构:由输入层、卷积层、激活层、池化层、全连接层、输出层组成。
- 什么是感受野。