CNN主要灵感来自于神经科学视觉系统中的视觉皮层,经研究发现大脑生物皮层的不通视觉细胞仅会对特定部分的视觉区域敏感。
卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。
该层要做的处理主要是对原始图像数据进行预处理。CNN的输入层的输入格式保留了图片本身的结构。分别对于黑白的 28×28的图片,CNN 的输入是一个 28×28 的二维神经元,对于 RGB 格式的 28×28 图片,CNN 的输入则是一个3×28×28 的三维神经元。
卷积神经网络的名字就来自于其中的卷积操作。卷积的主要目的是为了从输入图像中提取特征。
卷积的理解:用卷积核去“卷”图像,这个“卷”字可以理解为提取图像的特征。不同的卷积核在对图像分别进行卷积后可以得到不同的特征图(feature map)。
卷积的流程:
正如我们上面所说,每张图像都可以看作是像素值的矩阵,例如一个5×5的图像 ,用一个3×3(卷积核尺寸)大小的卷积核,去进行卷积。
使用3×3的卷积核对图像进行卷积示例如下,使用“卷” 也就是提取特征:
整体滑动如下:
特征图的大小(卷积特征)由下面三个参数控制,我们需要在卷积前确定它们:
深度(Depth):深度对应的是卷积操作所需的滤波器个数,也就是卷积核的个数。
步长(Stride):步长是我们在输入矩阵上滑动滤波矩阵的像素数。当步长为 1 时,我们每次移动滤波器一个像素的位置。当步长为 2 时,我们每次移动滤波器会跳过 2 个像素。步长越大,将会得到更小的特征图。
零填充(Zero-padding):有时,在输入矩阵的边缘使用零值进行填充,这样我们就可以对输入图像矩阵的边缘进行滤波。零填充的一大好处是可以让我们控制特征图的大小。使用零填充的也叫做泛卷积,不适用零填充的叫做严格卷积。
激励层的作用: 卷积神经网络在卷积后需要激活,把卷积层输出结果做非线性映射就是激励层的作用。激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。
如下图所示,同种颜色为同类数据。某些数据是线性可分的,也就是可以用一条直线将数据分开。
但是有些数据不是线性可分的。例如以下数据,没有办法找到一条直线分开:
这时候有两个办法,第一个办法,是做线性变换(linear transformation),比如将x,y变成x2,y2,这样可以画出圆形。如图所示:
如果将坐标轴从x,y变为以x2,y2为标准,你会发现数据经过变换后是线性可分的了。大致示意图如下:
我们可以设计一种神经网络,通过激活函数来使得这组数据线性可分。
激活函数我们选择阀值函数(threshold function),也就是大于某个值输出1(被激活了),小于等于则输出0(没有激活)。这个函数是非线性函数。
池化层的作用:池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。下采样层也叫池化层。
总结:
1.增大网络感受野
2.抑制噪声,降低信息冗余
3.降低模型计算量,降低网络优化难度,防止网络过拟合
4.使模型对输入图像中的特征位置变化更加鲁棒
池化层的操作:最大池化、平均池化、
最大池化(Max Pooling):将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。
平均池化:平均池化取每个矩形区域中的平均值,可以提取特征图中所有特征的信息进入下一层,而不像最大池化只保留值最大的特征,所以平均池化可以更多保留些图像的背景信息。
全连接层的作用:在整个卷积神经网络中起到“分类器”的作用。换句话说,就是把特征整合到一起(高度提纯特征),方便交给最后的分类器或者回归。
因为卷积层的作用只是提取特征,但是很多物体可能都有同一类特征,比如猫、狗、鸟都有眼睛。如果只用局部特征的话不足与确定具体类别。这时就需要使用组合特征来判别了。全连接就是组合这些特征来最终确定是哪一个分类,所以全连接就是组合特征和分类器功能。
在卷积层之后进行了池化操作,池化层得到30个1212的特征图,通过全连接层之后,得到了1100的向量。由于全连接层是输入中的每个结点与其下一层结点都有连接,那么使用30100个1212的卷积核进行卷积操作。卷积核与输入图像大小一致,卷积操作之后整个输入图像就会变成一个数值。30个特征图进行卷积操作之后得到30个值,将此30个值进行累加求和,就把30张特征图浓缩成一个数值。此操作进行100次之后会得到100个值,即1*100的向量。全连接层会把卷积输出的二维特征图(featureMap)转化成一个一维的向量。