2009-12-14 15 views
18

Qual è la differenza tra l'algoritmo Forward-backward sul modello n-gram e l'algoritmo di Viterbi sul modello Hidden Markov (HMM)?Qual è la differenza tra l'algoritmo Forward-backward e l'algoritmo di Viterbi?

Quando rivedo l'implementazione di questi due algoritmi, l'unica cosa che ho trovato è che la probabilità di transazione proviene da diversi modelli probabilistici.

C'è una differenza tra questi 2 algoritmi?

risposta

16

L'algoritmo Forward-Backward combina il passo avanti e il passo indietro per ottenere la probabilità di essere in ogni stato in un momento specifico. Fare questo per tutti i passaggi temporali può quindi darci una sequenza di stati individualmente più probabili in ogni momento (sebbene non sia garantita una sequenza valida, poiché considera lo stato individuale ad ogni passaggio, e può succedere che la probabilità p(q_i -> q_j)=0 nel modello di transizione), in altre parole:

equation 1, dove equation 2

D'altra parte, Viterbi algoritmo trova la sequenza di stati probabilmente proposta una sequenza di osservazione, massimizzando un diverso optimality criterio:

Equation 3

suggerisco si fa riferimento a questo documento noto per una spiegazione dettagliata (vedi Problema # 2):

LAWRENCE R. Rabiner, un tutorial su Hidden Markov Models e selezionati Applicazioni in Speech riconoscimento

5

Sinteticamente messo:

avanti-indietro se viene utilizzato solo voglia di prevedere ciò che il più probabile token è in un particolare momento. Prenderà in considerazione tutte le possibili sequenze e farà una media su di esse per trovare il token più probabile in quel momento. Quindi la sequenza che tornerai non sarà una sequenza vera, ma una raccolta dei token più probabili quando considererai tutte le possibili sequenze.

Viterbi viene utilizzato per trovare la sequenza di eventi più probabile. Questo guarderà ogni sequenza e semplicemente selezionerà la sequenza che è più probabile.

0

Dai un'occhiata alle pagine 262 - 264 di Rabiner's paper e dovrebbe essere tutto chiaro. Ecco una risposta -da direttamente citato questo carta- alla tua domanda:

" ... Va notato che l'algoritmo di Viterbi è simile (tranne che per il passo backtracking) in esecuzione al avanti calcolo dell'algoritmo forward-backward (Equazioni 19-21) La differenza principale è la massimizzazione in (equazione 33a) rispetto agli stati precedenti, che viene utilizzata al posto della procedura di somma in (Equazione 20). "

Problemi correlati