İleri geri ve Viterbi algoritmaları arasındaki fark nedir?


44

Gizli Markov modellerinde (HMM) ileri-geri algoritması ile Viterbi algoritması arasındaki farkların ne olduğunu bilmek istiyorum .


2
Algoritmaların açıklamaları ( burada ve burada ) sorunuza cevap verir mi yoksa başka bir şey mi arıyorsunuz? Hangi algoritmayı ne zaman kullanacağınızı merak ediyor musunuz? Kendi yararları hakkında bir tartışma mı arıyorsunuz?
MånsT

Yanıtlar:


65

İlk önce biraz arka plan biraz şeyleri temizler.

HMM'lerden (Gizli Markov Modelleri) bahsederken, göz önünde bulundurulması gereken 3 problem vardır:

  1. Değerlendirme sorunu

    • Değerlendirme sorunu şu soruyu cevaplar: belirli bir model tarafından belirli bir sembol dizisinin üretilme olasılığı nedir?
    • Değerlendirme için iki algoritma kullanıyoruz: ileri algoritma veya geri algoritma (bunları ileri geri algoritması ile karıştırmayın).
  2. Çözme sorunu

    • Kod çözme sorunu şu soruyu yanıtlar: Bir sembol dizisi (gözlemleriniz) ve bir model verildiğinde, diziyi oluşturan durumların en muhtemel dizisi nedir.
    • Kod çözme için Viterbi algoritmasını kullanıyoruz .
  3. Eğitim sorunu

    • Eğitim sorunu şu soruyu yanıtlıyor: Bir model yapısı ve bir dizi dizi göz önüne alındığında, verilere en uygun modeli bulun.
    • Bu problem için aşağıdaki 3 algoritmayı kullanabiliriz:
      1. MLE (maksimum olabilirlik tahmini)
      2. Viterbi eğitimi (Viterbi kod çözme ile karıştırmayın)
      3. Baum Welch = ileri geri algoritması

Ö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.

  1. İleri algoritması ile ileri olasılıkları hesaplayın
  2. Geriye doğru algoritma ile geriye dönük olasılıkları hesapla
  3. Mevcut dizinin model geçişlerine katkısını hesaplayın, mevcut dizinin modelin emisyon olasılıklarına katkısını hesaplayın.
  4. Yeni model parametrelerini hesaplayın (başlangıç ​​olasılıkları, geçiş olasılıkları, emisyon olasılıkları)
  5. Modelin yeni log olasılığını hesaplayın
  6. İşlem kaydı olasılığındaki değişiklik verilen bir eşikten daha küçük olduğunda veya en fazla sayıda yineleme geçtiğinde durun.

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.


24

İ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ığı.


15

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:

görüntü tanımını buraya girin

görüntü tanımını buraya girin

Notlar:

  • πx gözlemlenen emisyon (ları), HMM'nin parametreleridir.π
  • yol = bir dizi emisyon
  • çözme = çıkarım
  • öğrenme = eğitim = parametre tahmini
  • Bazı makaleler (örneğin, {1}) Baum-Welch'in ileri-geri algoritması ile aynı olduğunu iddia eder, ancak Masterfool ve Wikipedia ile aynı fikirdeyim: Baum-Welch ileri-geri algoritmasını kullanan bir beklenti-maksimizasyon algoritmasıdır. Bu iki örnek ayrıca Baum Welch'i ileri-geri algoritmasından ayırıyor.

Referanslar:


12

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

https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm


2

@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.

görüntü tanımını buraya girin


Verilerimizin uzunluk 4 dizisi olduğunu varsayalım. (Walk, Shop, Walk, Clean). İki algoritma farklı şeyler verecektir.

  • İleri geri algoritması , her gizli durumun olasılığını verecektir . İşte bir örnek. Not, tablodaki her sütun kadardır .1

görüntü tanımını buraya girin

  • Viterbi algoritması , gizli durumların en muhtemel sırasını verecektir . İşte bir örnek. Ayrıca, bu gizli durum dizilimi ile ilgili bir olasılık da olduğuna dikkat edin. Bu sekansta maksimum prob var. Diğer tüm diziler üzerinde (örneğin, tüm dizileri için tüm ).24=16SunnyRainy

görüntü tanımını buraya girin


İşte Rdemo 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))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.