论文部分内容阅读
摘要:随着科学技术的高速发展,在统计报表、邮政编码、银行票据等需要处理大量字符信息录入的场所,手写体数字识别系统的需求越来越大,怎样将数字便捷地输入到计算机中已经是计算技术普及的关键问题。此文论述并设计实现了一个手写体数字识别系统。所用的算法是卷积神经网络算法,它也是人工神经网络之中的一个种类,它是人工神经网络与深度学习两种技术相结合后产生的一种全新的更加快速的网络。
关键词:手写数字识别;卷积神经网络;应用
手写体数字识别在邮政、金融等领域应用广泛。对于数字识别,人们往往要求识别器有很高的识别可靠性,数字识别的错误所带来的影响比文字识别等其他识别所带来的影响更大,特别是有关金融方面的数字识别错误所带来的后果是无法想象的,识别错一个数字,这其中的差距可能是几的差距,也可能是几十、几百的差距,这些都还是小问题;但更有可能这一个数字代表的差距是几万、几千万甚至几亿乃至更多,那么这个错误造成的损失就无法估量了。因此,設计出有着高可靠性与高识别率的数字识别系统已经成为了字符识别领域一个非常重要的环节。
1 网络模型和数据库及学习算法的选择
1.1 关于Mnist数据库的介绍
首先,Mnist是NIST数据库的一个优化子集。它是一个有着60000个训练样本集与10000个测试样本集的手写体数字数据库。此数字库一共有4个文件。
此数字库的所有样本集都有图像文件以及标签文件。标签文件的作用是用来储存样本集中的每个样本的数值标签,而每一个样本的图像数据信息则是由图像文件存储着。此数据库的图像数据均保存在二进制文件之中,且每个样本图像的大小均为28*28。
1.2 数字识别的模型选择
手写体数字虽然只有0~9十个数字,但由于写法因人而异,不同地域同样一个数字有多种不同的写法,每个人都有自己的书写习惯。且一些纸质差异、笔画粗细、光线问题、位置、尺度大小等等多种因素都能对输入产生影响。考虑到这些因素,为让网络有良好的识别能力,我们这里采用在图像识别领域有着优秀表现的卷积神经网络作为此数字识别系统的训练模型。
1.3 学习算法的选择
一个优秀的网络模型必须具备良好的学习算法,每个学习网络都有着相对来说较为合适自己的学习算法,而并不是说越高端的算法就越好。在此文中,我选择的学习算法是较为成熟的BP算法。此算法在文字前面有些许介绍,此处不再多做说明。
2 基于卷积神经网络的数字识别系统的设计
2.1 输入层以及输出层设定
根据样本的特征与此网络的网络结构,可以大概判断出输入层与输出层该如何设置。隐含层的个数可以是一个,也可以是多个,这与要分类的问题有关。
前文提及到在mnist数据库中,所有的图像都是28*28大小的,且以整个图片的像素形式存储在数据文件之中。每张图像大小为28*28,故一个图片像素点个数为784个。这里,卷积神经网络的输入即为这784个像素点。
因为数字识别需要识别的是0~9这十个数字,即需要识别十种字符类别,所以将这个神经网络输出层的神经元节点数设置为10。
2.2 网络的中间层设置
卷积神经网络的中间层有两个部分,即卷积层(特征提取层)与下采样层(特征映射层),由第二章中图2-1所示,C1、C3为卷积层,S2、S4为降采样层。
1)激活函数选择
激活函数选择sigmoid函数。同样,在第二章有所提及。Sigmoid函数是严格递增函数,能较好的平衡线性与非线性之间的行为,比较贴近生物神经元的工作。相比于其他函数,sigmoid函数还存在着许多优势,比如光滑性、鲁棒性以及它的导数可以用它自身来表示。
sigmoid函数为:
(1)
其中,x为神经元净输入。
激活函数导数为:
(2)
2)卷积层设计
图像经过卷积核对特征图进行卷积,之后再经过sigmoid函数处理在卷积层得到特征映射图。特征映射图相比于原图像,其特征更为明显突出。
卷积运算其实就是一个加权求和的过程。离散卷积是本文所选取的方法,规定卷积核在水平和竖直两个方向每次都是移动一个像素,即卷积的步长为1。
3)下采样层的设计
根据图像局部相关性这一原理,为了降低网络的学习维度、减少需要处理的数据量且保留图像的有用信息,可以对卷积后的图像进行下采样。这里,我们采取的是取卷积层4个像素点平均值为下采样层的一个像素点的方法。这样可以降低网络规模。
2.3 网络总体结构CNN-0
根据LeNet-5结构,再结合上文中的对输入层、输出层、中间层的设计,完成了如图3-1所示的基本网络结构:
相比于LeNet-5,CNN-0做了一些修改,并非完全按照LeNet-5网络结构模型。Sigmoid函数是本网络中的激活函数,选择这个函数的好处在于可以让所有层得到的输出都在区间[-1,1]之内。网络训练的学习率固定值为1或者是衰减的学习速率。经过卷积后的一维向量与输出层没有沿用LeNet-5的径向基函数网络,而是采取全连接方式,省去了F6层。
3.3 卷积神经网络训练过程
在模式识别中,学习网络有无指导学习网络与有指导学习网络两个类别。无指导学习网络一般是用来进行聚类分析,本文采取的是有指导学习网络。
卷积神经网络其实就是从输入到输出的一种映射,它可以学习大量的映射关系,只需要用现有的模式对网络进行训练,网络就能具备映射能力。而不需要输入与输出之间的精确的关系。
训练算法与传统的BP算法相差无几(BP算法在第二章有做概述),主要可分为四个步骤,而这四个步骤可以归为向前传播阶段与向后传播阶段:相前传播:
1)随机的从样本集中获取一个样本(A, ),然后将A输入至网络中;
2)根据公式(3)计算出实际输出:
(3)
向后传播:
1)计算和理想输出之间的差;
2)根据极小化误差方法调整权值矩阵。
结语
在手写数字识别这一块,相对来说比较有难度的应该就是脱机自由手写字符识别了,不过本文所研究的并不是這一系统,本设计是一个基于卷积神经网络的手写数字识别系统,因卷积神经网络的局部感受野和降采样以及权值共享、隐性特征提取等优点,它在图像识别领域得到了非常广泛的应用。此程序是在Caffe这个框架上进行运行的,操作系统为Linux系统ubuntu14.04版本。Caffe是一个开源的深度学习框架,也可以说是一个编程框架或者模板框架,它提供一套编程机制。因此,本文所需要实际的卷积神经网络就可以根据这个框架来进行构建。
参考文献:
[1]张伟,王克俭,秦臻.基于神经网络的数字识别的研究[J].微电子学与计算,2006年第23卷第8期.
[2]国刚,王毅.应用BP神经网络进行手写体字母数字识别[J].电脑知识与技术,2008.
[3]王鹏.基于神经网络的手写体字符识别[D]:[硕士学位论文].北京:北京工业大学,2002.
关键词:手写数字识别;卷积神经网络;应用
手写体数字识别在邮政、金融等领域应用广泛。对于数字识别,人们往往要求识别器有很高的识别可靠性,数字识别的错误所带来的影响比文字识别等其他识别所带来的影响更大,特别是有关金融方面的数字识别错误所带来的后果是无法想象的,识别错一个数字,这其中的差距可能是几的差距,也可能是几十、几百的差距,这些都还是小问题;但更有可能这一个数字代表的差距是几万、几千万甚至几亿乃至更多,那么这个错误造成的损失就无法估量了。因此,設计出有着高可靠性与高识别率的数字识别系统已经成为了字符识别领域一个非常重要的环节。
1 网络模型和数据库及学习算法的选择
1.1 关于Mnist数据库的介绍
首先,Mnist是NIST数据库的一个优化子集。它是一个有着60000个训练样本集与10000个测试样本集的手写体数字数据库。此数字库一共有4个文件。
此数字库的所有样本集都有图像文件以及标签文件。标签文件的作用是用来储存样本集中的每个样本的数值标签,而每一个样本的图像数据信息则是由图像文件存储着。此数据库的图像数据均保存在二进制文件之中,且每个样本图像的大小均为28*28。
1.2 数字识别的模型选择
手写体数字虽然只有0~9十个数字,但由于写法因人而异,不同地域同样一个数字有多种不同的写法,每个人都有自己的书写习惯。且一些纸质差异、笔画粗细、光线问题、位置、尺度大小等等多种因素都能对输入产生影响。考虑到这些因素,为让网络有良好的识别能力,我们这里采用在图像识别领域有着优秀表现的卷积神经网络作为此数字识别系统的训练模型。
1.3 学习算法的选择
一个优秀的网络模型必须具备良好的学习算法,每个学习网络都有着相对来说较为合适自己的学习算法,而并不是说越高端的算法就越好。在此文中,我选择的学习算法是较为成熟的BP算法。此算法在文字前面有些许介绍,此处不再多做说明。
2 基于卷积神经网络的数字识别系统的设计
2.1 输入层以及输出层设定
根据样本的特征与此网络的网络结构,可以大概判断出输入层与输出层该如何设置。隐含层的个数可以是一个,也可以是多个,这与要分类的问题有关。
前文提及到在mnist数据库中,所有的图像都是28*28大小的,且以整个图片的像素形式存储在数据文件之中。每张图像大小为28*28,故一个图片像素点个数为784个。这里,卷积神经网络的输入即为这784个像素点。
因为数字识别需要识别的是0~9这十个数字,即需要识别十种字符类别,所以将这个神经网络输出层的神经元节点数设置为10。
2.2 网络的中间层设置
卷积神经网络的中间层有两个部分,即卷积层(特征提取层)与下采样层(特征映射层),由第二章中图2-1所示,C1、C3为卷积层,S2、S4为降采样层。
1)激活函数选择
激活函数选择sigmoid函数。同样,在第二章有所提及。Sigmoid函数是严格递增函数,能较好的平衡线性与非线性之间的行为,比较贴近生物神经元的工作。相比于其他函数,sigmoid函数还存在着许多优势,比如光滑性、鲁棒性以及它的导数可以用它自身来表示。
sigmoid函数为:
(1)
其中,x为神经元净输入。
激活函数导数为:
(2)
2)卷积层设计
图像经过卷积核对特征图进行卷积,之后再经过sigmoid函数处理在卷积层得到特征映射图。特征映射图相比于原图像,其特征更为明显突出。
卷积运算其实就是一个加权求和的过程。离散卷积是本文所选取的方法,规定卷积核在水平和竖直两个方向每次都是移动一个像素,即卷积的步长为1。
3)下采样层的设计
根据图像局部相关性这一原理,为了降低网络的学习维度、减少需要处理的数据量且保留图像的有用信息,可以对卷积后的图像进行下采样。这里,我们采取的是取卷积层4个像素点平均值为下采样层的一个像素点的方法。这样可以降低网络规模。
2.3 网络总体结构CNN-0
根据LeNet-5结构,再结合上文中的对输入层、输出层、中间层的设计,完成了如图3-1所示的基本网络结构:
相比于LeNet-5,CNN-0做了一些修改,并非完全按照LeNet-5网络结构模型。Sigmoid函数是本网络中的激活函数,选择这个函数的好处在于可以让所有层得到的输出都在区间[-1,1]之内。网络训练的学习率固定值为1或者是衰减的学习速率。经过卷积后的一维向量与输出层没有沿用LeNet-5的径向基函数网络,而是采取全连接方式,省去了F6层。
3.3 卷积神经网络训练过程
在模式识别中,学习网络有无指导学习网络与有指导学习网络两个类别。无指导学习网络一般是用来进行聚类分析,本文采取的是有指导学习网络。
卷积神经网络其实就是从输入到输出的一种映射,它可以学习大量的映射关系,只需要用现有的模式对网络进行训练,网络就能具备映射能力。而不需要输入与输出之间的精确的关系。
训练算法与传统的BP算法相差无几(BP算法在第二章有做概述),主要可分为四个步骤,而这四个步骤可以归为向前传播阶段与向后传播阶段:相前传播:
1)随机的从样本集中获取一个样本(A, ),然后将A输入至网络中;
2)根据公式(3)计算出实际输出:
(3)
向后传播:
1)计算和理想输出之间的差;
2)根据极小化误差方法调整权值矩阵。
结语
在手写数字识别这一块,相对来说比较有难度的应该就是脱机自由手写字符识别了,不过本文所研究的并不是這一系统,本设计是一个基于卷积神经网络的手写数字识别系统,因卷积神经网络的局部感受野和降采样以及权值共享、隐性特征提取等优点,它在图像识别领域得到了非常广泛的应用。此程序是在Caffe这个框架上进行运行的,操作系统为Linux系统ubuntu14.04版本。Caffe是一个开源的深度学习框架,也可以说是一个编程框架或者模板框架,它提供一套编程机制。因此,本文所需要实际的卷积神经网络就可以根据这个框架来进行构建。
参考文献:
[1]张伟,王克俭,秦臻.基于神经网络的数字识别的研究[J].微电子学与计算,2006年第23卷第8期.
[2]国刚,王毅.应用BP神经网络进行手写体字母数字识别[J].电脑知识与技术,2008.
[3]王鹏.基于神经网络的手写体字符识别[D]:[硕士学位论文].北京:北京工业大学,2002.