Hidden Markov Model (HMM)
Gizli Markov modeli (HMM), gürültülü gözlemlerden gizli durumlar dizisini çıkarır. Modelin parametreleri, Viterbi algoritması ve uygulamaları.
Gizli Markov modeli (HMM), sistemin doğrudan gözlemlenemeyen durumlar arasında geçiş yaptığı ve her gizli durumun gözlemlenebilir bir çıktı ürettiği bir dizinin olasılıksal modelidir. Ses kareleri veya DNA harfleri gibi gözlemlerden oluşan bir dizi verildiğinde HMM, örneğin sesin ardındaki sesbirimler veya harflerin ardındaki gen bölgeleri gibi, her gizli durum dizisinin olasılığını hesaplar. "Markov" adı temel varsayımını ifade eder: Bir sonraki durum yalnızca mevcut duruma bağlıdır. Leonard Baum ve çalışma arkadaşları teoriyi 1960'ların sonlarında geliştirdi; HMM'ler daha sonra onlarca yıl boyunca konuşma tanımaya güç verdi. Tamamen açık olasılıklardan oluşturulan HMM'ler, zaman serisi analizinde ve biyoinformatikte standart bir araç ve istatistiksel yapay zekânın klasik bir örneği olmayı sürdürüyor.
Bir HMM'nin Bileşenleri#
N gizli durumlu bir HMM, üç olasılık kümesiyle tanımlanır:
- Başlangıç olasılıkları (π): Her gizli durumda başlama olasılığı.
- Geçiş olasılıkları (A): Girdisi
A[i, j]olan N × N boyutlu bir matris, tek adımda i durumundan j durumuna geçme olasılığını gösterir; bu yapı gizli durumları bir Markov zinciri hâline getirir. - Yayılım olasılıkları (B): Mevcut durum verildiğinde her gözlemin olasılığı. Ayrık gözlemler bir tablo kullanır; akustik özellikler gibi sürekli gözlemler ise Gauss karışımları gibi dağılımlardan yararlanır.
İki varsayım modeli yönetilebilir kılar: Her durum yalnızca önceki duruma, her gözlem de yalnızca mevcut duruma bağlıdır. Zamana yayıldığında model, her biri bir gözlem üreten bir gizli durumlar zinciridir:
Üç Klasik HMM Problemi#
Lawrence Rabiner'ın 1989 tarihli, yaygın biçimde atıf alan öğreticisi HMM kullanımını üç soru etrafında düzenledi. Her sorunun, tüm Nᵀ olası durum dizilerini değerlendirmek yerine, maliyeti T gözlem için N² × T oranında büyüyen bir dinamik programlama yanıtı vardır:
- Değerlendirme: Belirli bir model altında bir gözlem dizisinin olasılığı nedir? İleri algoritma tüm gizli yolları toplar; böylece tanıyıcı bir ifadeyi en iyi açıklayan sözcük modelini seçer.
- Kod çözme: Gözlemleri en iyi açıklayan gizli durum dizisi hangisidir? Andrew Viterbi'nin 1967'de evrişimli kodları çözmek için yayımladığı Viterbi algoritması, olasılığı en yüksek tek yolu bulur; ileri-geri algoritması ise her zaman adımında her durumun olasılığını verir.
- Öğrenme: Bir dizi gözlem dizisine en iyi uyan parametreler hangileridir? Beklenti maksimizasyonunun bir uygulaması olan Baum-Welch algoritması, etiketlenmemiş dizilerden π, A ve B'yi kestirir. Durum dizileri etiketlendiğinde geçişleri ve yayılımları saymak yeterlidir.
Viterbi kod çözme işlemi NumPy ile birkaç satırda yapılabilir. Bu modelde kişinin yürüme veya koşma etkinliği gizlidir; bir izleyici her karede bir hız ölçümü bildirir ve etkinlikler bir kareden diğerine sürme eğilimindedir:
import numpy as np
states = ["walk", "run"]
start = np.array([0.8, 0.2]) # başlangıç durumu olasılıkları
trans = np.array([[0.9, 0.1], [0.1, 0.9]]) # etkinlikler kareler arasında sürme eğilimindedir
emit = np.array([[0.7, 0.25, 0.05], [0.1, 0.3, 0.6]]) # Yavaş, orta, hızlı için P(hız | durum)
obs = [0, 0, 2, 0, 0, 1, 2, 2, 1, 2] # kare başına hız ölçümleri
# Viterbi: her duruma ulaşmanın en iyi log olasılığı ve geriye dönük işaretçiler
logp = np.log(start) + np.log(emit[:, obs[0]])
back = []
for o in obs[1:]:
scores = logp[:, None] + np.log(trans) # satırlar: önceki durum, sütunlar: sonraki durum
back.append(scores.argmax(axis=0))
logp = scores.max(axis=0) + np.log(emit[:, o])
# En olası durum dizisini, en iyi son durumdan geriye doğru izleyin
path = [int(logp.argmax())]
for pointers in reversed(back):
path.insert(0, int(pointers[path[0]]))
print("Speeds: ", " ".join(["slow", "medium", "fast"][o] for o in obs))
print("Decoded:", " ".join(states[s] for s in path))Kod, walk walk walk walk walk run run run run run sonucunu çözümler. Kare 3'teki hızlı ölçüm "yürü" olarak kalır; çünkü koşuya geçip geri dönmek olasılığı düşük iki geçiş gerektirir. Kare 6 ve 9'daki orta hız ölçümleri ise çevrelerindeki hızlı kareler nedeniyle "koş" olur. Geçişleri göz ardı eden kare başına bir sınıflandırıcı, 3. kareyi koşu olarak etiketlerdi.
HMM'ler ve İlgili Modeller#
- Kalman filtresi: Doğrusal dinamiklere ve Gauss gürültüsüne sahip sürekli durumlar için aynı tahmin ve güncelleme özyinelemesini uygular. HMM'nin ileri algoritması, ayrık durumlar için bunun karşılığıdır.
- Bayes ağları: HMM, her zaman adımında bir gizli ve bir gözlemlenen değişkene sahip en basit dinamik Bayes ağıdır.
- Markov karar süreci (MDP): Gözlemlenen durumlara sahip bir Markov zincirine eylemler ve ödüller ekler; pekiştirmeli öğrenmenin temelini oluşturur.
- Yinelemeli sinir ağları ve transformer'lar: Büyük veri kümelerinden uzun menzilli, doğrusal olmayan bağımlılıkları öğrenir ve çoğu konuşma ve dil görevinde HMM'lerin yerini almıştır. HMM'ler çok daha az veri gerektirir ve olasılıklarının her biri doğrudan incelenebilir.
- Durum uzayı modelleri (SSM'ler): Mamba gibi derin öğrenme katmanları, kontrol teorisindeki durum uzayı fikrini paylaşır ve sürekli gizli bir vektörü öğrenilmiş, deterministik dinamiklerle günceller.
Gerçek Dünya Uygulamaları#
- Konuşma tanıma: 1980'lerden 2010'ların başlarına kadar çoğu tanıyıcı, her sesbirimi Gauss karışımı yayılımlara sahip küçük bir HMM ile modelledi. Hibrit sistemlerde yayılım modeli daha sonra derin sinir ağlarına geçti; uçtan uca modeller ise sonunda HMM'yi tamamen devre dışı bıraktı.
- Biyoinformatik: Profil HMM'leri, birbiriyle ilişkili protein veya DNA dizisi ailelerini tanımlar. HMMER, uzak akrabaları bulmak için dizi veritabanlarını tararken bu modellerden yararlanır ve Pfam protein ailesi veritabanının temelini oluşturur; gen bulucular da genomun bölümlerini HMM'lerle kodlayan veya kodlamayan olarak etiketler.
- Sözcük türü etiketleme: İlk dönem istatistiksel doğal dil işleme sistemleri, etiket dizilerinde Viterbi kod çözme kullanarak sözcükleri isim, fiil ve diğer sözcük türleri olarak etiketlerdi.
- Etkinlik tanıma: Vücut pozu dizileri veya giyilebilir sensör ölçümleri, ayakta durma, yürüme ya da düşme gibi etkinliklere çözümlenir. Ultralytics'in antrenman takibi çözümü bu türden iki durumlu bir diziyi izler: YOLO26 poz tahmini anahtar noktalarındaki (varsayılan olarak dirsek) eklem açısını kullanarak her kişiyi "yukarı" veya "aşağı" diye etiketler, 145°'nin üzerinde ve 90°'nin altında geçiş yapar ve yukarıdan aşağıya her değişimde bir tekrarı sayar.










