人脸检测理论基础

声明:以下内容大部分来自于网络

1 PCA学习模型

  实质就是在样本训练的基础上,使算法的输出以概率接近未知的目标概念。

2 弱学习和强学习

  随即猜测一个是或否的问题,将会有50%的正确率。如果一个假设能够稍微的提高猜测的正确概率,那么这个假设就是弱学习算法,得到这个算法的过程称为弱学习。

  一个假设能够显著的提高猜测的正确概率,那么这个假设就称为强学习。

  可以找到一个弱学习算法,直接将其升为强学习算法。

3 Boosting方法

  原意为提升、加强。现在一般指的是将弱分类学习算法提升为强学习算法的一类算法。是一种将若干个分类器整合为一个分类器的方法。

  1bootstrapping方法的主要过程

  主要的步骤:

  1)重复的从一个样本集合D中采集n个样本

  2)针对每次采集的子样本集合,进行统计学习,获得假设Hi

  3)将若干个假设进行组合,形成最后的假设Hfinal

  4)将最终的假设用于具体的任务分类。

  2 bagging的方法

  i)训练分类器

  从整体样本集合中,抽样n* < N个样本 针对抽样的集合训练分类器Ci

  ii)分类器进行投票,最终的结果是分类器投票的优胜结果 

4 Adaboost训练算法

  Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。  

  算法本身是改变数据分布实现的,根据每次训练集中的么个样本的分类是否正确,以及上次的总体分类的正确率来确定每个样本的权值。将新权值送到下层的分类器进行训练。

四 Adaboost 举例

也许你看了上面的介绍或许还是对adaboost算法云里雾里的,没关系,百度大牛举了一个很简单的例子,你看了就会对这个算法整体上很清晰了。

 

  下面我们举一个简单的例子来看看adaboost的实现过程:

  图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器,来进行分类。

  第一步:

  根据分类的正确率,得到一个新的样本分布D,一个子分类器h1

  其中划圈的样本表示被分错的。在右边的途中,比较大的“+”表示对该样本做了加权。

 

也许你对上面的ɛ1,ɑ1怎么算的也不是很理解。下面我们算一下,不要嫌我啰嗦,我最开始就是这样思考的,只有自己把算法演算一遍,你才会真正的懂这个算法的核心,后面我会再次提到这个。

算法最开始给了一个均匀分布 D 。所以h1 里的每个点的值是0.1。ok,当划分后,有三个点划分错了,根据算法误差表达式得到 误差为分错了的三个点的值之和,所以ɛ1=(0.1+0.1+0.1)=0.3,而ɑ1 根据表达式 的可以算出来为0.42. 然后就根据算法 把分错的点权值变大。如此迭代,最终完成adaboost算法。

  第二步:

  根据分类的正确率,得到一个新的样本分布D3,一个子分类器h2

  第三步:

  得到一个子分类器h3

  整合所有子分类器:

  因此可以得到整合的结果,从结果中看,及时简单的分类器,组合起来也能获得很好的分类效果,在例子中所有的。

三、多分类adaboost

  在日常任务中,我们通常需要去解决多分类的问题。而前面的介绍中,adaboost算法只能适用于二分类的情况。因此,在这一小节中,我们着重介绍如何将adaboost算法调整到适合处理多分类任务的方法。

  目前有三种比较常用的将二分类adaboost方法。

  1、adaboost M1方法

  主要思路: adaboost组合的若干个弱分类器本身就是多分类的分类器。

  在训练的时候,样本权重空间的计算方法,仍然为:

  在解码的时候,选择一个最有可能的分类

  2、adaboost MH方法

  主要思路: 组合的弱分类器仍然是二分类的分类器,将分类label和分类样例组合,生成N个样本,在这个新的样本空间上训练分类器。

  可以用下图来表示其原理:

  3、对多分类输出进行二进制编码

  主要思路:对N个label进行二进制编码,例如用m位二进制数表示一个label。然后训练m个二分类分类器,在解码时生成m位的二进制数。从而对应到一个label上。

posted on 2013-01-07 15:40  韩一韩han  阅读(222)  评论(0编辑  收藏  举报