2013-05-02 12 views
9

Dopo aver utilizzato per OpenCV boosting Sto cercando di implementare la mia versione del Adaboost dell'algoritmo (controllare here, here e the original paper per alcuni riferimenti).Selezione parametri in AdaBoost

Leggendo tutto il materiale sono emerse alcune domande riguardanti l'implementazione dell'algoritmo.

1) Non mi è chiaro come siano assegnati i pesi a_t di ogni studente debole.

In tutte le fonti Sono indicate la scelta è a_t = k * ln((1-e_t)/e_t), k essendo una costante positiva e E_T il tasso di errore del particolare studente debole.

Nella pagina 7 di questo source si dice che quel particolare valore minimizza una certa funzione convessa e differenziabile, ma io davvero non capisco il passaggio.

  • Qualcuno può spiegarmelo per favore?

2) Ho alcuni dubbi sulla procedura di aggiornamento del peso dei campioni di addestramento.

Chiaramente dovrebbe essere fatto in modo tale da garantire che rimangano una distribuzione di probabilità. Tutti i riferimenti adottano questa scelta:

D_ {t + 1} (i) = D_ {t} (i) * e^(- a_t y_i h_t (x_i))/Z_t (dove Z_t è a fattore di normalizzazione scelto in modo che D_ {t + 1} sia una distribuzione).

  • Ma perché è la particolare scelta di aggiornamento peso moltiplicativo con l'esponenziale di tasso di errore fatta dalla particolare studente debole?
  • Sono disponibili altri aggiornamenti? E se sì c'è una prova che questo aggiornamento garantisce un qualche tipo di ottimalità del processo di apprendimento?

Spero che questo sia il posto giusto per postare questa domanda, altrimenti ti prego reindirizzare me!
Grazie in anticipo per qualsiasi aiuto tu possa fornire.

+0

Conoscete l'ottimizzazione convessa a tutti? In caso contrario, spiegare questo passaggio avrà un po '(un corso universitario di ottimizzazione prende un semestre) – AlexK

+0

Sì, un diverso schema di aggiornamento del peso è possibile se si sceglie una funzione obiettivo diverso (guardare in alto "funzione obiettivo" in un libro di ottimizzazione convessa) . Per un diverso schema di aggiornamento del peso su google "LogitBoost", per una guida sull'ottimizzazione convessa vedere http://www.stanford.edu/~boyd/cvxbook/ – AlexK

+0

@AlexK - Ho familiarità con l'ottimizzazione convessa, ma comunque avrei bisogno di alcuni spiegazioni. Mi potete aiutare? – Matteo

risposta

1

1) La tua prima domanda:

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

Dal momento che l'errore sui dati di formazione è delimitata da prodotto della Z_t) alfa), e Z_t (alfa) è w.r.t. convessa alfa, e quindi c'è solo un alfa ottimale "globale" che minimizza il limite superiore dell'errore. Questa è l'intuizione di come trovare la magia "alpha"

2) La tua seconda domanda: Ma perché è la particolare scelta di aggiornamento peso moltiplicativo con l'esponenziale di tasso di errore fatto dalla particolare discente deboli?

Per farla breve: il modo intuitivo di trovare l'alfa sopra è in effetti migliorare l'accuratezza. Questo non è sorprendente: in effetti, si sta fidando di più (dando un peso alfa più grande) degli studenti che lavorano meglio degli altri, e si fidano di meno (dando un alfa più piccolo) a quelli che lavorano di peggio.Per quegli studenti salagione nessuna nuova conoscenza che gli studenti precedenti, si assegna alpha peso pari a 0.

E 'possibile dimostrare (vedi) che l'errore finale potenziato ipotesi di formazione cedendo delimitata da

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

3) La tua terza domanda: Ci sono altri aggiornamenti possibili? E se sì c'è una prova che questo aggiornamento garantisce un qualche tipo di ottimalità del processo di apprendimento?

Questo è difficile da dire. Ma ricorda solo che l'aggiornamento sta migliorando la precisione dei "dati di allenamento" (a rischio di eccessivo adattamento), ma è difficile dire sulla sua generalità.