LeNet-5: Gradient-Based Learning Applied to Document Recognitionm

参考网址:

1、https://blog.****.net/zouxy09/article/details/8781543

2、https://blog.****.net/kaido0/article/details/53161684

3、https://blog.****.net/qianqing13579/article/details/71076261

一、关于LeNet-5

一种典型的用来识别数字的卷积网络是LeNet-5(效果和paper等见这。当年美国大多数银行就是用它来识别支票上面的手写数字的。能够达到这种商用的地步,它的准确性可想而知。毕竟目前学术界和工业界的结合是最受争议的。

LeNet-5: Gradient-Based Learning Applied to Document Recognitionm

LeNet-5: Gradient-Based Learning Applied to Document Recognitionm

      LeNet-5是最早的深度卷积神经网络之一,并且推动了深度学习的发展。从1988年开始,在多次成功的迭代后,这项由Yann Lecun完成的开拓性成果被命名为LeNet-5。LeCun认为,可训练参数的卷积层是一种用少量参数在图像的多个位置上提取相似特征的有效方式,这和直接把每个像素作为多层神经网络的输入不同。像素不应该被使用在输入层,因为图像具有很强的空间相关性,而使用图像中独立的像素直接作为输入则利用不到这些相关性。

Lenet5特性:

  • 每个卷积层包含三个部分:卷积、池化和非线性**函数
  • 使用卷积提取空间特征
  • 降采样的平均池化层
  • 双曲正切或S型的**函数
  • MLP作为最后的分类器
  • 层与层之间的稀疏连接减少计算复杂度

二、网络架构:

  LeNet-5中的诸多特性现在依然在state-of-the-art卷积神经网络中使用,是奠定了现代卷积神经网络的基石之作。

LeNet-5: Gradient-Based Learning Applied to Document Recognitionm

       LeNet-5共有7层,不包含输入,每层都包含可训练参数(连接权重)。输入图像为32*32大小。这要比Mnist数据库(一个公认的手写数据库)中最大的字母还大。这样做的原因是希望潜在的明显特征如笔画断电或角点能够出现在最高层特征监测子感受野的中心。

       我们先要明确一点:每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元。

 C1层是卷积层卷积运算一个重要的特点是通过卷积运算,可以使原信号特征增强,并且降低噪音),由6个特征图Feature Map构成。特征图中每个神经元与输入中5*5的邻域相连。每个卷积核与原始的输入图像进行卷积,这样特征图的大小为(32-5+1)*(32-5+1)= 28*28,这样能防止输入的连接掉到边界之外(是为了BP反馈时的计算,不致梯度损失,个人见解)。C1有156个训练参数(每个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器,共(5*5+1)*6=156个参数),共(5*5+1)*(28*28)*6=122,304个连接

S2层是降采样层(为什么是下采样?利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息),是池化或特征映射的过程,有6个14*14的特征图。每个feature map中的隐单元与上一层C1中相对应特征图的2*2邻域相连接。

      具体计算过程S2层每个2*2单元的4个值相加,然后乘以训练参数w,再加上一个偏置参数b,结果通过sigmoid函数**作为对应该单元的值。可训练系数和偏置控制着sigmoid函数的非线性程度。如果系数比较小,那么运算近似于线性运算,亚采样相当于模糊图像。如果系数比较大,根据偏置的大小亚采样可以被看成是有噪声的“或”运算或者有噪声的“与”运算)每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层需要2*6=12个参数(4+1)*14*14*6=5880个连接数

LeNet-5: Gradient-Based Learning Applied to Document Recognitionm

图:卷积和子采样过程  卷积过程包括:用滤波器fx去卷积输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid**函数,产生一个大概缩小四倍的特征映射图Sx+1

       所以从一个平面到下一个平面的映射可以看作是作卷积运算,S-层可看作是模糊滤波器,起到二次特征提取的作用。隐层与隐层之间空间分辨率递减,而每层所含的平面数递增,这样可用于检测更多的特征信息。

C3层是卷积层同样通过5x5模板大小的卷积核去卷积层S2,然后得到的每个feature map的大小为(14-5+1)*(14-5+1)=10x10,但是有16种不同的卷积核,所以就存在16个特征map。

      需要注意的一点:C3并不是与S2全连接而是部分连接,即C3中的每个feature map与上一层S2中的所有(6个)或者部分feature map相连接,表示本层的feature map是上一层提取到的feature map的不同组合。下表给出了16个feature maps与上一层S2的连接方式(行为S2层feature map的标号,列为C3层feature map的标号,第一列表示C3层的第0个feature map只有S2层的第0、1和2这三个feature maps相连接)。

      为什么要采用部分连接,而不采用全连接呢?首先就是部分连接可计算的参数就会比较少,其次更重要的是它能打破对称性,这样就能得到输入的不同特征集合。以第0个feature map描述计算过程:用1个卷积核(对应3个卷积模板,但仍称为一个卷积核,可以认为是三维卷积核)分别与S2层的3个feature maps进行卷积,然后将卷积的结果相加,再加上一个偏置,再取sigmoid就可以得出对应的feature map需要的参数数目为(5×5×3+1)×6 +(5×5×4+1)×9 +5×5×6+1 = 1516(5×5为卷积参数,卷积核分别有 3 4 6 个卷积模板),连接数为1516*10*10= 151600

LeNet-5: Gradient-Based Learning Applied to Document Recognitionm

S4层是降采样层,由16个5*5大小的feature map构成。特征图中的每个单元与C3中相应特征图的2*2邻域相连接,跟C1和S2之间的连接一样。S4层有16*2=32个训练参数(每个特征图1个因子和一个偏置)和(4+1)*5*5*16=2000个连接

C5层是卷积层有120个卷积核,卷积核的大小仍为5×5,因此有120个feature maps,每个feature map的大小都与上一层S4的所有feature maps进行连接,这样一个卷积核就有16个卷积模板,故C5 feature map的大小为(5-5+1)*(5-5+1)=1*1,这构成了S4和C5之间的全连接。之所以仍将C5标为卷积层而非全连接层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1*1大。C5层有120*(5*5*16+1)=48120个连接/参数

F6层有84个神经单元,每个神经单元与C5层进行全连接。有84*(120+1)=10164个可参数/连接数。如经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。

输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。一个RBF输出可以被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。用概率术语来说,RBF输出可以被理解为F6层配置空间的高斯分布的负log-likelihood。给定一个输入模式,损失函数应能使得F6的配置与RBF参数向量(即模式的期望分类)足够接近。这些单元的参数是人工选取并保持固定的(至少初始时候如此)。这些参数向量的成分被设为-1或1。虽然这些参数可以以-1和1等概率的方式任选,或者构成一个纠错码,但是被设计成一个相应字符类的7*12大小(即84)的格式化图片。这种表示对识别单独的数字不是很有用,但是对识别可打印ASCII集中的字符串很有用。

       使用这种分布编码而非更常用的“1 of N”编码用于产生输出的另一个原因是,当类别比较大的时候,非分布编码的效果比较差。原因是大多数时间非分布编码的输出必须为0。这使得用sigmoid单元很难实现。另一个原因是分类器不仅用于识别字母,也用于拒绝非字母。使用分布编码的RBF更适合该目标。因为与sigmoid不同,他们在输入空间的较好限制的区域内兴奋,而非典型模式更容易落到外边。

        RBF参数向量起着F6层目标向量的角色。需要指出这些向量的成分是+1或-1,这正好在F6 sigmoid的范围内,因此可以防止sigmoid函数饱和。实际上,+1和-1是sigmoid函数的最大弯曲的点处。这使得F6单元运行在最大非线性范围内。必须避免sigmoid函数的饱和,因为这将会导致损失函数较慢的收敛和病态问题。