Gizli Markov modellerinde (HMM) ileri-geri algoritması ile Viterbi algoritması arasındaki farkların ne olduğunu bilmek istiyorum .
Gizli Markov modellerinde (HMM) ileri-geri algoritması ile Viterbi algoritması arasındaki farkların ne olduğunu bilmek istiyorum .
Yanıtlar:
İlk önce biraz arka plan biraz şeyleri temizler.
HMM'lerden (Gizli Markov Modelleri) bahsederken, göz önünde bulundurulması gereken 3 problem vardır:
Değerlendirme sorunu
Çözme sorunu
Eğitim sorunu
Özetlemek gerekirse, kod çözme problemi için Viterbi algoritmasını ve modelinizi bir dizi dizide eğitirken Baum Welch / Forward-backward komutunu kullanırsınız.
Baum Welch aşağıdaki şekilde çalışır.
Eğitim dizisindeki her dizi için.
Viterbi kod çözme denklemlerinin tam bir açıklamasına ve eğitim algoritmasına ihtiyacınız varsa, bana bildirin, sizi doğru yöne işaret edebilirim.
İleri-Geri, her bir durum için marjinal olasılık verir , Viterbi en muhtemel durum dizisinin olasılığını verir . Örneğin, HMM göreviniz her gün için güneşli ve yağmurlu hava tahmininde bulunmaktaysa, İleriye Doğru size her gün için "güneşli" olma ihtimalini söyler, Viterbi en güneşli ve yağmurlu günler dizisini verir. bu dizinin olasılığı.
Bu iki aşağıdaki slaydı {2} 'den, HMM ile birlikte kullanılan diğer tüm tipik algoritmalar arasında ileri-geri ve Viterbi algoritmalarını yerleştirmek için gerçekten iyi olduğunu düşünüyorum:
Notlar:
Referanslar:
Morat'ın cevabı bir noktada yanlıştır: Baum-Welch, bir HMM'nin parametrelerini eğitmek için kullanılan bir Beklenti-Maksimizasyon algoritmasıdır. Bu kullanan , her yineleme sırasında ileri-geri algoritması. İleri-geri algoritması gerçekten ileri ve geri algoritmalarının bir birleşimidir: bir ileri geçiş, bir geri geçiş. Kendi başına, ileri-geri algoritması bir HMM'nin parametrelerini eğitmek için kullanılmaz, ancak yalnızca yumuşatmak için kullanılır: bir durum dizisinin marjinal olasılıklarını hesaplar.
https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm
@Yaroslav Bulatov kesin bir cevap verdi. Geriye dönük ve Viterbi algoritmaları arasındaki farkları anlatmak için bir örnek daha eklerdim.
Bu bir HMM'ye sahip olduğumuzu varsayalım (Wikipedia HMM sayfasından). Not, model zaten verilmiştir, bu nedenle burada veri görevinden bir öğrenme yoktur.
Verilerimizin uzunluk 4 dizisi olduğunu varsayalım. (Walk, Shop, Walk, Clean)
. İki algoritma farklı şeyler verecektir.
Sunny
Rainy
İşte R
demo için bazı kodlar
library(HMM)
# in education setting,
# hidden state: Rainy and Sunny
# observation: Walk, Shop, Clean
# state transition
P <- as.matrix(rbind(c(0.7,0.3),
c(0.4,0.6)))
# emission prob
R <- as.matrix(rbind(c(0.1, 0.4, 0.5),
c(0.6,0.3, 0.1)))
hmm = initHMM(States=c("Rainy","Sunny"),
Symbols=c("Walk","Shop", "Clean"),
startProbs=c(0.6,0.4),
transProbs=P,
emissionProbs=R)
hmm
obs=c("Walk","Shop","Walk", "Clean")
print(posterior(hmm,obs))
print(viterbi(hmm, obs))