Gradient-Based Learning Applied to Document Recognition
本文主要以LeNet-5手写体字符识别卷积神经网络为例,详细介绍了卷积神经网络。
这是一篇98年发表的论文,用标准的全连接的多层神经网络能够作为分类器。但是存在以下问题:一、输入的标准图像太大,因此有太多的权系数需要训练,这要很大的计算能力并且需要非常大的训练集。存储器需要存储太多的权系数,这样会排除一些硬件应用(注意这是一篇98年的文章。。)。最主要的问题是,无结构化的图像和语言应用,它们内部没有构建关于转换和输入局部扭曲的不变性。为了学习由于输入归一化照成的多种不同单个字符的倾斜、位置变化等多种输入目标的变化。需要非常非常大的,覆盖各种空间位置变化的训练集。而在后面的卷积神经网络,移动不变性是通过强制复制权重在整个空间中自动获得的。二、完全忽略了输入的图谱结构(这感觉 没咋理解)。如果输入为时间频率的语言或者图像,这都有强的局部2D结构。空间或暂时在附近的变量有很强的局部相关性。而这正是众所周知的在识别空间或者暂时的目标之前提取或结合局部特征的优势。而在卷积神经网络通过限制隐藏层单元的感受野而使它提取局部特征。
输入为32x32的图像,这比常规测量的字符更大(如在高清视频中的数字,大概测量也就20x20),放大输入的目的是为了,原始输入的诸如笔画、终点、拐角等比较独特的特性,能出现在高层的特征检测器的感受野的中心。
为了加速学习过程,归一化使输入的背景值为-0.1,前景值为1.175。这使得输入的均值大概为0,方差大致为1。
卷积层:
可训练参数 = 层数 x 模板大小 + 偏差 {一般而言 偏差个数 = 层数}
连接个数 = 每层实际输入个数{即为下一层的大小} x [层数 x 感受野大小 + 偏差]
二次抽样层:
可训练参数 = 层数 x 1{一层其实就一个可调系数} + 偏差 {一般而言 偏差个数 = 层数}
连接个数 = 每层实际输入个数(即为下一层的大小) x [层数 x 感受野大小 + 偏差]
C1是一个有6个特征图谱的卷积层,特征图谱中的每一个单元都连接输入当中5x5大小的邻域。所以每个特征图谱大小为28x28。C1有156个可训练的参数和122304个连接。
156 = 6 x (5 x 5) + 6
122304 = 28 x 28 x [6 x (5 x 5) + 6]
S2是一个二次抽样层,有6个特征图谱,每个特征图谱大小为14x14。每个单元连接C1层中对应的一个大小为2x2的领域。
邻域中4个输入相加后乘以1个可训练的参数,然后加上一个可训练的偏差。结果经过一个sigmoid函数。result = sigmoid[系数 x (x
1+x
2+x
3+x
4)+bias]。2x2的感受野是不重叠的。因此S2中的特征图谱的行列大小都为C1中特征图谱大小的一半。S2中有12个可训练参数和5880个连接。
12 = 6 x 1 + 6
5880 = 14 x 14 x [6 x (2 x 2) + 6]
C3是一个有16个特征图谱的卷积层。特征图谱中的每一个单元都和S2层若干个特诊图谱中相同位置的子集相连。S2特征图谱并没有和C3特征图谱每个相连。原因是:一、一个不完全的连接使连接的总数在一个合理的范围内。二、更重要的是,它打破的网络的对称性。不通的特征图谱由于不同的特征输入,被迫提取不同的特征。如上表,前6个C3特征图谱,以S2中每连续的3个特征图谱作为输入。接下来6个特征图谱,以每4个连续的子集作为输入。接下来3个,以不连续的4个子集作为输入。最后一个,用S2的全部特征图谱作为输入。C3有1516个可训练的参数和151600个连接。
由于这层并不是对称连接,所以和最开始写的计算公式不一致。
1516 = (6 x 3 + 6 x 4 + 3 x 4 +1 x 6)x (5 x 5)+ 16
151600 = 10 x 10 x [(6 x 3 + 6 x 4 + 3 x 4 +1 x 6)x (5 x 5)+ 16]
S4为一个二次抽样层,有16个大小为5 x 5的特征图谱。特征图谱中的每一个单元和C3中对应区域2 x 2的领域相连。这与C1和S2的连接方式类似。S4层有32个可训练的参数和2000个连接。
32 = 16 x 1 + 16
2000 = 5 x 5 x [16 x (2 x 2)+ 16]
C5是一个卷积层有120个特征图谱。每一个单元和S4中的16个特征图谱的5 x 5的邻域都相连。因为S4的大小为5 x 5,所以C5特征图谱的大小是 1 x 1。相当于S4和C5之间的全连接,但C5被标为卷积层。C5有48120个可训练的连接(全连接可训练参数和连接个数相同)。
48120 = 120 x (5 x 5)x 16 + 120
F6有84个单元(这个数字是用来设计方便输出的),F6层和C5层全连接,有10164个可训练的参数。
10164 = 84 x 120 + 84
如上图的整个网络有340908个连接和60000可训练的参数。
C1 S2 C3 S4 C5 F6 OUTPUT
60000 = +156 +12 +1516 +32 +48120 +10164
340908 = +122304 +5880 +151600 +2000 +48120 +10164 +840