手写数字体识别的支持向量机方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于支持向量机的手写数字识别
绪论
阿拉伯数字是人类文明的标志之一,也是人们进行交流与沟通的主要媒介。
数字作为世界经济发展的信息载体,展示了世界各族人民的思维和认知方式。
在我们的日常生活中,每天都要进行大量的文档处理工作,税单、银行支票、汇款单、信用卡账单的处理,以及邮局信函的分检等等,如何利用计算机字符识别和文档处理技术,使人们从这些繁重的手工劳动中解放出来已成为一个迫切需要解决的问题。
计算机文字识别,是计算机和人之间进行信息沟通的一座桥梁。
计算机文字识别一直是图像识别领域中十分活跃的研究课题。
它被认为是典型的图像识别应用研究课题。
随着信息时代的到来,如何实习数字识别的自动识别与处理将直接关系到我国信息事业的发展。
数字识别是一种类别的识别问题,在理论和技术上都具有较大的研究价值。
其中,数字识别特别是手写数字识别因其需要较高的识别精度和较快的识别速度被视为识别领域中“最难的领域”,成为国内外研究的热点。
数字的类别只有十种,笔划也比较简单,其识别问题似乎不是很困难,但事实上,一些测试结果表明,数字的正确识别率并不如印刷体汉字识别正确率高,甚至也不如连机手写体汉字识别率高。
这其中的主要原因如下:
第一:手写数字字形相差不大,比如“1”和“7”,“3”和“ 8”很相似,使得准确区分某些数字相当困难;
第二:在实际应用中,对数字识别单字识别正确率的要求要比文字要苛刻得多。
这是因为,数字没有上下文关系,每个单字的识别都事关重要,而且数字识别经常涉及的财会、金融领域其严格性使其准确率要求更高。
此外,大批量数据处理对系统速度又有相当的要求,许多理论上很完美但速度过低的方法行不通的。
因此研究高性能的数字识别算法是一个有相当的挑战性的任务。
数字识别技术
数字识别是图像内容识别的一个应用领域,且有被识别的数较少,只有十个数字,阿拉伯数字笔画少的特点。
所以手写阿拉伯数字的识别采用的方法相对于人脸识别、汉
字识别等应用领域来说可以采用更为灵活的方法,例如基于神经网络的BP学习算法、SVM方法等。
但无论使用那种方法,都需要通过基本的图像处理技术来对图像进行预处理,才能获得这些方法的输入信息。
下面我们给出一般数字识别的流程图:
图像采集
图像处理
数字识别
SVM算法
SVM方法定义最优线性超平面,并把寻找最优线性超平面的算法归结为求解一个凸规划问题。
进而基于Mercer核展开定理,通过非线性映射φ,把样本空间映射到一个高维乃至于无穷维的特征空间(Hilbert空间),使在特征空间中可以应用线性学习机的方法解决样本空间中的高度非线性分类和回归等问题。
简单地说就是升维和线性化。
升维,即是把样本向高维空间做映射,一般只会增加计算的复杂性,甚至会引起“维数灾”,因而人们很少问津。
但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间却可以通过一个线性超平面实现线性划分(或回归)。
SVM的线性化是在变换后的高维空间中应用解线性问题的方法来进行计算。
在高维特征空间中得到的是问题的线性解,但与之相对应的却是原来样本空间中问题的非线性解。
一般的升维都会带来计算的复杂化。
SVM方法巧妙地解决了这两个难题:由于应用了核函数的展开定理,所以根本不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾”。
这一切要归功于核的展开和计算理论。
因此人们又称SVM方法为基于核的一种方法。
核方法研究是比SVM更为广泛和深刻的研究领域。
支持向量机原理
如图2-1所示为二维两类线性可分模式,图中的圈和三角分别表示两类的训练样本,H 维把两类没有错误的分开的分类线,1H 、2H 分别为过各类样本中离分类线最近的点且平行于分类线的直线,那么1H 和2H 之间的距离即为两类的分类间隔。
所谓最优分类线就是要求分类线不但能将两类无错误的分开,而且要使两类的分类间隔最大。
前者是保证经验风险最小(为0),后者实际上是为了使置信范围最小,从而使实际风险最小,这是对结构风险最小化原则的具体实现,推广到高维空间,最优分类线就成为最优超平面。
最优分类示意图
设训练样本输入为 l i X i ...,2,1,=对应的希望输出为}1,1{-+∈i y ,其中+1和-1分别
代表两类的类别标识,假设分类面方程为0,>+><b x w 。
为使分类面对所有样本正确分类并且具备分类间隔,就要就它满足如下约束:
11
11
-=-≥+⨯+=+≥+⨯i i i i y for b w x y for b w x (3-1)
可以计算出,分类间隔为 w w b x w w b x w i y x i y x i
i i i 2max min }1|{}1|{=+⋅-+⋅-== (3-2) 现在的目标就是在服从约束式(3-4)的条件下最大化分类间隔
2w ,这可以通过最小化2w 的方法来实现。
那么,求解最优超平面问题就可以表示成如下的约束优化问题:即在条件式(3-4)的约束下,最小函数: H
2
H Margin
1
H
),(2
121)(2w w w w ==Φ (3-3) 因此, 满足上述条件且使2w
最小的分类面就是最优分类面。
过两类样本中离分类面最近的点且平行于最优分类面的超平面12,H H 上的训练样本就是上式中等号成立
的那些样本,它们叫作支持向量(support vector ) 。
因为它们支撑了最优分类面。
求解最优分类面中所得到的最优分类函数是:
**1()sgn{,}n
i i i i f x a y K x x b ==<>+∑
这就是支持向量机。
支持向量机的基本思想可以概括为:首先通过非线性变换将输入空间变换到一个高维空间,然后在这个新空间中求取最优线性分类面, 而这种非线性变换是通过定义适当内积函数实现的。
支持向量机解决多分类问题SVM 最基本的理论是针对二分类问题,SVM 二分类方法具有清晰的几何含义,然而在实际应用中,比如语音识别、字体识别、 人脸识别等,必须要解决多分类问题,尤其是人脸识别技术与普通的模式识别不同,主要是因为在一般的模式识别中,有几个分类,每个分类中有很多样本,这样可以安排大量样本进行训练。
相反,人脸识别中通常会有很多不同的人脸,每个人脸代表一个分类,而每个分类中的样本数都比较少,在很多情况下,甚至每个人只有一张图片(如身份证照片),这样无疑增加了识别的难度。
对于多分类识别问题,必须将SVM 进行改进和推广。
对于多分类问题,SVM 常用算法有2种:
(1)一对多方法。
对于k 类问题构造k 个分类器,第i 个SVM 用第i 类中的训练样本作为正的训练样本,而将其它的样本作为负的训练样本。
最后的输出是两类分类器输出为最大的那一类(此时,两类分类器的判决函数不用取符号函数sgn)。
这个方法的不足之处是它的推广误差无界,容易产生属于多类别的点和没有被分类的点。
(2)一对一方法。
该算法在k 类训练样本中构造所有可能的二类分类器,每类仅仅在k 类中的二类训练样本上训练,结果共构造(,,,ker,,)preY svcoutput trnX trnY tstX alpha bias =个分类器。
组合这些二分类器很自然地用到了投票法,得票最多的类为新点所属的类。
U. Krebel 用该方法训练多类SVM ,取得了很好的结果。
一对一算法的缺点是:1) 如果
单个二类分类器不规范化,则整个k 类分类器将趋向于过学习;2)推广误差无界;3)对于任意两个分类,构造一个分类器,仅识别这两个分类,完成这个过程需要(1)/2N k k =-分类器,计算量非常庞大,导致在决策时速度很慢。
数字识别的支持向量机的方法
图像采集与处理:
对训练样本进行采集,将t10k-images 图片库中的样本进行分类,同一数字放入一个文件夹,作为训练和测试的样本,每个数字有1000个样本,这样就得到了10000张训练样本,然后进行图像处理,通过imread 将样本图像读入之后,进行灰度化,得到灰度图像,再对得到的灰度图像进行二值化,由于,样本图像背景为黑色,数字为白色,为此,我们令灰度值大于25的为1,小于25的记为0,得到样本的二值图像,再把数字所在的区域提取出来,最后对提取出来的区域进行归一化,将其变为5*7的矩阵形式,得到训练样本的特征矢量。
训练分类器:
得到训练样本的特征矢量后,对分类器进行训练得到分类器的参数,由于数字有10个,为此需要用到SVM 多分类问题的方法,由于类别较多,一对多方法不太适用于类别较多的情况,为此选择一对一,即需要45个分类器。
分类器函数为:[,,0](,,ker,)SVM nsv alpha b svc X Y C =其中:
X :训练样本的输入特征,X 的行数为训练样本的个数,X 的列数代表训练样本的特征维数;
Y :训练样本对应的标号,为一个列矩阵。
矩阵的行数为样本的个数。
Y 的值只能是1或者-1;
Ker:核函数类型,常用的包括:‘linear ’,‘poly ’, ‘rbf ’
C :经验风险与结构风险的权衡参数。
nsv :支持向量的个数;
alpha :对偶问题的解;
b0:svm 表达式中的偏移量。
在本实验中,X 为样本的特征矢量,Y 为样本标号。
样本测试:
每个数取300个样本,总过3000个样本进行测试,测试函数为:
(,,,ker,,)
preY svcoutput trnX trnY tstX alpha bias
其中:
trnX - 训练样本的输入特征;
trnY - 训练样本的标号;
tstX - 测试样本的输入特征;
ker - 核函数;
alpha - SVM的求解结果;
bias - SVM的偏移量;
测试将所有分类器的preY值相加,该测试数属于preY最大的那一类。
测试结果
核函数LINEAR POLY RBF RBF
训练样本数500 1000 500 1000
测试样本数500 2000 4000 7000
C 10 10 10 10
错误率(%)14.2 9.6 8.8 6.9
时间(MIN) 1 5 10 20
结果分析:
从上图可以看出,核函数的选取对测试结果有很大的影响,不同的核函数,实验的效果和时间有很大的差别,liner核函数最简单,但其只能训练很小量的样本,训练样本数最大不能超过1000,否则无法训练分类器,得出测试结果为错误的,而其在样本数低于1000之内,几乎不能达到正确率为90%的要求。
Poly核函数比linear效果好很多,且能满足正确率90%的要求。
Rbf核函数效果最好,但运行时间过于长,运行一次几乎需要20分钟,而样本数目越大,则时间越长,当测试数据为7000时,运行结果需要30分钟,所以在满足正确率高于90%的要求下,poly核函数是最佳的选择,但如果要正确率最高,可
以选择rbf核函数或其它核函数,甚至可将神经网络与SVM共同用来进行数字体识别,兼顾二者优点。
改进方法:
除了选取不同的核函数来提高识别的正确率之外,还可以通过调整C(经验风险与结构风险的权衡参数),或是增加训练样本的个数来提高识别效率,还有就是通过对特征提取函数的更改来提高效率,例如二值化的阈值,在二值化时,要根据样本图片的背景与数字的差值来更改阈值。
例如,下面两幅图二值化时的阈值就有很大差别,左边为20,右边为200。
样本图片
结论
支持向量机是专门针对有限样本情况的,其目标是得到现有信息下的最优解而不仅仅是样本数趋于无穷大时的最优解,其最终过程将转化为一个二次型寻优问题,从理论上说,得到的将是全局最优点,解决了在神经网络方法无法避免的局部极值问题;支持向量机能够自动识别出训练集中的一个子集,此子集基本上可以代表训练集中的全部信息,也就是说只有这个子集对分类及回归问题的求解起作用;与多层感知器相比,支持向量机避免了在前者的设计中经常使用的启发式结构,它不依赖于设计者的经验知识;而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部极小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。
支持向量机解决二分类问题。
从本文可以了解到支持向量机的数字识别方法比其它的方法有很大的优越性。
比如它是专门针对有限样本情况的,泛发能力强;得到的将是全局最优点,解决了在神经网络方法无法避免的局部极值问题;它巧妙地解决了维数问题,起算法复杂度与样本维数无关等等,从实验数据我们可以看出基于SVM的数字图像字
符识别中的可行性的优势,有着广阔的应用前景。
但用支持向量机进行数字识别也有不足之处,例如,识别正确率还是可以提高的,样本库中样本数量有限,特征向量的提取方法还比较少,所以还有待提高。