(9)、训练结束,将权值和阈值保存在文件中。这时可以认为各个权值已经达到稳定,分类器已经形成。再一次进行训练,直接从文件导出权值和阈值进行训练,不需要进行初始化。
四、卷积神经网络LeNet-5结构分析
CNN是一种带有卷积结构的深度神经网络,通常至少有两个非线性可训练的卷积层,两个非线性的固定卷积层(又叫Pooling Layer或降采样层)和一个全连接层,一共至少5个隐含层。
CNN的结构受到著名的Hubel-Wiesel生物视觉模型的启发,尤其是模拟视觉皮层V1和V2层中Simple Cell和Complex Cell的行为。
LeNet-5手写数字识别结构(上图)分析:
1. 输入层:N个32*32的训练样本
输入图像为32*32大小。这要比Mnist数据库中最大的字母还大。这样做的原因是希望潜在的明显特征如笔画断点或角点能够出现在最高层特征监测子感受野的中心。
2. C1层:
输入图片大小: 32*32
卷积窗大小: 5*5
卷积窗种类: 6
输出特征图数量: 6
输出特征图大小: 28*28 (32-5+1)
神经元数量: 4707 (28*28)*6)
连接数: 122304 (28*28*5*5*6)+(28*28*6)
可训练参数: 156 5*5*6+6
用6个5&TImes;5的过滤器进行卷积,结果是在卷积层C1中,得到6张特征图,特征图的每个神经元与输入图片中的5&TImes;5的邻域相连,即用5&TImes;5的卷积核去卷积输入层,由卷积运算可得C1层输出的特征图大小为(32-5+1)×(32-5+1)=28×28。
3. S2层:
输入图片大小: (28*28)*6
卷积窗大小: 2*2
卷积窗种类: 6
输出下采样图数量:6
输出下采样图大小:14*14 (28/2)*(28/2)
神经元数量: 1176 (14*14)*6
连接数: 5880 2*2*14*14*6+14*14*6
可训练参数: 12 1*6+6
卷积和子采样过程:
(1)、卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。
卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强,并且降低噪音。
(2)、子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。
利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息。
卷积之后进行子抽样的思想是受到动物视觉系统中的“简单的”细胞后面跟着“复杂的”细胞的想法的启发而产生的。
降采样后,降采样层S2的输出特征图大小为(28÷2)×(28÷2)=14×14。
S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数计算。可训练系数和偏置控制着sigmoid函数的非线性程度。如果系数比较小,那么运算近似于线性运算,下采样相当于模糊图像。如果系数比较大,根据偏置的大小下采样可以被看成是有噪声的“或”运算或者有噪声的“与”运算。每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。
从一个平面到下一个平面的映射可以看作是作卷积运算,S-层可看作是模糊滤波器,起到二次特征提取的作用。隐层与隐层之间空间分辨率递减,而每层所含的平面数递增,这样可用于检测更多的特征信息。
4. C3层:
输入图片大小: (14*14)*6
卷积窗大小: 5*5
卷积窗种类: 16
输出特征图数量: 16
输出特征图大小: 10*10 (14-5+1)
神经元数量: 1600 (10*10)*16)
连接数: 151600 1516*10*10
可训练参数: 1516 6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+1*(6*25+1)