AdaBoost 人脸检测介绍(5) : AdaBoost算法的误差界限
本系列文章总共有七篇,目录索引如下:
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= \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) ,因此有:
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 = \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 无关的常量,可以提取出来,因此就得到:
\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进行适当的变形:
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 的定义可知:
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,因此有:
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}. 将此不等式应用到上式中得到:
Z_m = \sqrt{1-4\gamma_m^2} ≤ e^{-2\gamma_m^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算法的误差界限相关推荐
- 移植OpenCV的AdaBoost人脸检测算法到DM6467
1 人脸检测算法在DM6467上移植的步骤 要将人脸检测算法移植到DM6467,我们使用OpenCV现有的源码作为基础.首先,需要在PC上用C语言实现人脸检测的程序编写,然后移植Open ...
- AdaBoost人脸检测算法1(转…
原文地址:AdaBoost人脸检测算法1(转)作者:shl504 目前因为做人脸识别的一个小项目,用到了AdaBoost的人脸识别算法,因为在网上找到的所有的AdaBoost的简介都不是很清楚,让我看 ...
- Adaboost 人脸检测:Haar特征及积分图、分类器的级联
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 人脸识别功能实现的原理介绍与算法介绍 人脸识别:人脸数据集 A ...
- AdaBoost人脸检测原理
AdaBoost人脸检测原理 FROM:http://blog.sina.com.cn/s/blog_4e6680090100d2se.html 对人脸检测的研究最初可以追溯到 20 世纪 70 年代 ...
- android 人脸检测 facedec,智能访客系统中的人脸检测及方向判别算法.pdf
智能访客系统中的人脸检测及方向判别算法,人脸识别算法,人脸检测算法,opencv人脸识别算法,人脸识别算法有哪些,人脸识别pca算法,人脸比对算法,android人脸识别算法,adaboost人脸检测 ...
- Python人工智能实例 │ 使用Haar级联进行人脸检测、使用CAMShift算法、光流法进行人脸追踪
使用Haar级联进行人脸检测 使用CAMShift算法进行人脸追踪 使用光流法进行人脸追踪 01.背景知识 1.1●Haar级联简介 Haar级联是基于Haar特征的级联分类器.那么级联分类器是什么? ...
- 第九节、人脸检测之Haar分类器
人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发展起来. 目前人脸检测的方法主 ...
- Adaboost算法详解(haar人脸检测)
转自:https://wizardforcel.gitbooks.io/dm-algo-top10/content/adaboost.html(脸书动不动上不去故转载)(主要看adaboost的例子. ...
- Adaboost的几个人脸检测网站
[1]基础学习笔记之opencv(1):opencv中facedetect例子浅析 http://www.cnblogs.com/tornadomeet/archive/2012/03/22/2411 ...
- 程序员的机器学习入门笔记(九):人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
一.Haar分类器的前世今生 人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发 ...
最新文章
- Windows 2003 + ISA 2006+单网卡×××配置(4)
- 利用Bandwidth Splitter限制带宽
- linux命令 su和sudo,解析Linux中sudo,su与su -的异同
- HarmonyOS之AI能力·分词
- Repeater 绑定下拉列表
- 用咨询的角度去实施软件项目
- 毕业设计-人脸表情识别系统、人工智能
- 程序员必会的核心基础知识:1张导图+10本书
- Spark 异步Action
- n1怎么进入线刷模式_怎么用斐讯NI天天链刷机成电视机顶盒教程
- docker 打包新镜像原有配置丢失_Docker简介与安装
- 北理计算机语言智能与社会计算,北京理工大学校长张军描绘智慧社会:人在思、云在算、端在造...
- mac电脑的磁盘空间变得越来越小
- JavaScript函数重载(js函数重载)
- [解读] GuiltyGearXrd‘s Art Style : The X Factor Between 2D and 3D - GGX 3D 渲染 2D 风格
- 草图大师SketchUp2016下载和安装教程
- luogu P1375 小猫
- python怎么设置随机数种子_python实验随机种子的设置
- MOS管过大电流时关断为什么会出现尖峰电压
- 视频教程-规范毕业论文及精美简历排版实战-Office/WPS
热门文章
- 图形学基础|景深效果(Depth of Field/DOF)
- 无法启动程序因为计算机中丢失msvcr100,win7系统无法启动程序提示计算机中丢失msvcr100.dll的解决方法...
- python众数_169. 求众数(Python)
- java使用bos对象存储_百度对象存储BOS
- linux挂载百度云bos,百度云存储对象BOS挂载工具
- [Python人工智能] 十九.Keras搭建循环神经网络分类案例及RNN原理详解
- html多重阴影,求问:CSS3多重阴影效果实现的问题。为什么没有任何的效果,怎么改颜色都没用。...
- python 字典嵌套列表 循环打印_python的list的基本操作、list循环、切片、字典基本操作、字典嵌套、字符串常用方法...
- Qt5/6使用FFmpeg进行视频格式转换的两种方式
- ajax传参中文乱码问题解决