卷积神经网络之LeNet-5

LeNet-5出自论文Gradient-Based Learning Applied to Document Recognition,是一种用于手写体字符识别的非常高效的卷积神经网络.
LeNet5 这个网络虽然很小,但是它包含了深度学习的基本模块:卷积层,池化层,全链接层。是其他深度学习模型的基础.
卷积神经网络之LeNet-5
LeNet-5共有7层,不包含输入,每层都包含可训练参数;每个层有多个Feature Map,每个FeatureMap 通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元
各层参数详解:
1.Input 层-输入层
  首先是数据INPUT层,输入图像的尺寸同一归一化为3232
  注意:本层不算LeNet-5的网络结构,传统上,不将输入层视为网络层次结构之一。
2.C1层-卷积层
  输入图片: 32
32
  卷积核大小:55
  卷积核种类(个数):6
  输出featuremap大小:28
28(32-5+1)=28
  神经元数量:28286
  可训练参数:(55+1)6(每个滤波器55=25个unit参数和一个bias参数,一共6个滤波器)
  可连接数:(5
5+1)62828=122304
详细说明:对输入图像进行第一次卷积运算(使用 6 个大小为 5
5 的卷积核),得到6个C1特征图(6个大小为2828的 feature maps, 32-5+1=28)。我们再来看看需要多少个参数,卷积核的大小为55,总共就有6*(55+1)=156个参数,其中+1是表示一个核有一个bias。对于卷积层C1,C1内的每个像素都与输入图像中的55个像素和1个bias有连接,所以总共有1562828=122304个连接(connection)。有122304个连接,但是我们只需要学习156个参数,主要是通过权值共享实现的。
卷积使得神经网络可以共享权值,一方面减少了参数,另一方面可以学习图像不同位置的局部特征
3.S2层-池化层(下采样层)
  输入:2828
  采样区域:2
2
  采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。
  采样种类:6
  输出featureMap大小:1414(28/2)
  神经元数量:14
146
  连接数:(2
2+1)61414
  S2中每个特征图的大小是C1中特征图大小的1/4
详细说明:第一次卷积之后紧接着就是池化运算,使用 2
2核 进行池化,于是得到了S2,6个1414的 特征图(28/2=14)。S2这个pooling层是对C1中的22区域内的像素求和乘以一个权值系数再加上一个偏置,然后将这个结果再做一次映射。同时有5x14x14x6=5880个连接。
引入下采样是因为图像特征的相对位置比其精确位置更重要,而后来的网络更多采用最大池化。
4.C3层-卷积层
  输入:S2中所有6个或者几个特征map组合
  卷积核大小: 55
  卷积核种类: 16
  输出featureMap大小:10
10(14-5+1)=10
  C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合
  存在的一个方式是:C3的前6个特征以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。
  则:可训练参宿和:6*(355+1)+6*(455+1)+3*(455+1)+1*(655+1)=1516(
每个卷积核的通道数不一样?前6个卷积核的通道数是3?

  连接数:10101516=151600
  详细说明:第一次池化之后是第二次卷积,第二次卷积的输出是C3,16个10x10的特征图,卷积核大小是55.我们知道S2有6个1414的特征图,怎么从6个特征图得到16个特征图了?这里是通过对S2的特征图特殊组合计算得到的16个特征图。具体如下:卷积神经网络之LeNet-5
C3的前6个feature map(对应上图第一个红框的6列)与S2层相连的4个feature map相连接(上图第二个红框),后面6个feature map与S2层相连的4个feature map相连接(上图第二个红框),后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。卷积核大小依然为55,所以总共有6(355+1)+6*(455+1)+3*(455+1)+1*(655+1)=1516个参数。而图像大小为1010,所以共有151600个连接。
卷积神经网络之LeNet-5
C3与S2中前3个图相连的卷积结构如下图所示:
卷积神经网络之LeNet-5
上图对应的参数为3
55+1,一共进行6次卷积得到6个特征图,所以有6(355+1)参数。为什么采用这样的组合?论文中说有两个原因:1)减少参数,2)这种不对称的组合连接的方式有利于提取更多组合特征。

5.S4层-池化层(下采样层)
  输入:1010
  采样区域:2
2
  采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
  采样种类:16
  输出fatureMap大小:55(10/2)
  神经元数量:5
516=400
  连接数:16
(22+1)55=2000
  S4中每个特征图的大小是C3中特征图大小的1/4
  详细说明:S4是pooling层,窗口大小仍然是2
2,共计16个feature map,C3层的16个10x10的图分别进行以2x2为单位的池化得到16个5x5的特征图。有5x5x5x16=2000个连接。连接的方式与S2层类似。
6.C5层-卷积层
  输入:S4层的全部16个单元特征map(与s4相连)
  卷积核大小:55
  卷积核种类:120
  输出featureMap大小:1
1(5-5+1)
  可训练参数/连接:120*(1655+1)=48120
  详细说明:C5层是一个卷积层。由于S4层的16个图的大小为5x5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1.这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x16+1)x120=48120个参数,同样有48120个连接。C5层的网络结构如下:卷积神经网络之LeNet-5
7.F6层-全连接层
  C5 120维向量
  计算方式:计算输入向量核权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出。
  可训练参数:84*(120+1)=10164
 详细说明:6层是全连接层。F6层有84个结点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。该层的训练参数和连接数是(120+1)x 84=10164.ASCII编码图如下:卷积神经网络之LeNet-5
F6层的连接方式如下:
卷积神经网络之LeNet-5
8.Output层-全连接层
Output层也是全连接层,共有10个节点,分别代表数字0和9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:
卷积神经网络之LeNet-5
上式wijw_{ij} 的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84x10=840个参数和连接。
卷积神经网络之LeNet-5
上图是LeNet-5识别数字3的过程。

总结

  • LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络
  • 卷积神经网络能够很好的利用图像的结构信息
  • 卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定。