Vediamo prima le differenze tra HMM e RNN.
Da questo documento: un tutorial sui modelli nascosti di Markov e sulle applicazioni selezionate nel riconoscimento vocale possiamo imparare che HMM dovrebbe essere caratterizzato dai seguenti tre problemi fondamentali:
Problema 1 (Probabilità): dati un HMM λ = (A, B) e una sequenza di osservazione O, determinare la probabilità P (O | λ).
Problema 2 (Decodifica): data una sequenza di osservazione O e un MMM λ = (A, B), scopri la migliore sequenza di stati nascosti Q.
Problema 3 (Apprendimento): data una sequenza di osservazione O e l'insieme di stati nell'HMM, apprendere i parametri HMM A e B.
Possiamo confrontare l'HMM con l'RNN da quelle tre prospettive.
Probabilità
Probabilità in HMM (Figura A.5)
Modello di linguaggio in RNN
In HMM calcoliamo la probabilità di dove la rappresenta tutte le possibili sequenze di stati nascosti e la probabilità è reale probabilità nel grafico. Mentre in RNN l'equivalente, per quanto ne so, è l'inverso della perplessità nella modellazione del linguaggio in cui e non sommiamo gli stati nascosti e non otteniamo la probabilità esatta. P(O)=∑QP(O,Q)=∑QP(O|Q)P(Q)Q1p(X)=∏Tt=11p(xt|x(t−1),...,x(1))−−−−−−−−−−−−−−−√T
decodifica
In HMM l'attività di decodifica sta calcolando e determinando quale sequenza di variabili è la fonte sottostante di qualche sequenza delle osservazioni usando l'algoritmo di Viterbi e la lunghezza del risultato è normalmente uguale all'osservazione; mentre in RNN la decodifica sta calcolando e la lunghezza di non è normalmente pari osservazione .vt(j)=maxNi=1vt−1(i)aijb(ot)P(y1,...,yO|x1,...,xT)=∏Oo=1P(yo|y1,...,yo−1,co)YX
Decodifica in HMM (Figura A.10)
Decodifica in RNN
Apprendimento
L'apprendimento in HMM è molto più complicato di quello in RNN. In HMM di solito utilizzava l'algoritmo Baum-Welch (un caso speciale dell'algoritmo Expectation-Maximization) mentre in RNN di solito è la discesa del gradiente.
Per le tue domande:
Quali problemi di input sequenziali sono più adatti per ciascuno?
Quando non si dispone di dati sufficienti, utilizzare l'HMM e quando è necessario calcolare la probabilità esatta, l'HMM sarebbe anche una soluzione migliore (attività generative che modellano il modo in cui i dati vengono generati). Altrimenti, puoi usare RNN.
La dimensionalità dell'input determina quale è una corrispondenza migliore?
Non credo, ma potrebbe essere necessario più tempo all'HMM per sapere se gli stati nascosti sono troppo grandi poiché la complessità degli algoritmi (avanti indietro e Viterbi) è sostanzialmente il quadrato del numero di stati discreti.
I problemi che richiedono una "memoria più lunga" si adattano meglio a un LSTM RNN, mentre i problemi con i modelli di input ciclici (borsa, condizioni meteorologiche) sono più facilmente risolti da un HMM?
In HMM anche lo stato corrente è influenzato dagli stati e dalle osservazioni precedenti (dagli stati parent) e puoi provare il modello Markov nascosto del secondo ordine per "memoria più lunga".
Penso che puoi usare RNN per fare quasi
Riferimenti
- Elaborazione del linguaggio naturale con Deep Learning CS224N / Ling284
- Modelli nascosti di Markov