卷积神经网络的基本思想

Python卷积神经网络提取特征 卷积神经网络 特征提取_深度学习

卷积神经网络的基本结构

卷积神经网络是一种多层的、前馈型网络。从结构上,可以分为特征提取阶段和分类识别阶段。

Python卷积神经网络提取特征 卷积神经网络 特征提取_神经网络_02


在特征提取阶段,通常由多个特征层堆叠而成,每个特征层又由卷积层和池化层组成。

Python卷积神经网络提取特征 卷积神经网络 特征提取_Python卷积神经网络提取特征_03


处于网络前端的特征层,用来捕捉图像局部细节信息,而后面的特征层则用来捕捉图像中更加抽象的信息。

在分类识别阶段,通常是一个简单的分类器,例如全连接网络或支持向量机,它接收最后一个特征层的输出,完成分类和识别。

特征提取阶段

卷积层

卷积层也叫做特征提取层,使用卷积核来提取图像中的特征。

Python卷积神经网络提取特征 卷积神经网络 特征提取_池化_04


要注意的是,这里的卷积运算是有偏置项的,一个卷积核在整张图片上提取到的特征构成特征图,在一个卷积层中,往往包含多个卷积核,用来提取图像中的不同特征。

每个卷积核都输出一张特征图,在卷积核之后,一般会定义一个激活函数,卷积神经网络通常使用 Relu 神经网络作为激活函数,在实际任务中,也可能会使用其他激活函数,或者不使用激活函数。

池化层

池化层也叫做特征映射层

池化是一种下采样运算,可以在减少数据的处理量的同时,保留有用的信息。

例如,图片尺寸为 6 x 6 ,

Python卷积神经网络提取特征 卷积神经网络 特征提取_神经网络_05


对其进行最大池化,池化模板为 2 x 2 ,步长为 2 。就是把它按照 2 x 2 的小区域进行分块,

Python卷积神经网络提取特征 卷积神经网络 特征提取_神经网络_06


然后取每个块中的最大值作为合并后的像素值。

Python卷积神经网络提取特征 卷积神经网络 特征提取_池化_07


采用 n x n 的池化模板进行步长为 n 的池化操作就是对这个图像进行下采样,把它的尺寸减少到 1/n 。例如,下图为 MNIST 手写数字数据集中的手写数字图片,

Python卷积神经网络提取特征 卷积神经网络 特征提取_Python卷积神经网络提取特征_08


对他们进行最大池化,得到的结果图片是 7 x 7 的,

Python卷积神经网络提取特征 卷积神经网络 特征提取_神经网络_09


可以看到,最大池化就是在缩小图像的同时,对每个块中最亮的像素采样,可以得到图像的主要轮廓。因此,池化相当于又进行了一次特征提取,从而更进一步获取更高层、更抽象的信息。使得网络能够对输入的微小变化(例如少量的平移、旋转以及缩放等) 产生更大的容忍,从而提高了泛化性,防止过拟合。在网络前端的卷积层中,每个神经元只连接输入图像中很小的一个范围,感受也比较小,能够捕获图像中局部细节的信息。

Python卷积神经网络提取特征 卷积神经网络 特征提取_神经网络_10


而经过多层卷积层和池化层的堆叠后,后面的卷积层中,神经元的感受也逐层加大,可以捕获图像中更高层、更抽象的信息,从而得到图像在各个不同尺度上的抽象表示 。除了最大池化,还有一些其他的池化方法,如下图所示。

Python卷积神经网络提取特征 卷积神经网络 特征提取_Python卷积神经网络提取特征_11


Python卷积神经网络提取特征 卷积神经网络 特征提取_池化_12

池化层在卷积神经网络中并不是一个必须的组件,在目前一些新的卷积网络中,就没有池化层的出现。

卷积神经网络是一种监督学习的神经网络,训练过程与传统的人工神经网络相似。首先,从训练集中取出样本输入网络,经过逐级变换,传送到输出层。

Python卷积神经网络提取特征 卷积神经网络 特征提取_cnn_13


计算输出层与样本标签之间的误差,然后反向传播误差,采用梯度下降法更新权值,最小化损失,反复迭代,在网络收敛并达到预期的精度后,结束训练。最后保存训练好的模型参数,以后就可以直接使用来进行分类了。