2013-05-02 2 views
9

После использования OpenCV для boosting Я пытаюсь реализовать свою собственную версию Adaboost алгоритма (проверить here, here и the original paper для некоторых ссылок).Выбор параметров в AdaBoost

Прочитав весь материал, у меня возникли некоторые вопросы относительно реализации алгоритма.

1) Мне непонятно, как назначаются веса a_t каждого слабого ученика.

Во всех источниках я указал, что выбор a_t = k * ln((1-e_t)/e_t), k - положительная постоянная, а e_t - частота ошибок конкретного слабого учащегося.

На странице 7 этого source говорится, что это конкретное значение минимизирует некоторую выпуклую дифференцируемую функцию, но я действительно не понимаю этот проход.

  • Может ли кто-нибудь объяснить это мне?

2) У меня есть некоторые сомнения относительно процедуры обновления веса образцов обучения.

Очевидно, что это должно быть сделано таким образом, чтобы гарантировать, что они остаются распределением вероятности. Все ссылки принять этот выбор:

D_ {т + 1} (я) = D_ {т} (я) * е^(- a_t y_i h_t (X_i))/Z_t (где Z_t является a коэффициент нормировки, выбранный таким образом, что D_ {t + 1} является распределением).

  • Но почему конкретный выбор обновления веса мультипликативного с экспонентом коэффициента ошибок сделана конкретным слабым учеником?
  • Возможны ли какие-либо другие обновления? И если да, то есть ли доказательство того, что это обновление гарантирует некоторую оптимальность учебного процесса?

Надеюсь, это подходящее место для размещения этого вопроса, если нет, пожалуйста, перенаправьте меня!
Заранее благодарим за любую помощь, которую вы можете предоставить.

+0

Вы знакомы с выпуклой оптимизацией вообще? Если нет, объяснение этого отрывка займет некоторое время (курс колледжа по оптимизации занимает семестр) – AlexK

+0

Да, другая схема обновления веса возможна, если вы выберете другую целевую функцию (посмотрите «целевую функцию» в выпуклой книге оптимизации) , Для другой схемы обновления веса google «LogitBoost», для руководства по выпуклой оптимизации см. Http://www.stanford.edu/~boyd/cvxbook/ – AlexK

+0

@AlexK - Я знаком с выпуклой оптимизацией, но все равно мне понадобится объяснения. Вы можете мне помочь? – Matteo

ответ

1

1) Ваш первый вопрос:

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

Поскольку ошибка обучающих данных ограничена произведением Z_t) альфа) и Z_t (альфа) является выпуклым w.r.t. alpha, и, следовательно, существует только одна «глобальная» оптимальная альфа, которая минимизирует верхнюю границу ошибки. Это интуиция в том, как вы находите волшебную «альфа»

2) Ваш второй вопрос: Но почему конкретный выбор обновления веса мультипликативен с показателем частоты ошибок, сделанным конкретным слабым учащимся?

Чтобы сократить его, интуитивно понятный способ нахождения вышеуказанной альфа действительно повышает точность. Это неудивительно: вы на самом деле доверяете больше (давая больший альфа-вес) учащимся, которые работают лучше других, и меньше доверяют (отдавая меньшую альфу) тем, кто хуже работает.Для тех учащихся, не Brining никаких новых знаний, чем предыдущие ученики, назначать веса альфа равного 0.

Можно доказать (см), что окончательные рост ошибки с получением обучения гипотезы ограничены

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

3) Ваш третий вопрос: Возможны ли какие-либо другие обновления? И если да, то есть ли доказательство того, что это обновление гарантирует некоторую оптимальность учебного процесса?

Это трудно сказать. Но просто помните, что в этом обновлении повышается точность «учебных данных» (с риском переустановки), но трудно сказать об их общности.

 Смежные вопросы

  • Нет связанных вопросов^_^