Ukryte modele Markowa (HMM)
Transkrypt
Ukryte modele Markowa (HMM)
Piotr Szczuko UKRYTE MODELE MARKOWA HMM – HIDDEN MARKOV MODELS Ukryte modele Markowa Ukryte modele Markowa są statystyczną metodą klasyfikacji sekwencji zdarzeń. Do celów rozpoznawania mowy po raz pierwszy zostały użyte przez Bakera, Jelinka i Levinsona (firma IBM) (1975) Sygnał – ciąg „zdarzeń” które są parametryzowane Segmenty 10-30ms, opisywane wektorami parametrów Zakłada się, że w segmencie sygnał jest stacjonarny Słowo (klasa) to ciąg Obserwacji/zdarzeń/segmentów O=o1, o2, … oT Gdzie T=liczba segmentów, na które podzielono słowo Podsumowanie (1) Klasa = pojedyncze słowo Obiekt = ciąg obserwacji, sposób wypowiedzenia słowa Klasyfikacja = porównanie ciągu obserwacji do zapamiętanego wzorca Automat skończony Każde słowo wzorcowe (klasa) jest osobnym automatem skończonym o N-stanach: Q = {q1, q2, ... ,qN} Model markowa definiujemy jako λ = <π, A, B>, gdzie: π = [π1, π2, ... , πN] rozkład prawdopodobieństw znalezienia się w stanie qi w chwili t = 0, A = [aij] (i,j =1.. N) Macierz prawdopodobieństw przejść między stanami, B = [bi(oj)] (i = 1.. N, j = 1.. M ; M – liczba możliwych zdarzeń generowanych przez dany stan) macierz prawdopodobieństw pojawienia się j-tej obserwacji w stanie qi: bi(oj) = P(oj| qi) Przykład Model słowa „to” Przejścia A = [aij] Stany Q = {q1, q2}={A,B} 0,2 P-stwa początkowe π = [π1, π2] B = [bi(oj)] Obserwacje: 1,0 0,8 A 0,9 „t” 0,1 B 0,05 „inne” 0,95 „o” Budowa klasyfikatora Przygotowanie danych: Rejestracja sygnałów, segmentacja, parametryzacja, Słownik - transkrypcja słów na obserwacje (np. „tszy”, „ośem”) Gramatyka – jakie słowa występują po sobie (np. „skasuj+to”) Trenowanie ukrytych modeli Markowa na podstawie każdej z reprezentacji danego słowa Np. wszystkich powtórzeń słowa „to” Określenie złożoności modelu (liczby stanów modelu), Prowadzi do wyznaczenia λ = <π, A, B> dla każdego słowa Opracowanie procedury klasyfikacji (o tym dalej) Trening Algorytmy: Viterbiego, Baum-Welcha, „embedded training”. Problemy: Segmentacja sygnału mowy Stałe odcinki czasowe? Segmentacja podyktowana generowania danej obserwacji Konieczna maksymalizacją p-stwa kwantyzacja obserwacji (wyznaczanie p-stw występowania dowolnej obserwacji w dowolnym stanie jest praktycznie nierealizowalne). Klasyfikacja Stwierdzenie, który model najlepiej pasuje do danego ciągu wejściowego. tj. ma największe prawdopodobieństwo wygenerowania tego konkretnego ciągu zdarzeń. obliczanie p-stwa (iteracyjne): α1(i) = π1 · bi(O1) αt+1(j) = [ ∑i=1N αt(i)aij] · bj(Ot+1) 0,6 Przykład Jakie dla tego modelu jest p-stwo zajścia 1,0 0,4 A B π=0,9 π=0,1 bB(O1)=0 bA(O1)=0,8 ciągu obserwacji O={O2, O2, O2} Uwzględnić wszystkie stany, które mogą prowadzić do tych obserwacji: AAA, AAB, ABA, ABB, BBB bB(O2)=1,0 bA(O2)=0,2 O1 O2 P(AAA) = πA · αAA · αAA = 0,9 · 0,6 · 0,6 = 0,324 P(…)=…. – p-stwo wystąpienia sekwencji stanów (dla wszystkich) P(O/AAA) = bA(O2) · bA(O2) · bA(O2) = 0,2 · 0,2 · 0,2 = 0,008 P(O/…) = … – p-stwo obserwacji O={O2, O2, O2} dla sekwencji (dla wszystkich) P(O/AAA)·P(AAA) = 0,008 · 0,324 =0,002592 P(O/…)·P(…) = … - p-stwo całkowite Łącznie NT obliczeń N-stanów T-długość obserwacji P(O/M) = P(O/AAA)·P(AAA) + P(O/AAB)·P(AAB) + P(O/ABB)·P(ABB) + P(O/BBB)·P(BBB) P(O/M) – p-stwo zajścia obserwacji O dla tego modelu M Przykład α1(i) = π1 · bi(O1) αt+1(j) = [ ∑i=1N αt(i)aij] · bj(Ot+1) α1(A) = πA · bA(O2) = 0,9 · 0,2 = 0,18 α1(B) = πB · bB(O2) = 0,1 · 1,0 = 0,10 α2(A) = (α1(A) · aAA + α1(B) · aBA) · bA(O2) = (0,18 · 0,6 + 0,1· 0,0) · 0,2 = 0,0216 α2(B) = (α1(A) · aAB + α1(B) · aBB) · bB(O2) = (0,18 · 0,4 + 0,1· 1,0) · 1,0 = 0,172 α3(A) = (α2(A) · aAA + α2(B) · aBA) · bA(O2) = (0,0216 · 0,6 + 0,172· 0,0) · 0,2 = 0,002592 α3(B) = (α2(A) · aAB + α2(B) · aBB) · bB(O2) = (0,0216 · 0,4 + 0,172· 1,0) · 1,0 = 0,18064 otrzymujemy: P(O/M) = α3(A) + α3(B) = 0,183232 Łącznie N·T obliczeń N-stanów T-długość obserwacji Przykład – rozmowa telefoniczna Bob do Alicji – „dziś sprzątam” Alicja do Boba – „a więc u Ciebie pada” Stany = (‘Deszcz', ‘Słońce') Obserwacje = (‘Spacer', ‘Zakupy', ‘Sprzątanie') Pstwa_początkowe= {Deszcz': 0.6, ‘Słońce': 0.4} Pstwa_przejść= { ‘Deszcz' : {'Deszcz': 0.7, 'Słońce': 0.3}, 'Słońce' : {'Deszcz': 0.4, 'Słońce': 0.6}, } Pstwa_obserwacji = { 'Deszcz' : {‘Spacer': 0.1, ‘Zakupy': 0.4, ‘Sprzątanie': 0.5}, 'Słońce' : {' Spacer': 0.6, ‘Zakupy‘: 0.3, ‘Sprzątanie ': 0.1}, } Przykład – symptomy choroby Zastosowania Celem jest „odzyskanie” sekwencji stanów, które można obserwować tylko pośrednio, jako manifestację w postaci „obserwacji” Kryptoanaliza Rozpoznawanie mowy Synteza mowy Tłumaczenie maszynowe Sekwencjonowanie genów Rozpoznawanie czynności Detekcja wirusów komputerowych … DZIĘKUJĘ ZA UWAGĘ