我一直试图理解AdaBoost算法没有太大的成功.作为一个例子,我正在努力理解关于人脸检测的Viola Jones论文.
你能用外行的话来解释AdaBoost,并提供一个很好的例子吗?
Adaboost是一种算法,它将具有较差性能的分类器(即弱学习者)组合成具有更高性能的更大分类器.
它是如何工作的?以非常简单的方式:
训练一个弱小的学习者.
将其添加到目前为止训练有素的弱学习者(具有最佳体重)
增加仍然错过分类的样本的重要性.
转到1.
幕后有一个广泛而详细的理论,但直觉就是:让每个"愚蠢"的分类器专注于以前无法解决的错误.
AdaBoost是机器学习社区中最常用的算法之一.特别是,当您知道如何创建简单的分类器(可能是许多不同的分类器,使用不同的功能),并且您希望以最佳方式组合它们时,它非常有用.
在Viola和Jones中,每种不同类型的弱学习者都与您可以拥有的4种或5种不同的Haar特征之一相关联.
AdaBoost使用大量训练样本图像(例如面部)来选择一些好的"特征"/"分类器".对于面部识别,分类器通常仅是具有特定平均颜色值和相对尺寸的像素矩形.AdaBoost将查看许多分类器,并根据样本图像找出哪一个是面部的最佳预测器.在选择了最佳分类器之后,它将继续找到另一个和另一个,直到达到某个阈值并且这些分类器组合在一起将提供最终结果.
这部分你可能不想与非技术人员分享:)但无论如何它很有趣.有几种数学技巧可以让AdaBoost快速进行人脸识别,例如能够将图像的所有颜色值相加并将它们存储在二维数组中,以便任何位置的值都是所有像素的总和.在那个位置的左边.此数组可用于通过从右下角找到的值中减去左上角中找到的值并除以矩形中的像素数,来快速计算图像中任何矩形的平均颜色值.使用此技巧,您可以快速扫描整个图像,查找与特定颜色匹配或接近的不同相对大小的矩形.
希望这可以帮助.