6.6 Sequenz-Likelihood und der Forward-Algorithmus
6.6 Sequenz-Likelihood und der Forward-Algorithmus
Abschnitt betitelt „6.6 Sequenz-Likelihood und der Forward-Algorithmus“Im vorherigen Abschnitt haben wir das Dekodierungsproblem mithilfe des Viterbi-Algorithmus behandelt. Dort bestand das Ziel darin, eine einzelne verborgene Zustandsfolge zu finden, die die beobachteten Daten am besten erklärt.
Nun wenden wir uns einer anderen, ebenso grundlegenden Frage zu:
Wie wahrscheinlich ist die beobachtete Sequenz unter einem gegebenen Modell?
Dies nennt man das Evaluationsproblem.
6.6.1 Vom besten Pfad zu allen Pfaden
Abschnitt betitelt „6.6.1 Vom besten Pfad zu allen Pfaden“Erinnern wir uns: Im Dekodierungsproblem suchten wir nach
also nach dem einzelnen wahrscheinlichsten verborgenen Pfad.
Im Evaluationsproblem wollen wir dagegen
berechnen, also die Gesamtwahrscheinlichkeit, die beobachtete Sequenz unter dem Modell zu sehen.
Dazu müssen wir über alle möglichen verborgenen Zustandsfolgen summieren:
Dieser Unterschied ist zentral.
- Viterbi wählt einen Pfad
- Forward berücksichtigt alle Pfade
Interpretation
Abschnitt betitelt „Interpretation“Eine hilfreiche Intuition für diesen Unterschied lautet:
-
Der Viterbi-Algorithmus fragt: Was ist die beste Erklärung?
-
Der Forward-Algorithmus fragt: Wie viel gesamte Unterstützung liefert das Modell für diese Sequenz?
Auch wenn kein einzelner Pfad besonders hohe Wahrscheinlichkeit besitzt, kann die Summe vieler moderat wahrscheinlicher Pfade dennoch zu einer hohen Gesamt-Likelihood führen.
6.6.2 Warum direkte Berechnung unpraktikabel ist
Abschnitt betitelt „6.6.2 Warum direkte Berechnung unpraktikabel ist“Auf den ersten Blick erscheint die Berechnung von sogar noch schwieriger als das Dekodierungsproblem. Anstatt einen Pfad auszuwählen, müssen wir alle Pfade berücksichtigen.
Für eine Sequenz der Länge und Zustände bedeutet dies wieder Terme.
Für realistische Sequenzen ist eine direkte Summation unmöglich.
Wie im Fall von Viterbi erlaubt uns die Struktur des Modells jedoch, Zwischenergebnisse wiederzuverwenden. Daraus ergibt sich erneut eine Lösung mittels dynamischer Programmierung: der Forward-Algorithmus.
6.6.3 Forward-Wahrscheinlichkeiten
Abschnitt betitelt „6.6.3 Forward-Wahrscheinlichkeiten“Wir definieren die Forward-Variable
als die Wahrscheinlichkeit, die ersten Symbole zu beobachten und in Zustand zu enden:
Diese Größe fasst alle Pfade zusammen, die:
- das Präfix erzeugen
- und in Zustand enden
Statt also einzelne Pfade zu verfolgen, komprimieren wir alle relevanten Pfade an jeder Position und für jeden Zustand in einen einzigen Wert.
6.6.4 Forward-Rekursion
Abschnitt betitelt „6.6.4 Forward-Rekursion“Wie bei Viterbi verläuft der Algorithmus in drei Phasen.
Initialisierung
Abschnitt betitelt „Initialisierung“Für die erste Beobachtung gilt:
Dies ist identisch mit der Initialisierung im Viterbi-Algorithmus, weil an der ersten Position pro Zustand nur ein einziger Pfad existiert.
Rekursion
Abschnitt betitelt „Rekursion“Für jede folgende Position berechnen wir:
Auch diese Gleichung lässt sich klar interpretieren.
Um an Position in Zustand anzukommen, müssen wir:
- aus irgendeinem vorherigen Zustand kommen
- von nach übergehen
- das Symbol aus Zustand emittieren
Im Unterschied zum Viterbi-Algorithmus wählen wir nicht nur den besten Vorgänger, sondern summieren über alle möglichen Vorgänger.
Terminierung
Abschnitt betitelt „Terminierung“Nachdem die gesamte Sequenz verarbeitet wurde, erhalten wir die Gesamt-Likelihood durch Summation über alle Endzustände:
6.6.5 Vergleich mit Viterbi
Abschnitt betitelt „6.6.5 Vergleich mit Viterbi“Der Forward-Algorithmus ist strukturell dem Viterbi-Algorithmus sehr ähnlich, unterscheidet sich jedoch in einem entscheidenden Punkt:
- Viterbi verwendet ein Maximum über Vorgängerzustände
- Forward verwendet eine Summe über Vorgängerzustände
Diese scheinbar kleine Änderung hat weitreichende Konsequenzen:
| Aspekt | Viterbi | Forward |
|---|---|---|
| Operation | max | sum |
| Output | bester Pfad | Gesamtwahrscheinlichkeit |
| Interpretation | beste Erklärung | gesamte Unterstützung |
Diese Dualität ist zentral für das Verständnis von HMMs.
6.6.6 Durchgerechnetes Beispiel (konzeptioneller Durchlauf)
Abschnitt betitelt „6.6.6 Durchgerechnetes Beispiel (konzeptioneller Durchlauf)“Betrachten wir erneut die Sequenz
und das Zwei-Zustands-Modell mit den Zuständen (Promotor) und (Hintergrund).
An der ersten Position gilt:
An der zweiten Position berechnen wir:
Hier wird der zentrale Unterschied zu Viterbi unmittelbar sichtbar:
- Statt den besseren der beiden Pfade zu wählen,
- addieren wir beide Beiträge.
Das bedeutet, dass auch Pfade, die für sich genommen nicht optimal sind, dennoch zur Gesamtwahrscheinlichkeit beitragen.
Wenn wir entlang der Sequenz fortschreiten, akkumuliert jeder Forward-Wert Beiträge aus exponentiell vielen Pfaden, allerdings in stark komprimierter Form.
6.6.7 Intuition: Über alle Erklärungen summieren
Abschnitt betitelt „6.6.7 Intuition: Über alle Erklärungen summieren“Der Forward-Algorithmus integriert effektiv über alle möglichen Erklärungen der Daten.
Dies ist besonders in biologischen Kontexten wichtig, weil
- mehrere evolutionäre Geschichten eine Sequenz erklären können
- Unsicherheit ein grundlegendes Merkmal biologischer Daten ist
Durch die Summation über alle Pfade berücksichtigt das Modell diese Unsicherheit, anstatt sich frühzeitig auf eine einzige Interpretation festzulegen.
6.6.8 Implementierung im Log-Raum
Abschnitt betitelt „6.6.8 Implementierung im Log-Raum“Wie beim Viterbi-Algorithmus muss auch der Forward-Algorithmus im Log-Raum implementiert werden, um numerischen Unterlauf zu vermeiden.
Die Rekursion enthält nun jedoch Summen, die im Log-Raum zur Form
führen.
Dies ist die sogenannte log-sum-exp-Operation.
Der log-sum-exp-Trick
Abschnitt betitelt „Der log-sum-exp-Trick“Um diesen Ausdruck numerisch stabil zu berechnen, verwendet man:
wobei
gilt.
Dies verhindert Überlauf oder Unterlauf bei exponentiellen Ausdrücken.
6.6.9 Bezug zu biologischen Fragestellungen
Abschnitt betitelt „6.6.9 Bezug zu biologischen Fragestellungen“Der Forward-Algorithmus ist besonders nützlich für:
- die Bewertung von Sequenzen unter Modellen
- den Vergleich alternativer Modelle
- die Berechnung von Motiv-Likelihoods entlang eines Genoms
Beim Scanning eines Genoms könnten wir zum Beispiel berechnen und mit vergleichen. Dadurch lassen sich Regionen identifizieren, die vom einen Modell besser erklärt werden als vom anderen.
6.6.10 Konzeptionelle Zusammenfassung
Abschnitt betitelt „6.6.10 Konzeptionelle Zusammenfassung“Der Forward-Algorithmus erweitert den dynamischen Programmierungsansatz von Viterbi, indem er Maximierung durch Summation ersetzt.
Er liefert:
- eine vollständige probabilistische Bewertung der Sequenz
- einen prinzipiellen Umgang mit Unsicherheit
- die Grundlage für Parameterschätzung mit Baum–Welch
Fragen zur Selbstkontrolle
Abschnitt betitelt „Fragen zur Selbstkontrolle“- Was ist der Unterschied zwischen der Summation über alle Pfade und der Auswahl des besten Pfades?
- Was repräsentiert die Forward-Variable ?
- Warum ist die direkte Berechnung von unpraktikabel?
- Welche Rolle spielt die log-sum-exp-Operation?
- Warum ist der Forward-Algorithmus für die Analyse biologischer Sequenzen wichtig?