卷积神经网络 CNN 原理——结合实例 matlab 实现
卷积神经网络 CNN 是深度学习的一个重要组成部分,由于其优异的学习性能(尤其是
对图片的识别)。近年来研究异常火爆,出现了很多模型 LeNet、Alex net、ZF net 等等。由
于大多高校在校生使用 matlab 比较多,而网上的教程代码基本都基于 caffe 框架或者 python,
对于新入门的同学来说甚是煎熬,所以本文采用 matlab 结合 MNIst 手写数据库完成对手写
数字的识别。本人水平有限,如有纰漏,还望各路大神,帮忙指正。
一、卷积网络原理
1、动机
卷积神经网络(CNN)是多层感知机(MLP)的一个变种模型,它是从生物学概念中演
化而来的。从 Hubel 和 Wiesel 早期对猫的视觉皮层的研究工作,我们知道在视觉皮层存在
一种细胞的复杂分布,,这些细胞对于外界的输入局部是很敏感的,它们被称为“感受野”
(细胞),它们以某种方法来覆盖整个视觉域。这些细胞就像一些滤波器一样,它们对输入
的图像是局部敏感的,因此能够更好地挖掘出自然图像中的目标的空间关系信息。
此外,视觉皮层存在两类相关的细胞,S 细胞(Simple Cell)和 C(Complex Cell)细胞。
S 细胞在自身的感受野内最大限度地对图像中类似边缘模式的刺激做出响应,而 C 细胞具有
更大的感受野,它可以对图像中产生刺激的模式的空间位置进行精准地定位。
视觉皮层作为目前已知的最为强大的视觉系统,广受关注。学术领域出现了很多基于它
的神经启发式模型。比如:NeoCognitron [Fukushima], HMAX [Serre07] 以及本教程要讨论的
重点 LeNet-5 [LeCun98]。
2、稀疏连接
CNNs 通过加强神经网络中相邻层之间节点的局部连接模式(Local Connectivity Pattern)
来挖掘自然图像(中的兴趣目标)的空间局部关联信息。第 m 层隐层的节点与第 m-1 层的
节点的局部子集,并具有空间连续视觉感受野的节点(就是 m-1 层节点中的一部分,这部
分节点在 m-1 层都是相邻的)相连。可以用下面的图来表示这种连接。