一文简单介绍卷积神经网络(CNN)

写在前面

本文简单介绍卷积神经网络出现的原因,是为了解决什么问题,以及介绍下卷积神经网络的层次结构,各层级进行的操作以及作用。

CNN为何出现

CNN的出现是为了解决BP神经网络处理图像时的缺陷,BP神经网络在处理图像时会把图像的每一个像素值作为特征输入到神经网络中,这势必会丢失掉图像的二维结构信息,在用BP神经网络对图像进行分类的时候,图像中的物体不能移动不能变形,否则会带来识别时的错误,这就是我上一文Tensorflow实战入门:MNIST手写数字识别用BP神经网络中的softmax回归模型进行MNIST手写数字识别时最后的模型测试精度只有0.92左右。并且BP神经网络中的神经元都采用全连接的方式,这会造成权重矩阵过大,运算量大。因为这些原因,用BP神经网络处理图像时一度遇到了瓶颈,而CNN为了解决这一系列的问题横空出世。

CNN的层级结构

我们知道传统的BP神经网络是长这样的,如下图。

在这里插入图片描述

那么CNN只是在BP神经网络上的基础上对网络层级的功能和形式做了一些改变,增加了一些在BP神经网络中没有的层级,我们可以把CNN理解为是BP神经网络的一种改进体。

在这里插入图片描述
下图是CNN的典型结构,如图所示该CNN神经网络有7层,从左往右分别是:卷积层、池化层、卷积层、池化层、全连接层、全连接层、输出层。(请注意这里的输入特征并不算在网络的层级里)

从上图我们可以看出,卷积层和池化层实际是在做特征提取的操作,再把提取到的特征输入给全连接层(传统的BP神经网络)。

卷积层

在CNN中的第一层卷积层,先选择一个局部区域(filter)去扫描整张图片,局部区域所圈起来的所有节点会和filter做乘法累加操作,再连接到下一层的一个节点上。假设要扫描的图片是一张灰度图片(也就是只有一个颜色通道),所有的filter也是个二维的矩阵,那个该卷积过程可以用如下动图表示。

在这里插入图片描述

扫描二维码关注公众号,回复: 10970941 查看本文章

那假如卷积层要扫描的图片是张彩色图片(也就是该图片有RGB三个通道),那么图片的像素可以表示成三维结构,所选用的filter也是个三维结构,如图所示。

在这里插入图片描述

也用一张动图表示一下该卷积过程。

请注意一个filter卷积一张图片(无论图片是单通道还是多通道)只能得到一个面的信息,多个filter得到多个面(形象的理解可以这么理解),可以把filter扫描图片(卷积)的过程看做是提取特征的过程,一次卷积提取图片一类的特征(比如多次filter分别提取图片红通道、绿通道、蓝通道的像素特征)

池化层

如果输入是图像的话,那么池化层的最主要作用就是压缩图像。假如池化层夹在连续的卷积层中间, 那么就是用于压缩上一层卷积层卷积下来的数据(或者也可以理解为过滤),减小过拟合。

池化层的工作过程同样也可以用一张动图简单表示。

上图对于每个3 * 3的窗口选出最大的数作为输出矩阵的相应元素的值,比如输入矩阵第一个3 * 3窗口中最大的数是5,那么输出矩阵的第一个元素就是5,如此类推。

请注意这里的窗口每次扫描过的像素不出现重复,避免重复过滤像素。

全连接层

通常全连接层在卷积神经网络尾部,跟传统的神经网络神经元的连接方式是一样的,全连接层把前面卷积层和池化层的输出作为特征值进行网络的训练,而利用反向传播算法修正全连接层的参数和阈值以及之前卷积层filter的权重等。

在这里插入图片描述

总结

综上所述,卷积神经网络(CNN)是BP神经网络的一种变体,它不再像BP神经网络那样把图片的像素值作为模型的特征进行训练,而是把图片的像素值经过一系列的处理后(卷积、池化)输出的值作为特征喂给模型训练。这种做法的好处是能保留图片的多维信息,提高模型分类的精度,利用传统的BP神经网络进行模型的构建,会拆散图片的多维信息(RGB三原色通道值、明亮度、饱和度)

发布了22 篇原创文章 · 获赞 16 · 访问量 9472

猜你喜欢

转载自blog.csdn.net/atuo200/article/details/105499517