版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nk_wavelet/article/details/52618609
本系列文章总共有七篇,目录索引如下:
AdaBoost 人脸检测介绍(1) : AdaBoost身世之谜
AdaBoost 人脸检测介绍(2) : 矩形特征和积分图
AdaBoost 人脸检测介绍(3) : AdaBoost算法流程
AdaBoost 人脸检测介绍(4) : AdaBoost算法举例
AdaBoost 人脸检测介绍(5) : AdaBoost算法的误差界限
AdaBoost 人脸检测介绍(6) : 使用OpenCV自带的 AdaBoost程序训练并检测目标
AdaBoost 人脸检测介绍(7) : Haar特征CvHaarClassifierCascade等结构分析
5. AdaBoost算法的误差界限
通过上面的例子可知,AdaBoost在学习的过程中不断减少训练误差 e,直到各个弱分类器组合成最终分类器。那这个最终分类器的误差界限到底是多少呢?事实上,AdaBoost最终分类器的训练误差的上界是:
Error=1N∑i=1NI(G(xi)≠yi)≤1N∑iexp(−yif(xi))=∏mZm
Remark: 参考了一些资料包括论文和博客,论文中很少有直接给出证明的,而博客中几乎没有一个证明从数学上来说是严谨的!此处本人将严格严谨的数学证明给出来,其实对于做纯工程的IT人士来说,不需要知道数学证明也无需知道该结论,只需要知道怎么使用该算法即可!
证明: 1)我们首先证明左边的不等式:
● 当
G(xi)=yi
时,示性函数
I(G(xi)≠yi)
取值为0,而
exp(−yif(xi))>0
.
● 当
G(xi)≠yi
时,示性函数
I(G(xi)≠yi)
取值为1,而此时
yi
和
f(xi)
符号相反,因此
−yif(xi)
的值就为正,故
exp(−yif(xi))>1
.
因此我们就证明了左边的不等式!
2)接下来我们要证明右边的等式:
由分类器权值迭代公式
wm+1,i=wmiZmexp(−αmyiGm(xi))
出发来证明:
在上式中令
m=M
,并记住
w1,i=1N, f(x)=∑Mj=1αjGj(x)
,因此有:
wM+1,i=w1,i∏Mj=1Zjexp(−yif(xi))=1Nexp(−yif(xi))/∏j=1MZj
因为对任何
m
,
wmi
皆为一个分布,即
∑Ni=1wmi=1
,因此有:
1=∑i=1NwM+1,i=1N∑i=1N⎛⎝exp(−yif(xi))∏Mj=1Zj⎞⎠
而
∏Mj=1Zj
是一个与
i
无关的常量,可以提取出来,因此就得到:
1N∑i=1Nexp(−yif(xi))=∏j=1MZj
因此我们就证明了右边的等式■
这个结果说明,可以在每一轮选取适当的
Gm
使得
Zm
最小,从而使得训练误差下降最快。接着,我们来继续求上述结果的上界。首先对
Zm
进行适当的变形:
Zm=∑i=1Nwmiexp(−αmyiGm(xi))=∑yi=Gm(xi)∑yi=Gm(xi)wmie−αm+∑yi≠Gm(xi)∑yi=Gm(xi)wmieαm
由
em
的定义可知:
Zm=∑yi=Gm(xi)wmie−αm+∑yi≠Gm(xi)wmieαm=(1−em)e−αm+emeαm
由
αm
的定义可知
eαm=1−emem−−−−√
,再令
γm=12−em
,因此有:
Zm=(1−em)e−αm+emeαm=2em(1−em)−−−−−−−−−√=1−4γ2m−−−−−−−√
由泰勒展开式很容易证明不等式:
1−x≤e−x
. 将此不等式应用到上式中得到:
Zm=1−4γ2m−−−−−−−√≤e−2γ2m
将此结果应用到前面的误差界限不等式中得到:
Error=1N∑i=1NI(G(xi)≠yi)≤∏m=1MZm≤exp(−2∑m=1Mγ2m)≤exp(−2Mγ2)
其中
γm=12−em, γ=min{γ1,γ2,...,γM}>0
。
这个结论表明,AdaBoost的训练误差是以指数速率下降的。另外,AdaBoost算法不需要事先知道下界
γ
,AdaBoost具有自适应性,它能适应弱分类器各自的训练误差率。
[同步本人网易博客文章] AdaBoost 人脸检测介绍(5) : AdaBoost算法的误差界限