本文借鉴了博主ujjwalkarn的文章,图均来自其中,对其内容进行了简单与易于理解化的叙述,原文地址:https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
现阶段卷积神经网络基本是以下几个过程 :
1.卷积(Convolution)
2.非线性处理(ReLu)
3.池化(Pooling)
4.全连接层进行分类(Fully Connected)
假设输入图像可以是狗 ,猫,船,鸟,当我们输入一张船的图像的时候,卷积神经网络会分配一个最高的概率(这里是0.94)给到船,同时在输出层(output prediction)中,所有概率之和为1。
一:卷积
每张图像本质上都可以表示为像素值的矩阵,而做卷积则是根据输入图像的像素矩阵,利用多种不同的过滤器(也叫卷积核,也是一种像素矩阵)在输入图像的像素矩阵上进行滑动计算得到的输出的特征图。
可以通过下图理解,输入图像经过了两种不同的过滤器的滑动计算生成了两种不同的特征图,cnn中会对输出的不同特征图像进行学习:
那么卷积的计算过程是怎么样的呢?
假设输入图像的像素矩阵是:
过滤器(卷积核)的矩阵:
卷积的过程则是:
输出的特征图像(Convolved Feature)的一个元素4的是这样来的,当卷积核在最开始的位置时是这样的,那么我们把卷积核与输入图像的像素矩阵对应的元素 互相 进行相乘并求和,即:1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1=4,依次类推即可得到我们卷积后的特征图像。一般来说为了获得更多的特征图像,会用到多个不同卷积核,所以往往一张输入图像在经过卷积后会产生多个输出的特征图像 (记住这句话,这是卷积与接下来要讲到的池化层的区分)
二.池化
池化常常是为了保持特征图像的抗扭曲性与不变性的情况下,减少输出的维度大小。即是在保留输出的特征图像的大部分信息的同时降低输出图像的大小,对特征图像额行空间维度的优化降低,控制过拟合。
池化层一般用最大值池化层,如下图所示,我们定义一个2X2的窗口,在特征图像中进行步长(stride)为2滑动,并在每次滑动后从窗口内的特征元素中取最大的元素。除了最大值,我们还可取平均值。
这样的操作后就大大的降低了特征图像的维度大小。
池化操作是用于每个输出的特征图像中的,所以有3张特征图,那么在池化操作后仍然输出3张降维后的特征图(注意卷积过程是一张输出图像经过卷积后生成多个特征图像)。
下图展示了特征图像经过池化操作后的效果
三.全连接层
卷积和池化是为了把输入图像的高级特征给表现出来,全连接层的目的是利用这些高级特征通过激活函数(如softmax)等分类器对最初输入的图像进行类别的分类,如下图所示。
本人也是深度学习的新学生,本文是对于ujjwalkarn作者的文章的理解,如有误多谢指出。
原文地址:https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/