支持向量机与人脸识别

[摘要]: 支持向量机(Support Vector Machine,SVM)是机器学习中的一个新模型,能非常成功地处理回归问题(时间序列分析)和模式识别(分类问题、判别分析)等诸多问题,并可推广于预测和综合评价等领域。本文对它的基本思想、方法进行了介绍, 并简要介绍了如何利用SVM进行人脸识别,希望使读者对这一领域有一个基本的了解。

    [关键词]:支持向量机;KKT条件;人脸识别

引言

    基于数据的机器学习是现代智能技术中的重要方面。研究从观测数据(样本)出发寻找规律。利用这些规律对未来数据或无法观测的数据进行预测。包括贝叶斯学习、神经网络等在内,现有机器学习方法共同的重要理论基础之一大数定理:当样本数且趋近于无穷时,对样本的估计趋近于数据的真实分布。传统统计学研究的是样本数且趋近于穷大时的渐近理论,现有学习方法也多是基于此假设。但在实际问题中。样本数往往是有限的,因此一些理论上很优秀的学习方法实际中表现却可能不尽人意。

    与传统统计学相比,统计学习理论(Statistical Learning Theory,SLT)是一种研究有限样本情况下统计及机器学习规律的理论。V. Vapnik 等人从六、七十年代开始致力于此方面的研究,到九十年代中后期,随着其理论的不断发展和成熟,也由于神经网络等学习方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。

    统计学习理论是建立在一套较坚实的理论基础之上的,为解决有限样本学习问题提供了一个统一的框架。它能将很多现有方法纳入其中,有望帮助解决许多原来难以解决的问题(比如神经网络结构及参数选择问题);同时。在这一理论基础上发展了一种新的通用学习方法:支持向量机(Support Vector Machine,SVM)。它己表现出很多优秀的性能,已经成为当今机器学习领域的研究热点,并将有力地推动机器学习理论和技术的发展。

SVM理论基础

       机器学习的目的是根据给定的训练样本求对某系统输入输出之间依赖关系的估计,使它能够对未知输出作出尽可能准确的预测。可以一般地表示为:变量y 与x 存在一定的未知依赖关系,即遵循某一未知的联合概率F (x , y) ,(xy之间的确定性关系可以看作是其特例) ,机器学习问题就是根据n个独立同分布观测样本在一组函数{f(x ,w)}中求一个最优的函数 对依赖关系进行估计, 使期望风险最小。 其中, {f (x ,w)}称作预测函数集,w为函数的广义参数, {f (x,w)}可以表示任何函数集;L (y , f (x ,w)) 为由于用f (x ,w)对y进行预测而造成的损失,不同类型的学习问题有不同形式的损失函数。预测函数也称作学习函数、学习模型或学习机器。

    SVM 是从线性可分情况下的最优分类发展而来的。基本思想可用下图的二维情况说明。图中方块和圆球代表两类样本A+和A-,中间虚线为分类面。

在图中所示的两条实线是分类面两侧分别为过各类中离分类面最近的样本平行于分类面的超平面,它们叫做支撑面,它们之间的距离叫做分类间隔(margin)。支撑面上的样本叫做支持向量,这也是支持向量机名字的由来。所谓最优分类面就是要求分类面不但能将两类正确分开(训练错误率为0),而且使分类间隔最大。分类面方程为<w,x>+b=0

考虑一个用某特征空间的超平面对给定训练数据集做二值分类的问题。对于给定样本点:(1)

在特征空间中构造分类平面: <w,x>+b=0        (2)在给定约束:(3)

则方程为<w×x>+b= +1和<w×x>+b= -1的两个平面分别为正例样本和负例样本的支撑面(如前图所示)。

    在给定此约束的情况下,可以计算出,根据几何知识可知,分类间隔为2/‖w‖。根据SVM 对最优分类平面的定义,可以看出对该平面的求解问题可以建模为:在满足条件式(3)的情况下,计算能使2/‖w‖最大化的分类平面的法向量w0b。综合上面所有的讨论,我们有了以下目标函数:(4)因为限定条件的关系,上面的最佳化问题有点棘手,还好我们可以利用拉格朗日乘子方法将上面的式子转成一个二次方程式,找出可以使L为最小值的w, b, αi。  (5)符合条件的极值点会出现在:

时,

 时,

    接下来我们要求解L的最小值,所以分别对w及对b求偏导:(6)代回上面的式(5)得到(7)我们把上面的条件综合一下得到(8)

 

上面这些条件又被称为KKT条件(Karush-Kuhn -Tucker conditions)。

    支持向量就是那些满足KKT条件的点,并且它们对应的 会大于0。在我们求得支持向量以后,我们就可以用下式它们来判断新加入的点是属于哪一个集合(9)

SVM与人脸识别

    SVM在解决小样本、非线性及高维模式识别问题中表现出许多特有的优势。已经应用于手写体识别、三维目标识别、人脸识别、文本图像分类等实际问题中,性能优于已有的学习方法,表现出良好的学习能力。从有限训练样本得到的决策规则对独立的测试集仍能够得到较小的误差。下面以人脸识别为例说明SVM的应用。

    LIBSVM 是台湾大学林智仁(Chih-Jen Lin)教授等开发设计的一个操作简单、易于使用、快速有效的通用SVM 软件包,利用它我们可以很简单的解决人脸识别问题。

    这次实验使用耶鲁大学的人脸库,这个库包含15个人的脸,每个人有11张照片,每张照片在不同的光照条件下拍摄,脸上的表情不同,背景不同……等等。下面是其中一个人的照片:

 

 

我们取前8张作为训练样本,后3张作为测试样本。在训练之前我们先做一些预处理:

    1.     把照片缩小到20×20。根据实验,20×20分辨率的照片已经足够了;

    2.     用PCA做特征提取,也就是提取特征脸,下面简述特征脸的提取:

    a)     先将每个人脸相加求平均,求得一张平均脸

   b)     再对每张脸求与平均脸的差异,将每张脸减平均脸,得到一个向量       

    c)     把所有向量排成一个矩阵A

    d)    矩阵A乘上自己的转置变成协方差矩阵

 

    e)求解这个协方差矩阵的特征向量,我们只取前14个特征向量,将原来的人脸照片投影到这14个特征向量上,所以每张脸会有14个维度的数据然后采用libsvm训练:

    1.     把所有照片的数据都用libsvm要求的格式排好。

    2.     用svmscale把数据正则化到[-1, 1]范围内。

svmscale -l -1 -u 1 -s range TrainingSet.txt > TrainingSet.scale

    3.     训练,产生一个名字为TrainingSet.scale.model的文件。

svmtrain TrainingSet.scale

    4.     用svmpredict来检验训练的结果是否达到我们的要求。

svmpredict TrainingSet.scale TrainingSet.scale.model out

    最后显示的结果为:

Accuracy = 94.1667% (113/120) (classification)

Mean squared error = 3.95 (regression)

Squared correlation coefficient = 0.804937 (regression)

    正确率为94.1667%,这次训练的结果不错。

讨论

    由于支持向量机建立了一套较好的有限样本下机器学习的理论框架和通用方法, 既有严格的理论基础, 又能较好地解决小样本、非线性、高维数和局部极小点等实际问题, 因此成为九十年代末发展最快的研究方向之一, 其核心思想就是学习机器要与有限的训练样本相适应。 本文对它们的基本思想、方法进行了介绍, 希望使读者对这一领域有一个基本的了解。支持向量机虽然已经提出多年, 但从它自身趋向成熟和被广泛重视到现在毕竟还不长, 其中还有很多尚未解决或尚未充分解决的问题, 在应用方面的研究更是刚刚开始。 我们认为, 支持向量机模型与应用是一个十分值得大力研究的领域。

 转至 http://www.sdic.org.cn/html/sdic/xslt/249182.shtml

posted @ 2010-04-13 23:25  Alex.ren  阅读(5463)  评论(0编辑  收藏  举报