9

在使用 OpenCV 进行提升后,我正在尝试实现我自己的Adaboost算法版本(查看此处此处原始论文以获取一些参考资料)。

通过阅读所有材料,我提出了一些关于算法实现的问题。

1)我不清楚每个弱学习器的权重 a_t 是如何分配的。

在我指出的所有来源中,选择是a_t = k * ln( (1-e_t) / e_t ),k 是一个正常数,而 e_t 是特定弱学习器的错误率。

在此来源的第 7 页,它说该特定值最小化了某个凸可微函数,但我真的不明白这段话。

  • 谁能给我解释一下?

2)我对训练样本的权重更新程序有一些疑问。

显然,应该以确保它们保持概率分布的方式来完成。所有参考文献都采用这种选择:

D_{t+1}(i) = D_{t}(i) * e^(-a_t y_i h_t(x_i)) / Z_t(其中 Z_t 是选择的归一化因子,因此 D_{t+1} 是一个分布)。

  • 但是为什么权重更新的特定选择与特定弱学习器的错误率指数相乘?
  • 还有其他可能的更新吗?如果是,是否有证据表明此更新保证了学习过程的某种最优性?

我希望这是发布此问题的正确位置,如果不是,请重定向我!
提前感谢您提供的任何帮助。

4

1 回答 1

1

1)你的第一个问题:

a_t = k * ln( (1-e_t) / e_t )

由于训练数据上的误差受 Z_t)alpha) 的乘积限制,并且 Z_t(alpha) 是凸 wrt alpha,因此只有一个“全局”最优 alpha 可以最小化误差的上限。这就是你如何找到神奇的“阿尔法”的直觉

2)你的第二个问题:但是为什么权重更新的特定选择与特定弱学习器的错误率指数相乘?

简而言之:找到上述 alpha 的直观方法确实是提高准确性。这并不奇怪:你实际上更信任(通过给予更大的 alpha 权重)比其他人工作得更好的学习者,而对那些工作更差的学习者的信任更少(通过给予较小的 alpha 权重)。对于那些没有比以前的学习者获得新知识的学习者,您将权重 alpha 分配为等于 0。

有可能证明(见)最终的提升假设产生的训练误差为

exp(-2 \sigma_t (1/2 - epsilon_t)^2 )

3)您的第三个问题:还有其他可能的更新吗?如果是,是否有证据表明此更新保证了学习过程的某种最优性?

这很难说。但请记住,这里的更新正在提高“训练数据”的准确性(存在过度拟合的风险),但很难说它的普遍性。

于 2013-09-07T22:51:27.157 回答