LeNet5的深入解析

2019-05-26 12:16:07 浏览数 (1)

论文:Gradient-based-learning-applied-to-document-recognition

参考:http://blog.csdn.net/strint/article/details/44163869

LeNet5 这个网络虽然很小,但是它包含了深度学习的基本模块:卷积层,池化层,全链接层。是其他深度学习模型的基础, 这里我们对LeNet5进行深入分析,并由此看看 Caffe 中如何实现 LeNet5 的训练和测试。

下面首先上图,卷积网络的经典结构图 LeNet5

上图是 LeNet5整个网络结构体

上面的 LeNet5 网络:

输入: 首先 是 数据输入 INPUT 输入图像的尺寸归一化为32*32

C1层: 对输入图像进行第一次卷积运算(使用 6 个大小为 5*5 的卷积核),得到6个C1特征图(6个大小为28*28的 feature maps, 32-5 1=28)。我们再来看看需要多少个参数,卷积核的大小为5*5,总共就有6*(5*5 1)=156个参数,其中 1是表示一个核有一个bias。对于卷积层C1,C1内的每个像素都与输入图像中的5*5个像素和1个bias有连接,所以总共有156*28*28=122304个连接(connection)。有122304个连接,但是我们只需要学习156个参数,主要是通过权值共享实现的。

上图表示CNN中卷积操作。对卷积的要点解释: (1)红色框内为2*2卷积核。 (2)蓝色框内为3*4的输入图像。 (3)绿色框为3*3的特征图。 注意:绿框中未包含偏置项。如加入偏置项则每个输出多加上同一个偏置B,此时类似如:aw bx ey fz B bw cx fy gz B等。所谓的权值共享是每个卷积运算使用同一个卷积核,在上图中使用的是同一个卷积核,即共享权值。

卷积的优势: (1) sparse interactions (2) parameter sharing (3) equivariant respections sparse interactions: 下图是效果图。蓝色框中是全连接神经网络,红色框是卷积网络。

卷积相对于全连接是稀疏的。优势:1、参数更少 2、计算量降低。那么会不会导致提取的特征丢失了?

上图是多层结构的联系图,所以可以通过增加网络层数,保留全局的特征。

parameter sharing: 在上面已经分析完毕。优势:同样是减少了参数量。

equivariant respections: 当输入图像通过平移后,卷积的结果也会平移。

S2层: 第一次卷积之后紧接着就是池化运算,使用 2*2核 进行池化,于是得到了S2,6个14*14的 特征图(28/2=14)。S2这个pooling层是对C1中的2*2区域内的像素求和乘以一个权值系数再加上一个偏置,然后将这个结果再做一次映射。于是每个池化核有两个训练参数,所以共有2x6=12个训练参数,但是有5x14x14x6=5880个连接。

C3层: 第一次池化之后是第二次卷积,第二次卷积的输出是C3,16个10x10的特征图,卷积核大小是 5*5. 我们知道S2 有6个 14*14 的特征图,怎么从6 个特征图得到 16个特征图了? 这里是通过对S2 的特征图特殊组合计算得到的16个特征图。具体如下:

前6个feature map(对应上图第一个红框的6列)与S2层相连的3个feature map相连接(上图第一个红框),后面6个feature map与S2层相连的4个feature map相连接(上图第二个红框),,后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。卷积核大小依然为5*5,所以总共有6*(3*5*5 1) 6*(4*5*5 1) 3*(4*5*5 1) 1*(6*5*5 1)=1516个参数。而图像大小为10*10,所以共有151600个连接。 C3与S2中前3个图相连的卷积结构如下图所示:

上图对应的参数为 3*5*5 1,一共进行6次卷积得到6个特征图,所以有6*(3*5*5 1)参数。 为什么采用上述这样的组合了?论文中说有两个原因:1)减少参数,2)这种不对称的组合连接的方式有利于提取多种组合特征。

S4层: S4是pooling层,窗口大小仍然是2*2,共计16个feature map,C3层的16个10x10的图分别进行以2x2为单位的池化得到16个5x5的特征图。这一层有2x16共32个训练参数,5x5x5x16=2000个连接。连接的方式与S2层类似。

C5层: C5层是一个卷积层。由于S4层的16个图的大小为5x5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1。这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x16 1)x120 = 48120个参数,同样有48120个连接。C5层的网络结构如下:

F6层: F6层是全连接层。F6层有84个节点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。该层的训练参数和连接数是(120 1)x84=10164。ASCII编码图如下:

F6层的连接方式如下:

Output层:Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:

上式w_ij 的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84x10=840个参数和连接。

上图LeNet-5识别数字3的过程

0 人点赞