Quali sono le differenze tra l'algoritmo Baum-Welch e l'allenamento di Viterbi?


18

Attualmente sto usando l'allenamento di Viterbi per un problema di segmentazione delle immagini. Volevo sapere quali sono i vantaggi / gli svantaggi dell'utilizzo dell'algoritmo Baum-Welch invece dell'allenamento di Viterbi.


3
Cosa intendi esattamente con "allenamento viterbi"?
bmargulies,

2
Nel mio problema ho una serie di dati con valori reali che sto modellando come un HMM (in particolare una miscela di funzioni a densità multipla ciascuna con parametri sconosciuti). Per ora presumo di conoscere le probabilità di transizione dello stato. Quello che intendo per Viterbi Trainig è il seguente algoritmo. 1) Assegnare arbitrariamente uno stato a ciascun punto dati (inizializzazione) 2) Eseguire MLE dei parametri della funzione di densità. 3) Rivalutare lo stato per ogni punto (può essere fatto con Viterbi Alg). 4) Andare al passaggio 2 e ripetere a meno che non siano soddisfatti i criteri di arresto.
Digital Gal,

1
La stessa domanda è stata posta sullo overflow dello stack: allenamento viterbi vs algoritmo baum-welch
Franck Dernoncourt

Risposte:


21

L'algoritmo Baum-Welch e l'algoritmo di Viterbi calcolano cose diverse.

Se conosci le probabilità di transizione per la parte nascosta del tuo modello e le probabilità di emissione per le uscite visibili del tuo modello, l'algoritmo di Viterbi ti offre la più probabile sequenza completa di stati nascosti subordinata sia alle tue uscite che alle tue specifiche del modello.

L'algoritmo Baum-Welch offre sia le probabilità di transizione nascoste più probabili sia l'insieme più probabile di probabilità di emissione dati solo gli stati osservati del modello (e, di solito, un limite superiore al numero di stati nascosti). Ottieni anche i punti di massima probabilità "puntuale" negli stati nascosti, che è spesso leggermente diverso dalla singola sequenza nascosta che è nel complesso molto probabile.

Se conosci il tuo modello e desideri solo gli stati latenti, non c'è motivo di utilizzare l'algoritmo Baum-Welch. Se non conosci il tuo modello, non puoi utilizzare l'algoritmo di Viterbi.

Modificato per aggiungere: vedi il commento di Peter Smit; c'è qualche sovrapposizione / vaghezza nella nomenclatura. Qualche ricerca mi ha portato a un capitolo di Luis Javier Rodríguez e Ines Torres in "Pattern Recognition and Image Analysis" (ISBN 978-3-540-40217-6, pp 845-857) che discute della velocità contro i compromessi di precisione di i due algoritmi.

In breve, l'algoritmo Baum-Welch è essenzialmente l'algoritmo Expectation-Maximization (EM) applicato a un HMM; come un rigoroso algoritmo di tipo EM sei sicuro di convergere ad almeno un massimo locale, e quindi per problemi unimodali trova l'MLE. Richiede due passaggi sui dati per ogni passaggio, tuttavia, e la complessità diventa molto grande in termini di lunghezza dei dati e numero di campioni di addestramento. Tuttavia, si finisce con la piena possibilità condizionale per i parametri nascosti.

L'algoritmo di allenamento di Viterbi (al contrario di "algoritmo di Viterbi") si avvicina all'MLE per ottenere un guadagno di velocità a scapito dell'accuratezza. Segmenta i dati e quindi applica l'algoritmo di Viterbi (come ho capito) per ottenere la sequenza di stato più probabile nel segmento, quindi utilizza quella sequenza di stato molto probabilmente per rivalutare i parametri nascosti. Questo, a differenza dell'algoritmo Baum-Welch, non fornisce la piena possibilità condizionale dei parametri nascosti, e quindi finisce per ridurre l'accuratezza risparmiando tempo significativo (il capitolo riporta da 1 a 2 ordini di grandezza).


7
Se ho ragione, mescoli l'allenamento di Viterbi e la decodifica di Viterbi.
Peter Smit,

1
Hai ragione. Non sapevo che esistesse una procedura che utilizzava solo l'algoritmo di Viterbi per calcolare anche le probabilità di transizione. Sembra - a ulteriori letture - come se ci fosse una sovrapposizione di nomenclatura tra analisi HMM a tempo discreto / stato discreto e analisi a tempo discreto / stato continuo usando distribuzioni di miscele gaussiane. La mia risposta parla all'impostazione HMM DTDS e non all'impostazione del modello di miscela.
Rich

@Rich: Potresti indicarmi del materiale accessibile (come il tutorial HMM originale di Rabiner) sull'allenamento di Viterbi?
Jacob,

4
L'allenamento di @Jacob Viterbi si chiama anche Segmental K-Means, vedi questo articolo di Juang e Rabiner.
alto,

1
@Anoldmaninthesea. Osservare le probabilità tra epoche è il modo normale di valutare la convergenza (la probabilità dovrebbe sempre aumentare ad ogni epoca e poi fermarsi quando si raggiungono i massimi locali). L'altra cosa che puoi fare è fermarti presto monitorando la probabilità di dati non utilizzati durante EM.
alto

0

Avanti-indietro viene utilizzato quando si desidera contare "cose ​​invisibili". Ad esempio, quando si utilizza EM per migliorare un modello tramite dati non supervisionati. Penso che il documento di Petrov sia un esempio. Nella tecnica a cui sto pensando, devi prima formare un modello con dati annotati con annotazioni abbastanza grossolane (ad esempio un tag per "Verbo"). Quindi dividi arbitrariamente la massa di probabilità per quello stato in due quantità leggermente diseguali e ti riqualifichi, correndo avanti e indietro per massimizzare la probabilità ridistribuendo la massa tra i due stati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.