Addestramento di un modello nascosto di Markov, più istanze di addestramento


18

Ho implementato un HMM discreto secondo questo tutorial http://cs229.stanford.edu/section/cs229-hmm.pdf

Questo tutorial e altri parlano sempre dell'addestramento di un MMM dato una sequenza di osservazione.

Cosa succede quando ho più sequenze di allenamento? Devo solo eseguirli in sequenza, allenando il modello dopo l'altro?

Un'altra opzione è concatenare le sequenze a una e allenarmi su di essa, ma poi avrò transizioni di stato dalla fine di una sequenza all'inizio di quella successiva che non sono reali.


Vedi questo documento pdfs.semanticscholar.org/4000/… Anche se estendono le idee a uno scenario di osservazione non indipendente, mi è stato molto utile capire il semplice caso in cui si ipotizza l'indep
Marc Torrellas,

l' hmmlearnimplementazione di HMM ha già supportato l'addestramento di HMM con sequenze multiple. Basta vedere HMM allenamento con sequenze multiple
Wenmin Wu

Risposte:


16

Né concatenare né eseguire ogni iterazione dell'allenamento con una sequenza diversa è la cosa giusta da fare. L'approccio corretto richiede alcune spiegazioni:

Uno di solito addestra un HMM usando un algoritmo EM. Questo consiste in diverse iterazioni. Ogni iterazione ha una fase "stimata" e una fase "massimizza". Nel passaggio "massimizza", allinei ogni vettore di osservazione x con uno stato s nel tuo modello in modo da massimizzare alcune misure di probabilità. Nel passaggio "stima", per ogni stato s, si stimano (a) i parametri di un modello statistico per i vettori x allineati a se (b) le probabilità di transizione dello stato. Nella seguente iterazione, il passaggio di massimizzazione viene eseguito nuovamente con i modelli statistici aggiornati, ecc. Il processo viene ripetuto un determinato numero di volte o quando la misura della probabilità smette di aumentare significativamente (ovvero, il modello converge in una soluzione stabile). Infine, (almeno nel riconoscimento vocale) un MMM avrà in genere un "inizio" designato

Pertanto, se si dispone di più sequenze di allenamento, nel passaggio di stima è necessario eseguire ciascuna sequenza in modo che il suo vettore di osservazione iniziale si allinei con lo stato iniziale. In questo modo, le statistiche su quello stato iniziale sono raccolte dalle prime osservazioni su tutte le sequenze di osservazione e, in generale, i vettori di osservazione sono allineati agli stati più probabili in ogni sequenza. Faresti il ​​passo massimo (e le iterazioni future) solo dopo aver fornito tutte le sequenze per l'allenamento. Alla prossima iterazione, faresti esattamente la stessa cosa.

Allineando l'inizio di ciascuna sequenza di osservazione allo stato iniziale si evita il problema di concatenare sequenze in cui si modellerebbero erroneamente le transizioni tra la fine di una sequenza e l'inizio della successiva. E usando tutte le sequenze su ogni iterazione eviti di fornire sequenze diverse ogni iterazione, che come ha osservato il risponditore, non garantirà la convergenza.


Questo metodo richiede che ogni sequenza di allenamento abbia la stessa lunghezza?
Nate,

2
No, non lo fa. Uno di solito progetta un HMM in modo da consentire auto-loop (lo stesso stato usato più volte consecutivamente) e per consentire più stati verso cui passare. Queste caratteristiche consentono a un HMM di segnare sequenze di lunghezze diverse.
JeffM

4

Lawrence Rabiner descrive un approccio matematicamente fondato in questo tutorial di IEEE 77 . Il tutorial è anche il sesto capitolo del libro Fundamentals of Speech Recognition di Rabiner e Juang.

RIA Davis et. al. fornisce alcuni suggerimenti aggiuntivi in questo documento .

Non ho studiato a fondo la matematica, ma per me l'approccio di Rabiner sembra il più promettente, mentre l'approccio di Davis sembra mancare delle basi matematiche.


2

Se segui la matematica, l'aggiunta di ulteriori esempi di allenamento implica il ricalcolo del modo in cui calcoli la probabilità. Invece di sommare le dimensioni, fai anche la somma degli esempi di addestramento.

Se ti alleni un modello dopo l'altro, non vi è alcuna garanzia che l'EM coprirà la copertura per tutti gli esempi di addestramento e si finiranno con stime errate.

Ecco un documento che lo fa per il filtro Kalman (che è un HMM con probabilità gaussiane), può darti un'idea di come modificare il tuo codice in modo da poter supportare più esempi.

http://ntp-0.cs.ucl.ac.uk/staff/S.Prince/4C75/WellingKalmanFilter.pdf

Ha anche una lezione su HMM, ma la logica è piuttosto semplice.


1
Non ho visto a cosa ti riferissi. Puoi indicarmi la giusta direzione? Grazie.
Ha funzionato il

0

Questo è più di un commento sull'articolo di RIA Davis a cui fa riferimento Bittenus (sopra) . Dovrò essere d'accordo con Bittenus, non c'è molto di un supporto matematico dietro le tecniche proposte nel documento - è più di un confronto empirico.

L'articolo esamina solo il caso in cui l'HMM ha una topologia limitata (feed-forward). (nel mio caso ho una topologia standard e ho trovato i risultati più coerenti implementando una media non ponderata di tutti i modelli addestrati con Baum-Welch. Questo approccio è menzionato nel documento ma citato solo con risultati marginali).

Un altro tipo di addestramento sulla media dei modelli è stato dettagliato da RIA Davis in un articolo di giornale e utilizza Vitterbi Training invece di Baum-Welch che confronta e valuta gli algoritmi di addestramento dell'ensemble HMM usando i criteri del treno e dei test e il numero di condizioni . Tuttavia, questo documento esplora solo gli HMM con la stessa topologia feed-forward limitata. (Ho intenzione di esplorare questo metodo e aggiornerò questo post con i miei risultati.)

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.