July 8, 2015
Das Problem Wir haben gesehen: wir können P( w q)p( q) ohne große Probleme ausrechnen ( w = b 1...b i, q = q 1...q i. P( w q)p( q) = π(q 1 )τ(b 1, q 1 )δ(q 1, q 2 )τ(b 2, q 2 )...δ(q i 1, q i )τ(b i, q i ) i i 1 = π(q 1 ) τ(b j, q j ) δ(q j, q j+1 ) j=1 j=1 (1) (δ-terme sind für P( q), τ für P( w q))
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) = argmax q = w P( w q) P( q) P( w) = argmax q = w P( w q)p( q) (2) ( w bleibt ja unverändert über Terme).
Der naive Ansatz Das Problem mit dem naiven Ansatz ist folgendes: die Anzahl der möglichen Zustandsfolgen für eine Beobachtungsfolge w der Länge w beträgt Q w also falls Q 10 Zustände enthält, w aus 10 Beobachtungen besteht, haben wir bereits 10 10 Kandidaten! Die Anzahl wächst also exponentiell in w, und ist damit praktisch nicht mehr handhabbar.
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, π, τ, δ) 2. eine Eingabe w über B Die Ausgabe ist argmax q = w P( w q)
Der Viterbi-Algorithmus Wir nehmen wiederum w = b 1, b 2,...b j+1, q = q 1, q 2,..., q j+1. Wir definieren nun α q (i) = max q1,...,q i 1 Q(P(q 1,..., q i 1, b 1,..., b i 1, q i = q)) (3) α q (i) gibt uns die maximale Wahrscheinlichkeit dafür, dass q i = q, wobei das Maximum bedeutet: maximal für alle Vorgängersequenzen von Zuständen.
Der Viterbi Algorithmus 1. Initialisierung: α q (1) = π(q); 2. Induktionsschritt: α q (i + 1) = max q Q α q (i)δ(q, q )τ(q, b i+1 ). Parallel werden die entsprechenden Zustände gespeichert: 3. Terminierung: ψ q (i + 1) = argmax q Q α q (i)δ(q, q )τ(q, b i+1 ). ˆq j+1 = argmax q Q α q (j + 1) ˆq i = ψˆqi+1 (i + 1). (Wir berechnen jetzt also von hinten nach vorne die optimale Kette)
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 ) = max q 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.
Viterbi-Algorithmus: Komplexität Der Viterbi Algorithmus muss die ganze Folge einmal vorwärts und einmal rückwarts durchlaufen. Damit ist Anzahl der Rechenschritte damit linear in der Länge der Kette, 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
Der Vorwärts-Algorithmus Wir werden nun ein etwas anderes Problem betrachten, das wir bereits für Markov Ketten behandelt haben: Gegeben ein HMM M, eine Kette b 1, b 2,..., b i, was ist die Wahrscheinlichkeit von b 1, b 2,..., b i gegeben M? Linguistisch gesehen wäre das die Frage: gegeben einen Satz S und ein HMM unserer Sprache, wie wahrscheinlich ist S?
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) = P( w q)p( q) q = w (5) Hier haben wir aber dasselbe Problem wie vorher: die Menge der q wächst exponentiell in w also ist der naive Ansatz nicht praktikabel.
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( b 1, b 2,..., b i, q i = q) (6) α q (i) gibt uns also die Wahrscheinlichkeit, dass wir nach der i-ten Beobachtung in w in Zustand q sind.
Der Vorwärts-Algorithmus 1. Initialisierung: α q (1) = π(q). 2. Induktionsschritt: α q (i + 1) = q Q α q(i)δ(q, q )τ(q, b i+1 ): i < j + 1 3. Ende: P( w) = q Q α q(j + 1).
Der Vorwärts-Algorithmus: Komplexität Auch dieser Algorithmus ist sehr günstig was die nötigen Berechnungen angeht: um die Wahrscheinlichkeit von w mit Länge n zu berechnen, 2 Q 2 n Berechnungsschritte. Da aber Q, die Anzahl der Zustände, a priori begrenzt ist, können wir sagen dass der Algorithmus linear ist.