【问题标题】:Parameter selection in AdaboostAdaboost 中的参数选择
【发布时间】:2013-04-27 02:45:11
【问题描述】:

在将 OpenCV 用于boosting 之后,我正在尝试实现我自己的Adaboost 算法版本(请查看hereherethe 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


【解决方案1】:

1) 你的第一个问题:

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

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

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

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

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

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

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

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

【讨论】: