Nachdem ich OpenCV für Boosting verwendet habe, versuche ich meine eigene Version von% zu implementieren. co_de% Algorithmus (schau hier , hier und das Originalpapier für einige Referenzen).
Beim Lesen des gesamten Materials habe ich einige Fragen bezüglich der Implementierung des Algorithmus gestellt.
1) Es ist mir nicht klar, wie die Gewichte a_t jedes schwachen Lernenden zugewiesen sind.
In allen Quellen, auf die ich hingewiesen habe, ist die Wahl Adaboost
, wobei k eine positive Konstante ist und e_t die Fehlerrate des bestimmten schwachen Lernenden.
Auf Seite 7 dieser Quelle steht dieser bestimmte Wert minimiert eine gewisse konvexe differenzierbare Funktion, aber ich verstehe die Passage wirklich nicht.
Kann mir bitte jemand das erklären?
2) Ich habe einige Zweifel am Verfahren der Gewichtsaktualisierung der Trainingsproben.
Natürlich sollte es so gemacht werden, dass es eine Wahrscheinlichkeitsverteilung bleibt. Alle Referenzen übernehmen diese Wahl:
D_ {t + 1} (i) = D_ {t} (i) * e ^ (- a_t y_i h_t (x_i)) / Z_t (wobei Z_t ist a Normierungsfaktor so gewählt, dass D_ {t + 1} eine Verteilung ist.
Ich hoffe, dass dies der richtige Ort ist, um diese Frage zu stellen, wenn nicht, bitte leite mich um!
Vielen Dank im Voraus für Ihre Hilfe.
1) Ihre erste Frage:
%Vor%Da der Fehler bei Trainingsdaten durch das Produkt von Z_t) alpha) begrenzt ist und Z_t (alpha) konvex ist wr.t. Alpha, und daher gibt es nur ein "globales" optimales Alpha, das die Obergrenze des Fehlers minimiert. Dies ist die Intuition, wie Sie das magische "Alpha"
finden2) Ihre zweite Frage: Aber warum ist die spezielle Wahl der Gewichtsaktualisierung multiplikativ mit der Exponentialrate der Fehlerrate, die von dem bestimmten schwachen Lerner gemacht wird?
Um es kurz zu machen: Die intuitive Art, das obige Alpha zu finden, verbessert in der Tat die Genauigkeit. Das ist nicht verwunderlich: Sie vertrauen mehr auf die Lernenden, die besser arbeiten als die anderen, und vertrauen weniger (indem Sie ein kleineres Alpha geben) an diejenigen, die schlechter arbeiten. Für diejenigen Lernenden, die keine neuen Kenntnisse als die vorherigen Lernenden haben, weisen Sie Gewicht Alpha gleich 0 zu.
Es ist möglich zu beweisen, dass die letzte Boost-Hypothese zu einem Trainingsfehler führt, der durch
begrenzt ist %Vor%3) Ihre dritte Frage: Sind andere Updates möglich? Und wenn ja, gibt es einen Beweis dafür, dass dieses Update eine gewisse Optimalität des Lernprozesses garantiert?
Das ist schwer zu sagen. Aber denken Sie daran, dass das Update die Genauigkeit der "Trainingsdaten" verbessert (auf Risiko der Überanpassung), aber es ist schwer über seine Allgemeinheit zu sagen.
Tags und Links opencv machine-learning adaboost