Chcę wiedzieć, jakie są różnice między algorytmem do przodu i do tyłu i algorytmem Viterbiego do wnioskowania w ukrytych modelach Markowa (HMM).
algorithms
hidden-markov-model
viterbi-algorithm
forward-backward
użytkownik34790
źródło
źródło
Odpowiedzi:
Najpierw trochę tła, może trochę to wyjaśnia.
Mówiąc o HMM (ukrytych modelach Markowa), na ogół należy rozważyć 3 problemy:
Problem z oceną
Problem z dekodowaniem
Problem treningowy
Podsumowując, używasz algorytmu Viterbi dla problemu dekodowania oraz Baum Welch / Forward-backward, kiedy trenujesz swój model na zestawie sekwencji.
Baum Welch działa w następujący sposób.
Dla każdej sekwencji w zestawie sekwencji treningowych.
Jeśli potrzebujesz pełnego opisu równań dla dekodowania Viterbiego i algorytmu treningowego daj mi znać, a mogę skierować cię we właściwym kierunku.
źródło
Forward-Backward daje marginalne prawdopodobieństwo dla każdego stanu , Viterbi daje prawdopodobieństwo najbardziej prawdopodobnej sekwencji stanów . Na przykład, jeśli Twoim zadaniem HMM jest przewidywanie pogody słonecznej i deszczowej na każdy dzień, funkcja Forward Backward poinformuje cię o prawdopodobieństwie, że będzie „słoneczna” każdego dnia, Viterbi poda najbardziej prawdopodobną sekwencję dni słonecznych / deszczowych, a prawdopodobieństwo tej sekwencji.
źródło
Uważam, że te dwa slajdy z {2} są naprawdę dobre do umiejscowienia algorytmów do przodu i do tyłu oraz wszystkich innych typowych algorytmów używanych w HMM:
Uwagi:
Bibliografia:
źródło
Odpowiedź Morata jest fałszywa w jednym punkcie: Baum-Welch jest algorytmem Expectation-Maximization, używanym do szkolenia parametrów HMM. To wykorzystuje algorytm przód-tył podczas każdej iteracji. Algorytm do przodu i do tyłu jest tak naprawdę kombinacją algorytmów do przodu i do tyłu: jedno przejście do przodu, jedno przejście do tyłu. Sam algorytm przewijania do przodu nie jest wykorzystywany do uczenia parametrów HMM, lecz jedynie do wygładzania: obliczania marginalnych prawdopodobieństw sekwencji stanów.
https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm
https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm
źródło
@Yaroslav Bulatov miał dokładną odpowiedź. Dodałbym jeden przykład tego, żeby powiedzieć różnice między algorytmami do przodu i do tyłu i algorytmami Viterbi.
Załóżmy, że mamy ten HMM (ze strony Wikipedii HMM). Uwaga: model jest już podany, więc nie ma tutaj uczenia się na podstawie zadania danych.
Załóżmy, że nasze dane to sekwencja o długości 4.
(Walk, Shop, Walk, Clean)
. Dwa algorytmy dają różne rzeczy.Sunny
Rainy
Oto
R
kod dla wersji demonstracyjnejźródło