算法 – 此AdaBoost行为是否正确?
我正在按照
Viola-Jones论文的描述实现AdaBoost,用于我自己的启发.在单元测试过程中我发现了一些奇怪的行为.这可能只是算法在固定数据上奇怪地行动,或者我可能遗漏了一些东西.我想知道它是哪种情况.
首先,我有: 2 instances of A type faces 1 instance of a B type face 3 instances of noise -------------------- 6 total instances 因此每张图像的初始权重为1/6. 分类器选择的第一个特征识别A类型面但不识别B类型面而不识别任何噪声.结果,它具有1/6的误差(以及增强分类器中的相关权重). 接下来更新权重(首先将正确分类的图像乘以(误差/ 1 – 误差))== 0.2,产生: A type face weight: 1/30 B type face weight: 1/6 noise image weight: 1/6 然后权重归一化(总和为1): A type face weight: 1/22 B type face weight: 5/22 noise image weight: 5/22 第二个功能正确选择B型图像,但不能选择噪声或A型图像.结果它的误差为1/11(2/22),明显小于1/6. 由于Viola-Jones提出的“默认”阈值(这是在我们在论文的后半部分进行级联和调整阈值之前)是权重的一半,并且只有两个权重,第二个特征的权重更大(因为它具有较低的误差)然后得到的增强分类器仅正确地分类B类型的面. 直观地说,我期望强分类器由检测A面的弱分类器和检测B面以检测A面和B面的弱分类器组成. 我甚至愿意接受我只会得到两个中的一个,因为AdaBoost是一种多数投票算法,并且可能只有2个选民表现得很奇怪,但我希望如果它只是正确地分类其中一个面孔然后它会正确地对A面进行分类,因为它们有更多. 换句话说,我希望加入强分类器的每个弱分类器都能连续降低权重. 我错过了一个步骤,还是对于过于简单的数据而言这只是一种奇怪的行为? 解决方法
计算中存在错误.使用第一个特征时,误差为1/6,因为只有B面被错误分类.在这种情况下,噪声和A面被正确分类.因此,当您根据w(i)= w(i)* beta ^(1-e(i))更新权重时,仅针对B面e(i)等于1.对于A面和噪声e(i )= 0.因此,噪声和A面的权重将更新:
A type face weight: 1/30 B type face weight: 1/6 noise image weight: 1/30 正常化后: A type face weight: 1/10 B type face weight: 1/2 noise image weight: 1/10 现在,当您使用第二个功能时,错误是1/5. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |