HMMs und der Viterbi

Viterbi Algorithmus
Vorwärts Algorithmus
HMMs und der Viterbi-Algorithmus
Christian Wurm
July 8, 2015
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Das Problem
Wir haben gesehen: wir können P(~
w |~q )P(~q ) ohne große Probleme
ausrechnen (~
w = b1 ...bi , ~q = q1 ...qi .
P(~
w |~q )P(~q )
= π(q1 )τ (b1 , q1 )δ(q1 , q2 )τ (b2 , q2 )...δ(qi−1 , qi )τ (bi , qi )
= π(q1 )
i
Y
τ (bj , qj )
j=1
i−1
Y
(1)
δ(qj , qj+1 )
j=1
(δ-Terme sind für P(~q ), τ für P(~
w |~q ))
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Das Problem
Was wir aber suchen ist argmax|~q|=|~w | P(~q |~
w ), also die
Zustandsfolge, die gegeben unsere Beobachtung maximal
wahrscheinlich ist. Natürlich haben wir:
argmax|~q|=|~w | P(~q |~
w)
P(~q )
P(~
w)
= argmax|~q|=|~w | P(~
w |~q )P(~q )
= argmax|~q|=|~w | P(~
w |~q )
(~
w bleibt ja unverändert über Terme).
Christian Wurm
HMMs und der Viterbi-Algorithmus
(2)
Viterbi Algorithmus
Vorwärts Algorithmus
Der naive Ansatz
Das Problem mit dem naiven Ansatz ist folgendes:
I
die Anzahl der möglichen Zustandsfolgen für eine
~ der Länge |~
Beobachtungsfolge w
w | beträgt |Q||~w |
I
~ aus 10 Beobachtungen
also falls Q 10 Zustände enthält, w
besteht, haben wir bereits 1010 Kandidaten!
I
Die Anzahl wächst also exponentiell in |~
w |, und ist damit
praktisch nicht mehr handhabbar.
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Die Lösung
Wir werden einen Algorithmus betrachten, der dieses Problem
mittels dynamischer Programmierung löst, d.h. Teilergebnisse
bisheriger Berechnungen werden immer weiter verwendet.
Die Parameter des Algorithmus sind:
1. Ein HMM (B, Q, π, τ, δ)
~ über B
2. eine Eingabe w
Die Ausgabe ist argmax|~q|=|~w | P(~
w |~q )
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Der Viterbi-Algorithmus
~ = b1 , b2 , ...bj+1 , ~q = q1 , q2 , ..., qj+1 . Wir
Wir nehmen wiederum w
definieren nun
αq (i) = maxq1 ,...,qi−1 ∈Q (P(q1 , ..., qi−1 , b1 , ..., bi−1 , qi = q))
(3)
αq (i) gibt uns die maximale Wahrscheinlichkeit dafür, dass qi = q,
wobei das Maximum bedeutet: maximal für alle
Vorgängersequenzen von Zuständen.
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Der Viterbi Algorithmus
1. Initialisierung: αq (1) = π(q);
2. Induktionsschritt:
αq0 (i + 1) = maxq∈Q αq (i)δ(q, q 0 )τ (q 0 , bi+1 ).
Parallel werden die entsprechenden Zustände gespeichert:
ψq0 (i + 1) = argmaxq∈Q αq (i)δ(q, q 0 )τ (q 0 , bi+1 ).
3. Terminierung:
q̂j+1 = argmaxq∈Q αq (j + 1)
q̂i = ψq̂i+1 (i + 1).
(Wir berechnen jetzt also von hinten nach vorne die optimale
Kette)
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
P(~
w |~q ) berechnen
q̂i bezeichnet den optimalen i-ten Zustand.
Wir können nun sehr leicht P(~
w |~q ) berechnen:
P(~
w |qˆ1 , ..., q̂i+1 ) = maxq∈Q αq (i + 1)
(4)
Was wir nicht haben ist die Wahrscheinlichkeit P(qˆ1 , ..., q̂i+1 |~
w )!
Wir haben also nur die plausibelste Lösung gefunden (ähnlich der
Maximum Likelihood Methode), ohne dass wir deren bedingte
Wahrscheinlichkeit gegeben die Beobachtung kennen würden.
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Viterbi-Algorithmus: Komplexität
I
Der Viterbi Algorithmus muss die ganze Folge einmal vorwärts
und einmal rückwarts durchlaufen.
I
Damit ist Anzahl der Rechenschritte damit linear in der Länge
der Kette,
I
quadratisch in der Menge der Zustände.
Das ist ein extrem gutes Ergebnis, denn die Zustandsmenge ist a
priori begrenzt, es bleibt also effektiv ein lineares Problem
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Der Vorwärts-Algorithmus
Wir werden nun ein etwas anderes Problem betrachten, das wir
bereits für Markov Ketten behandelt haben:
I
Gegeben ein HMM M, eine Kette hb1 , b2 , ..., bi i, was ist die
Wahrscheinlichkeit von hb1 , b2 , ..., bi i gegeben M?
I
Linguistisch gesehen wäre das die Frage: gegeben einen Satz
S und ein HMM unserer Sprache, wie wahrscheinlich ist S?
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Der Vorwärts-Algorithmus
Wir haben gesehen, wie wir P(~
w |~q ) ausrechnen. Wie kommen wir
zu P(~
w )?
Durch die übliche Methode des Marginalisierens:
P(~
w) =
X
P(~
w |~q )P(~q )
(5)
|~q |=|~
w|
Hier haben wir aber dasselbe Problem wie vorher: die Menge der ~q
wächst exponentiell in |~
w | – also ist der naive Ansatz nicht
praktikabel.
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Der Vorwärts-Algorithmus
Der Vorwärts-Algorithmus nimmt dieselben Parameter wie der
Viterbi-Algorithmus.
Wir definieren die Vorwärts-Variable wie folgt:
αq (i) := P(hb1 , b2 , ..., bi i, qi = q)
(6)
αq (i) gibt uns also die Wahrscheinlichkeit, dass wir nach der i-ten
~ in Zustand q sind.
Beobachtung in w
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Der Vorwärts-Algorithmus
1. Initialisierung: αq (1) = π(q).
2. Induktionsschritt:
αq0 (i + 1) =
3. Ende: P(~
w) =
P
q∈Q
P
q∈Q
αq (i)δ(q, q 0 )τ (q 0 , bi+1 ): i < j + 1
αq (j + 1).
Christian Wurm
HMMs und der Viterbi-Algorithmus
Viterbi Algorithmus
Vorwärts Algorithmus
Der Vorwärts-Algorithmus: Komplexität
Auch dieser Algorithmus ist sehr günstig was die nötigen
Berechnungen angeht:
I
~ mit Länge n zu berechnen,
um die Wahrscheinlichkeit von w
2
2|Q| n Berechnungsschritte.
I
Da aber |Q|, die Anzahl der Zustände, a priori begrenzt ist,
können wir sagen dass der Algorithmus linear ist.
Christian Wurm
HMMs und der Viterbi-Algorithmus