gpt4 book ai didi

algorithm - 这种 AdaBoost 行为是否正确?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:01:39 24 4
gpt4 key购买 nike

我正在按照 Viola-Jones 中的描述实现 AdaBoost我自己的启蒙论文。在对算法进行单元测试的过程中,我发现了一些奇怪的行为。这可能只是算法对 jar 装数据的作用很奇怪,或者我可能遗漏了一些东西。我想知道是哪种情况。

首先我有:

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

接下来更新权重(首先将正确分类的图像乘以 (error/1 - error))== 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。

关于algorithm - 这种 AdaBoost 行为是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24259785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com