用户您好!请先登录!

卷积神经网络CNN那点事

卷积神经网络CNN那点事

在讨论卷积神经网络(CNN)之前,我们来回顾一下什么是神经网络。我们可以搭建全联接类型的神经网络(full connection neural network),然后使用反向传播(Back Propagation – BP)和梯度下降训练神经网络。这种BP网络可以很好的处理较小的图片。

一文搞懂卷积神经网络(Convolutional Neural Networks-CNN)

但是BP网络在处理较大的图片时会遇到下列棘手的问题:

•图片需要预处理(旋转、去燥、灰度化等),有时还要手工抽取特征

•网络权值太多,训练需要很多样本,计算困难

•网络泛化能力较弱

那要怎么办?在束手无策的时候,大自然总会带来很多启发。20世纪60年代,Hubel和Wiesel在研究猫和猴子大脑皮层的视觉神经元时发现,其独特的结构可以有效地降低神经网络的复杂性。特别是,每个视觉神经元只负责处理局部视觉信号。另外不同的视觉神经元对不同的图像模式的反应是不同的,有的神经元对简单模式敏感(例如横条、转角),有的对复杂模式敏感(例如矩形、网状)。而且处理复杂图像模式的神经元的输入并不是原始图像,而是来自处理简单图像模式的神经元的输出。所以视觉神经元是有层次的,高层神经元会将低层神经元检测到的信息整理抽象出更复杂的特征,然后交给更高层的神经元处理。该研究成果还获得了1981年的诺贝尔奖。

一文搞懂卷积神经网络(Convolutional Neural Networks-CNN)

随后Yann LeCun等学者从这项研究中获得启发,用人工神经元模拟这个图像处理结构,并在1981年发表论文,提出人工神经元卷积神经网络。

首先,卷积神经网络最大亮点在于自动提取图片特征。卷积神经网络使用一种叫做卷积核(convolution kernal)或者过滤器(filter)的数据结构,对图片进行卷积操作。不同的卷积核提取不同的特征。例如下图中绿色的卷积核提取横向条纹,卷积操作后图片中的横向条纹部分会被强化。而黄色卷积核提取斜线特征,卷积后图像中的斜线条纹会被强化。不同的卷积核会生成不同的特征图。

一文搞懂卷积神经网络(Convolutional Neural Networks-CNN)

这些特征图接下来会被更复杂的卷积核进行过滤,提取出更复杂的图像特征。

一文搞懂卷积神经网络(Convolutional Neural Networks-CNN)

之后再通过我们介绍过的全联接网络分类器进行分类即可。

卷积神经网络的第二个亮点是每个神经元只处理图片的局部信息,而不是整个图片。同时,卷积操作时使用的卷积核都是共享的。这可以极大地减少网络的权重数量,又实现了特征抓取的位置无关性。

一文搞懂卷积神经网络(Convolutional Neural Networks-CNN)

如上图所示,卷积核W0的三层数据分别处理输入数据对应的层。卷积操作就是把感知区域(蓝色框)中的数字乘以卷积核对应位置(红色框)的数字,然后把三层结果放到一起求和后存入绿色框(特征图)。 感知区域的移动步长通常小于其宽度,输入数据需要根据感知区域移动情况添加留白(灰色区)。

输入数据经过卷积运算从3层变为1层,宽度也从5变为3。为了进一步压缩特征图的大小,卷积网络引入一个新的概念–池化(pooling),把相邻区域的信息进一步压缩。

一文搞懂卷积神经网络(Convolutional Neural Networks-CNN)

把这些部件串在一起,就构成了卷积神经网络。以VGG16卷积网络为例,它可以把图像归类到1000种日常生活物品的某一种。大家可以用Python和Keras快速搭建这种图像分类器。

一文搞懂卷积神经网络(Convolutional Neural Networks-CNN)

 

希望读到这里能对卷积神经网络有了一定的了解。

X-Eyes Admin
X-Eyes Admin

要发表评论,您必须先登录