本系列文章总共有七篇,目录索引如下:
  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

Error= \frac{1}{N}\sum_{i=1}^NI(G(x_i)≠y_i ) ≤ \frac{1}{N} \sum_iexp⁡(-y_i f(x_i))= \prod_m Z_m Remark: 参考了一些资料包括论文和博客,论文中很少有直接给出证明的,而博客中几乎没有一个证明从数学上来说是严谨的!此处本人将严格严谨的数学证明给出来,其实对于做纯工程的IT人士来说,不需要知道数学证明也无需知道该结论,只需要知道怎么使用该算法即可!

证明: 1)我们首先证明左边的不等式:
  ● 当 G(xi)=yiG(x_i)=y_i 时,示性函数 I(G(xi)≠yi)I(G(x_i)≠y_i ) 取值为0,而 exp(−yif(xi))>0exp⁡(-y_i f(x_i ))>0.
  ● 当 G(xi)≠yiG(x_i)≠y_i 时,示性函数 I(G(xi)≠yi)I(G(x_i)≠y_i ) 取值为1,而此时yiy_i和f(xi)f(x_i )符号相反,因此−yif(xi)-y_i f(x_i )的值就为正,故exp(−yif(xi))>1exp⁡(-y_i f(x_i ))>1.
因此我们就证明了左边的不等式!
  2)接下来我们要证明右边的等式:
   由分类器权值迭代公式 wm+1,i=wmiZmexp(−αmyiGm(xi))w_{m+1,i}=\frac{w_{mi}}{Z_m}exp⁡(-\alpha_m y_i G_m (x_i)) 出发来证明:

在上式中令 m=Mm=M,并记住w1,i=1N, f(x)=∑Mj=1αjGj(x)w_{1,i}=\frac{1}{N},\ f(x)= \sum_{j=1}^M\alpha_j G_j (x) ,因此有:

wM+1,i=w1,i∏Mj=1Zjexp(−yif(xi))=1Nexp(−yif(xi))/∏j=1MZj

w_{M+1,i}=\frac{w_{1,i}}{\prod_{j=1}^MZ_j} exp⁡(-y_i f(x_i ))= \frac{1}{N} exp⁡(-y_i f(x_i ))⁄\prod_{j=1}^MZ_j 因为对任何 mm,wmiw_{mi}皆为一个分布,即 ∑Ni=1wmi=1\sum_{i=1}^Nw_{mi}=1,因此有:

1=∑i=1NwM+1,i=1N∑i=1N⎛⎝exp(−yif(xi))∏Mj=1Zj⎞⎠

1 = \sum_{i=1}^Nw_{M+1,i}=\frac{1}{N}\sum_{i=1}^N\left(\frac{exp(-y_i f(x_i ))}{\prod_{j=1}^MZ_j}\right) 而 ∏Mj=1Zj\prod_{j=1}^MZ_j 是一个与 ii 无关的常量,可以提取出来,因此就得到:

1N∑i=1Nexp(−yif(xi))=∏j=1MZj

\frac{1}{N}\sum_{i=1}^Nexp(-y_i f(x_i )) = \prod_{j=1}^MZ_j 因此我们就证明了右边的等式■ <script type="math/tex; mode=display" id="MathJax-Element-455"></script>

  这个结果说明,可以在每一轮选取适当的GmG_m使得ZmZ_m最小,从而使得训练误差下降最快。接着,我们来继续求上述结果的上界。首先对ZmZ_m进行适当的变形:

Zm=∑i=1Nwmiexp(−αmyiGm(xi))=∑yi=Gm(xi)∑yi=Gm(xi)wmie−αm+∑yi≠Gm(xi)∑yi=Gm(xi)wmieαm

Z_m = \sum_{i=1}^Nw_{mi}exp⁡(-\alpha_m y_i G_m (x_i)) = \sum_{y_i=G_m(x_i)}\sum_{y_i=G_m(x_i)}w_{mi}e^{-\alpha_m} + \sum_{y_i≠G_m(x_i)}\sum_{y_i=G_m(x_i)}w_{mi}e^{\alpha_m} 由 eme_m 的定义可知:

Zm=∑yi=Gm(xi)wmie−αm+∑yi≠Gm(xi)wmieαm=(1−em)e−αm+emeαm

Z_m = \sum_{y_i=G_m(x_i)}w_{mi}e^{-\alpha_m} + \sum_{y_i≠G_m(x_i)}w_{mi}e^{\alpha_m} = (1-e_m) e^{-\alpha_m}+ e_m e^{\alpha_m} 由 αm\alpha_m的定义可知 eαm=1−emem−−−−√e^{\alpha_m}=\sqrt{\frac{1-e_m}{e_m}},再令 γm=12−em\gamma_m=\frac{1}{2}-e_m,因此有:

Zm=(1−em)e−αm+emeαm=2em(1−em)−−−−−−−−−√=1−4γ2m−−−−−−−√

Z_m = (1-e_m)e^{-\alpha_m} + e_me^{\alpha_m}= 2\sqrt{e_m(1-e_m)} = \sqrt{1-4\gamma_m^2} 由泰勒展开式很容易证明不等式: 1−x≤e−x1-x ≤ e^{-x}. 将此不等式应用到上式中得到:

Zm=1−4γ2m−−−−−−−√≤e−2γ2m

Z_m = \sqrt{1-4\gamma_m^2} ≤ e^{-2\gamma_m^2} 将此结果应用到前面的误差界限不等式中得到:

Error=1N∑i=1NI(G(xi)≠yi)≤∏m=1MZm≤exp(−2∑m=1Mγ2m)≤exp(−2Mγ2)

Error = \frac{1}{N}\sum_{i=1}^NI(G(x_i)≠y_i ) ≤ \prod_{m=1}^MZ_m ≤ exp{\left(-2\sum_{m=1}^M\gamma_m^2\right)} ≤ exp(-2M\gamma^2) 其中 γm=12−em,  γ=min{γ1,γ2,...,γM}>0\gamma_m = \frac{1}{2} - e_m, \ \ \gamma=min\{\gamma_1, \gamma_2, ... , \gamma_M\} > 0。

  这个结论表明,AdaBoost的训练误差是以指数速率下降的。另外,AdaBoost算法不需要事先知道下界γ\gamma,AdaBoost具有自适应性,它能适应弱分类器各自的训练误差率。

[同步本人网易博客文章] AdaBoost 人脸检测介绍(5) : AdaBoost算法的误差界限

AdaBoost 人脸检测介绍(5) : AdaBoost算法的误差界限相关推荐

  1. 移植OpenCV的AdaBoost人脸检测算法到DM6467

    1        人脸检测算法在DM6467上移植的步骤 要将人脸检测算法移植到DM6467,我们使用OpenCV现有的源码作为基础.首先,需要在PC上用C语言实现人脸检测的程序编写,然后移植Open ...

  2. AdaBoost人脸检测算法1(转…

    原文地址:AdaBoost人脸检测算法1(转)作者:shl504 目前因为做人脸识别的一个小项目,用到了AdaBoost的人脸识别算法,因为在网上找到的所有的AdaBoost的简介都不是很清楚,让我看 ...

  3. Adaboost 人脸检测:Haar特征及积分图、分类器的级联

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 人脸识别功能实现的原理介绍与算法介绍 人脸识别:人脸数据集 A ...

  4. AdaBoost人脸检测原理

    AdaBoost人脸检测原理 FROM:http://blog.sina.com.cn/s/blog_4e6680090100d2se.html 对人脸检测的研究最初可以追溯到 20 世纪 70 年代 ...

  5. android 人脸检测 facedec,智能访客系统中的人脸检测及方向判别算法.pdf

    智能访客系统中的人脸检测及方向判别算法,人脸识别算法,人脸检测算法,opencv人脸识别算法,人脸识别算法有哪些,人脸识别pca算法,人脸比对算法,android人脸识别算法,adaboost人脸检测 ...

  6. Python人工智能实例 │ 使用Haar级联进行人脸检测、使用CAMShift算法、光流法进行人脸追踪

    使用Haar级联进行人脸检测 使用CAMShift算法进行人脸追踪 使用光流法进行人脸追踪 01.背景知识 1.1●Haar级联简介 Haar级联是基于Haar特征的级联分类器.那么级联分类器是什么? ...

  7. 第九节、人脸检测之Haar分类器

    人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发展起来. 目前人脸检测的方法主 ...

  8. Adaboost算法详解(haar人脸检测)

    转自:https://wizardforcel.gitbooks.io/dm-algo-top10/content/adaboost.html(脸书动不动上不去故转载)(主要看adaboost的例子. ...

  9. Adaboost的几个人脸检测网站

    [1]基础学习笔记之opencv(1):opencv中facedetect例子浅析 http://www.cnblogs.com/tornadomeet/archive/2012/03/22/2411 ...

  10. 程序员的机器学习入门笔记(九):人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联

    一.Haar分类器的前世今生 人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发 ...

最新文章

  1. Windows 2003 + ISA 2006+单网卡×××配置(4)
  2. 利用Bandwidth Splitter限制带宽
  3. linux命令 su和sudo,解析Linux中sudo,su与su -的异同
  4. HarmonyOS之AI能力·分词
  5. Repeater 绑定下拉列表
  6. 用咨询的角度去实施软件项目
  7. 毕业设计-人脸表情识别系统、人工智能
  8. 程序员必会的核心基础知识:1张导图+10本书
  9. Spark 异步Action
  10. n1怎么进入线刷模式_怎么用斐讯NI天天链刷机成电视机顶盒教程
  11. docker 打包新镜像原有配置丢失_Docker简介与安装
  12. 北理计算机语言智能与社会计算,北京理工大学校长张军描绘智慧社会:人在思、云在算、端在造...
  13. mac电脑的磁盘空间变得越来越小
  14. JavaScript函数重载(js函数重载)
  15. [解读] GuiltyGearXrd‘s Art Style : The X Factor Between 2D and 3D - GGX 3D 渲染 2D 风格
  16. 草图大师SketchUp2016下载和安装教程
  17. luogu P1375 小猫
  18. python怎么设置随机数种子_python实验随机种子的设置
  19. MOS管过大电流时关断为什么会出现尖峰电压
  20. 视频教程-规范毕业论文及精美简历排版实战-Office/WPS

热门文章

  1. 图形学基础|景深效果(Depth of Field/DOF)
  2. 无法启动程序因为计算机中丢失msvcr100,win7系统无法启动程序提示计算机中丢失msvcr100.dll的解决方法...
  3. python众数_169. 求众数(Python)
  4. java使用bos对象存储_百度对象存储BOS
  5. linux挂载百度云bos,百度云存储对象BOS挂载工具
  6. [Python人工智能] 十九.Keras搭建循环神经网络分类案例及RNN原理详解
  7. html多重阴影,求问:CSS3多重阴影效果实现的问题。为什么没有任何的效果,怎么改颜色都没用。...
  8. python 字典嵌套列表 循环打印_python的list的基本操作、list循环、切片、字典基本操作、字典嵌套、字符串常用方法...
  9. Qt5/6使用FFmpeg进行视频格式转换的两种方式
  10. ajax传参中文乱码问题解决