一 背景
在卷积神经网络CNN 出现之前,图像对于人工智能来说就是一个灾难,主要是有两个原因:
- 图像需要处理的数据量太大,导致成本很高,效率很低;
- 图像在数值化的过程中很难保留原有的特征,导致图像处理的准确率不高;
1 参数共享机制
假设我们使用全连接层进行图像特征的提取,即使使用最简单的数据集例如MNIST数据。每个图片的尺寸是28x28x1,其中28x28是图片的大小,1是表示图像是黑白的,即只有一个色彩通道。假设第一层的隐藏层的节点数量是600,那么这个全连接神经网络将有28x28x600+600=471000个参数。这还仅仅是最简单的数据集,如果是其他的复杂的数据集参数量会更加迅速的膨胀。过多的参数有两方面的坏处,一是计算会严重减慢;另外一个就是非常容易过拟合。所以需要一个更加合理的神经网路结构来有效的减少参数数量,同时保持原始数据的特征,进行抽象。
2 平移不变原理
图片数字化的传统方式我们简化一下,就类似下图的过程:
假如图像中有一个圆形,那么基于圆形的位置的不同就会产生完全不同的数据表征。但是从视觉的角度来看,图像的内容(本质)并没有发生变化,只是位置发生了变化,这就产生了一个矛盾。
所以当我们移动图像中的物体,用传统的方式得出来的数据表征会差异很大!无法满足也不符合图像处理的要求的。
而 CNN 解决了这个问题,他用类似视觉的方式保留了图像的特征,当图像做翻转,旋转或者变换位置时,它也能有效的识别出来是类似的图像。
3 模型结构灵感
深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。
1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”,可视皮层是分级的。
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:
对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:
我们可以看到,在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。
那么我们可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?
答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。
二 卷积神经网络CNN
对于神经网络来说,相信大家都比较熟悉全连接神经网络,那么卷积神经网络CNN与全连接神经网络相比有什么不同呢,又是为什么有这些不同呢?后续的内容将会为大家娓娓道来。
1 CNN网络结构特点
对于神经网络,针对神经元不同的连接方式,有几种经典的网络类型:全连接神经网络、卷积神经网络与循环神经网络等等。
全连接神经网络:
- 神经元分层布局;
- 相邻层与层之间的神经元之间均有连接;
- 相同层之间的神经元之间没有连接;
- 参数非共享;