上图是一个典型的卷积神经网络,主要由卷积层、全连接层构成。卷积层主要包括特征提取、池化,下面也将进行介绍。我们知道计算机对颜色没有任何感知能力,任何图片在计算机看来都是一些数字,如下图所示。各种彩色的图片也是有RGB三种颜色不同的比例调和而成。他们本质上都是些数值矩阵(map data)。灰度图片只有一个map data。而彩色图片相对麻烦些,需要分解成R、G、B三个通道的map data,进行特征提取。
特征提取与池化本质上来说都是对图片数据进行压缩。特征提取需要一个叫做卷积核(filter或者kernel)的矩阵,如图二黄色部分,它也是一个数值矩阵。filter中的数值与map data中对应位置的数值相乘再相加,便形成下方第一个图二动图粉红色部分的一个数值。filter根据步长,移动位置(图中步长stride=1,所以每次移动一列,步长不一样形成的新的矩阵的大小有所不同),形成了一个新的矩阵(feature map),这就是特征提取卷积的过程。有时,为了提取图片边缘部分的信息,在原始图片外围部分补充一些矩阵(padding,如图三蓝色动图),这些补充部分填充数值0即可。为了更好的对图片特征提取,一张图片会设置多张不同filters,每一个filter卷积之后,都会形成一张新的feature map。至于filter中的数值,我们只要给它赋初值,由反向传播、梯度下降法,filter中的数值会自我调整与更新,使损失函数降低。而彩色图片每一次进行特征提取,会同时考虑R、G、B三通道,如果第一次特征提取卷积有25个filters(一般每个filters也有三个通道,相应通道对应相乘),将会形成25个新的feature map,然后对它们池化。假如第二次卷积也有25个filters,那么形成的feature map依然是25,不是25*25。因为每一个filter会同时考虑宽度、高度、深度,第一次特征提取卷积,每一个filter会同时提取3通道(R、G、B即深度)的特征,形成25个feature map。而第二次特征提取卷积,每一个filter会同时提取25个(第一次特征提取卷积之后的结果)深度,形成新的25个feature map。
图一
卷积过程:图二
padding 过程:图三
特征提取过程:
而池化分为最大池化和平均池化,而最大池化在实际运用中最为常见。池化层一般放在特征提取之后,所以池化的对象是特征提取卷积之后的数据。如下图所示,一个4*4的矩阵被分为四个2*2的小矩阵。从每一个小矩阵中提取最大值,形成新的矩阵,这就是最大池化的过程。而平均池化是提取每一个小矩阵的平均值。池化层也有padding的选项,但跟特征提取卷积一样,在外围补0,然后再池化。分享两个大神制作的可视化的卷积网络基于卷积神经网络的手写数字识别3D建模(点击进入)
和卷积神经网络参数可视化调节(点击进入)
。
全连接层,就是把卷积层提取压缩之后的数据拉平(flatten),如下图所示,然后送入全连接网络。
什么时候用卷积神经网络CNN?
-
Some patterns are much smaller than the whole image:比整体小的多的部分也含有信息
-
The same patterns appear in different regions:同样的信息可能出现在不同区域
- Subsampling the pixels will not change the object:池化不改变对象。(Alpha Go没有使用池化,在围棋中不适用)