深度学习:LeNet-5学习

来源:互联网 发布:2017 淘宝 我的空间 编辑:程序博客网 时间:2024/06/05 17:02

本人CV小硕一枚,近期开始写博客记录自己的机器视觉学习之路,一来对自己所学加以纪录做到温故而知新,二来也能为初学者提供学习的一些资源。所写内容若有不妥之处,还请各位看官指正~

最近阅读了Yann LeCun的论文‘Gradient-Based Learning Applied to Document Recognition‘,文章中描述到传统的对于手写字体的识别主要分为两大模块:一、特征提取模块,需要设计特征提取器,来进行特征的提取;二、使用提取的结果进行分类,针对每一个类别产生score,选取score高的分类结果作为最后输出;流程如下:
传统的识别手写字体的流程

而Yann LeCun在文中提出使用7层(不包含输入)卷机神经网络来进行手写字母的识别(单独的字母),feature由网络自身自学习得到,不再手工设计,体现了深度学习的自学习性,以下为网络的结构图:
Lenet-5结构

接下来依次对每一层进行学习:

C1层:C1层为卷积层,由6个feature map构成,会自学习得到六种不同的卷积核。C1层通过对输入图像进行卷积操作得到(6个卷积核故得到6幅图像),卷积操作(不了解卷积操作可以参考http://www.36dsj.com/archives/24006),可以有效的使原信号特征增强,并降低噪音。输入为32*32大小的手写字体图像,特征图中每个神经元和输入5*5区域相连,因此特征图大小为28*28(32-5+1=28),训练的参数总数为156个((5*5+1)*6=156,每个feature map有5*5的卷积核参数以及一个bias参数),总连接数为122304个(156*28*28=122304)。

S2层:是一个sub-sampling层,可译为下采样层,共有6个feature map,每个map中的神经元和对应C1层特征图中相应位置的2*2的区域相连接(注意这里不再是领域),因此经过下采样操作S2层中的feature map大小为14*14(28/2=14),对于每个神经元2*2的输入,首先对这四个输入进行累加,然后乘以可训练参数,最后加上一个bias参数,通过sigmoid激活函数得到对应神经元的结果,在此层,训练参数为12个(2*6=12),总连接数为5880个((2*2+1)*14*14*6=5880)。

C3层:C3层也为卷积层,共有16个10*10大小的feature map,通过对6个14*14feature map卷积操作得到,在文中,作者通过对S2层中6个特征图的不同组合来进行卷积操作,组合情况如下:
组合

横向编号表示生成的C3层特征图编号,纵向表示S2层特征突编号,以第一列为例,C3层0号特征图的生成是通过对S2层0、1以及2号特征图做卷积操作得到的,具体的计算没看到论文中有给出,我的理解如下(还请知道的同学指正哈):还以第一列为例,分别为S2层0,1,2图相应的5*5区域进行卷积操作,得到的结果再累加,最后加上bias参数,使用sigmoid激活函数得到相应C3层神经元。因此,总训练参数为1516个(6*(5*5*3+1)+9*(5*5*4+1)+(5*5*6+1)=1516),总连接数为151600个(1516*10*10);

S4层是一个下采样层,具体操作与S2层类似,16个5*5的feature map组成,总训练参数为32个(2*16=32),总连接数为2000个((2*2+1)*5*5*16=2000);

C5层为卷积层,共有120个1*1的特征图,每个特征图与S4层中16个特征图全连),由于S4层特征图大小5*5,滤波器大小也为5*5,故产生的特征图大小为1*1,共有120个(若卷积核大小不为5*5,则此层不再是全连接,故在文中仍将此层称为卷积层),训练参数总数为48120个((5*5*16+1)*120=48120),总连接数也为48120个(因为feature map大小1*1);

F6层为全连接层,与C5层全连接,共有84个单元(论文中提到选择84个单元主要为对于输出层的考虑),训练参数为10164个(84*(120+1)),连接也为10164个;

最后是output层,共有10个单元,刚好对应了0-9十个数字,由欧式径向基函数(RBF)构成,具体的计算公式为:
RBF
输入离参数越远,RBF函数输出越大。

网络参数拟合通过backpropogation进行,训练过程为先对初始网络参数赋值,然后对训练图片进行输入,依次由C1至output layer得到输出,与标准输出进行比较,计算差值,通过BP更新公式由后至前进行参数更新。若为累积BP方式,则每一轮后进行参数更新,并计算误差,若误差满足,则完成训练,否则继续训练;若为标准BP方式,则每一个样本过后均进行参数更新,并进行误差计算,若满足则停止训练。

1 0
原创粉丝点击