CNN学习(二)-LeNet网络结构的学习

LeNet简介

LeNet神经网络由深度学习三巨头之一的Yan LeCun提出,他同时也是卷积神经网络 (CNN,Convolutional Neural Networks)之父。LeNet主要用来进行手写字符的识别与分类,并在美国的银行中投入了使用。LeNet的实现确立了CNN的结构,现在神经网络中的许多内容在LeNet的网络结构中都能看到,例如卷积层、池化层。虽然LeNet早在20世纪90年代就已经提出了,但由于当时缺乏大规模的训练数据,计算机硬件的性能也较低,因此LeNet神经网络在处理复杂问题时效果并不理想。LeNet网络结构比较简单,刚好适合神经网络的入门学习。
CNN学习(二)-LeNet网络结构的学习
图1.LeNet5 网络结构
如图1 所示,LeNet的全局结构

LeNet各层介绍

除去输入层,LeNet包含7层,每一层都有待训练的参数。输入是32x32像素的灰度图。
接下来,卷积层标注为Cx,池化取样层标注为Sx,全连接层标注为Fx,其中x是层的序号。

C1层

CNN学习(二)-LeNet网络结构的学习

C1层是卷积层,包含6个特征图,每个特征图上的每一个元素与输入图像的5x5局部图像相连接。特征图的大小为28x28,这是忽略了边界的卷积后大小,因为28=32-(5/2)x2 (整数除法)。一共的连接数为:28x28x(5x5+1)x6=122304.但是因为是使用权值共享,所以需要训练的参数个数为:6x(5x5+1)=156

S2层

CNN学习(二)-LeNet网络结构的学习
S2是取样层,与S1一样包含6个特征图,每个特征图大小为14x14。S2的每个特征图上的每个元素与S1对应特征图的某个2x2邻域相关联。来着S1的四个元素先相加,然后乘以某个参数W,再加上偏置b,最后的结果再输入sigmoid函数计算,其返回值就是S2里面的值。2x2窗口在移动过程中是不重叠的。

S1与S2共:14x14x6x(2x2+1)=5880个连接,其中需要训练的参数有6x2=12个。

C3层

CNN学习(二)-LeNet网络结构的学习
C3层是一个卷积层,它有16个特征图,每个特征图都与S2若干个特征图集上的相应位置的5x5邻域发生关系。
下图表示了这个选择关系:
CNN学习(二)-LeNet网络结构的学习
例如C3里面的第9张特征图 是由S2中的第0,3,4,5共四张特征图上的那些5x5邻域卷积而成,其中的卷积就有5x5x4+1个参数待训练。
S2与C3其中待训练的参数有:16+(5x5)x(3x6+4x9+6x1)=1516

S4层

CNN学习(二)-LeNet网络结构的学习
S4采样层,对C3的结果进行采样,与C2类似的做法。S4的特征图有16个,每个特征图5x5,图里每个元素是取自C3的2x2邻域。其*有16x(2x2+1)=80个(??与论文不一致)可训练参数

C5

CNN学习(二)-LeNet网络结构的学习

C5也是一个卷积层,C5有120个特征图,每个图的大小为1x1。C5的每个图都与S4的所有5x5的邻域发生关系,C5的每个元素都与S4的所有元素有关。因此C5其实是一个全连接的层。其中有120x(5x5x16+1)=48120个可训练的参数

S6与OUTPUT

最后两层使用RBF进行多类分类。