2013-05-02 8 views
9

Po użyciu OpenCV dla boosting Próbuję zaimplementować własną wersję algorytmu Adaboost (sprawdź here, here i the original paper dla niektórych odniesień).Wybór parametrów w adaboost

Czytając cały materiał, wymyśliłem kilka pytań dotyczących implementacji algorytmu.

1) Nie jest dla mnie jasne, w jaki sposób przypisuje się ciężary a_t każdego słabego ucznia.

We wszystkich źródłach wskazałem, że jest to a_t = k * ln((1-e_t)/e_t), gdzie k jest dodatnią stałą i e_t wskaźnikiem błędu danego słabego ucznia.

Na stronie 7 tego source mówi, że ta konkretna wartość minimalizuje pewną wypukłą funkcję różniczkowalną, ale naprawdę nie rozumiem tego fragmentu.

  • Czy ktoś może mi to wyjaśnić?

2) Mam pewne wątpliwości dotyczące procedury aktualizacji wagi próbek szkoleniowych.

Oczywiście należy to zrobić w taki sposób, aby zagwarantować, że pozostaną one rozkładem prawdopodobieństwa. Wszystkie odniesienia do przyjęcia tego wyboru:

D_ {t + 1} (I) = D_ {t} (I), * e^(- a_t y_i h_t (X_i))/Z_t (gdzie Z_t jest współczynnik normalizacji wybrany tak, że D_ {t + 1} jest rozkładem).

  • Ale dlaczego jest szczególny dobór aktualizacji wagi multiplikatywnego z wykładniczym stopy błędu popełnionego przez danego słabego ucznia?
  • Czy są dostępne inne aktualizacje? A jeśli tak, to czy istnieje dowód, że ta aktualizacja gwarantuje jakąś optymalność procesu uczenia się?

Mam nadzieję, że to odpowiednie miejsce, aby opublikować to pytanie, jeśli nie, proszę przekierować mnie!
Z góry dziękujemy za wszelką pomoc, jaką możesz zapewnić.

+0

Czy znasz w ogóle optymalizację wypukłą? Jeśli nie, wyjaśnienie tego fragmentu zajmie trochę czasu (kurs kolegium z optymalizacji trwa semestr) – AlexK

+0

Tak, inny schemat aktualizacji wagi jest możliwy, jeśli wybierzesz inną funkcję celu (wyszukaj "funkcję celu" w książce optymalizacji wypukłej) . Dla innego schematu aktualizacji wagi google "LogitBoost", dla przewodnika dotyczącego optymalizacji wypukłej zobacz http://www.stanford.edu/~boyd/cvxbook/ – AlexK

+0

@AlexK - Jestem zaznajomiony z optymalizacją wypukłą, ale nadal potrzebowałbym wyjaśnienia. Możesz mi pomóc? – Matteo

Odpowiedz

1

1) Twoje pierwsze pytanie:

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

Ponieważ błąd na danych szkolenia jest ograniczona przez iloczyn Z_t) alfa) i Z_t (alfa) jest wypukła w.r.t. alfa, a zatem istnieje tylko jeden "globalny" optymalny alfa, który minimalizuje górną granicę błędu. To jest intuicja, jak znaleźć magię "alpha"

2) Twoje drugie pytanie: Ale dlaczego konkretny wybór aktualizacji wagi jest multiplikatywny z wykładniczą stopą błędu określoną przez słabego ucznia?

Krótko mówiąc: intuicyjny sposób znalezienia powyższej alfa rzeczywiście poprawia dokładność. Nie jest to zaskakujące: w rzeczywistości bardziej ufasz (zwiększając masę alfa) uczącym się, którzy pracują lepiej niż inni, i ufasz mniej (dając mniejszą alfa) tym, którzy pracują gorzej.Dla tych uczniów wnoszenia żadnej nowej wiedzy niż poprzednie uczących przypisać alfa masy równe 0.

Jest to możliwe do udowodnienia (zobacz), że ostateczna wzmocniony błąd szkolenie uzyskując hipoteza ograniczony

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

3) Twoje trzecie pytanie: Czy są dostępne inne aktualizacje? A jeśli tak, to czy istnieje dowód, że ta aktualizacja gwarantuje jakąś optymalność procesu uczenia się?

Trudno powiedzieć. Ale pamiętaj, że aktualizacja poprawia dokładność "danych treningowych" (na ryzyko dopasowania), ale trudno powiedzieć, czy jest ona ogólna.