【发布时间】:2013-04-27 02:45:11
【问题描述】:
在将 OpenCV 用于boosting 之后,我正在尝试实现我自己的Adaboost 算法版本(请查看here、here 和the original paper 以获得一些参考)。
通过阅读所有材料,我提出了一些关于算法实现的问题。
1) 我不清楚每个弱学习器的权重 a_t 是如何分配的。
在我指出的所有来源中,选择是a_t = k * ln( (1-e_t) / e_t ),k 是一个正常数,e_t 是特定弱学习器的错误率。
在source 的第 7 页上,它说该特定值最小化了某个凸可微函数,但我真的不明白这段话。
谁能给我解释一下?
2) 我对训练样本的权重更新过程有一些疑问。
显然,应该以确保它们保持概率分布的方式来完成。所有参考文献都采用这种选择:
D_{t+1}(i) = D_{t}(i) * e^(-a_ty_ih_t(x_i)) / Z_t(其中 Z_t 是 选择归一化因子以便 D_{t+1} 是一个分布)。
- 但是为什么权重更新的特定选择与特定弱学习器的错误率指数相乘?
- 还有其他可能的更新吗?如果是,是否有证据表明此更新保证了学习过程的某种最优性?
我希望这是发布此问题的正确位置,如果不是,请重定向我!
提前感谢您提供的任何帮助。
【问题讨论】:
-
你熟悉凸优化吗?如果没有,解释这段话需要一段时间(大学优化课程需要一个学期)
-
是的,如果您选择不同的目标函数(在凸优化书中查找“目标函数”),则可以使用不同的权重更新方案。对于不同的权重更新方案谷歌“LogitBoost”,凸优化指南见stanford.edu/~boyd/cvxbook
-
@AlexK - 我熟悉凸优化,但我仍然需要一些解释。你能帮帮我吗?
-
这是我不久前在 AB 上做的一个演示:cs.ucf.edu/courses/cap6411/cap6411/spring2006/Lecture10.pdf 在幻灯片 4 上,看看你是否可以对 Gab wrt alpha 进行导数,将其等同于 0 并为 AdaBoost 导出最佳 alpha更新。对于您的第一个问题,这将是一个很好的起点。
-
@AlexK - 感谢您的教程!前几天我研究了它,它帮助我理解了一些方面,但对我来说并不是一切都清楚......你有没有机会想出一个完整的答案?
标签: opencv machine-learning adaboost