TUTORIAL:
BAYES'SCHE NETZE
PROBABILISTISCHE NETZE
(Bayesian Networks / Probabilistic Networks / Causal Belief Networks)
Interaktive Online-Beispiele IV (Dynamische Netze)
Hier werden dynamische Bayes'sche Netze vorgestellt (am einfachen Beispiel eines Hidden Markov Models)
Dies ist die Fortsetzung zu den hier dargestelleten Beispielen (bitte ggf. zunächst dort nachlesen, wie die Netze zu bedienen sind).
Hidden-Markov-Model (Dynamisches BN)
GRAPH "Hidden(t)" (VON IHREM BROWSER LEIDER NICHT UNTERSTÜTZT)
GRAPH "Observed(t)" (VON IHREM BROWSER LEIDER NICHT UNTERSTÜTZT)
HIDDEN-MARKOV-MODEL
CONTROLS FOR DBN

Ein Hidden-Markov-Model lässt sich als dynamisches Bayes'sches Netz abbilden. Es ist praktisch das einfachste dynamische Bayes'sche Netz, das "Sinn macht". Es besteht aus einer unbeobachteten Variable (Hidden) deren jeweiliger Zustand zu einem Zeitpunkt t (hier durch den Knoten Hidden(t) repräsentiert) vom Zustand unmittelbar davor (Hidden(t-1)) abhängt, wobei der wahrscheinlichste Fall jeweils der ist, dass der Zustand beibehalten wurde (hier jeweils 99%). Deutlich kleinere Wahrscheinlichkeiten sind für bestimmte mögliche Übergänge in andere Zustände definiert (hier jeweils 1% für genau einen möglichen Nachfolgezustand). Diese kleinen Übergangswahrscheinlichkeiten sorgen für eine Glättung verrauschter Beobachtungen. Gesucht ist nun der wahre Zustand der Variablen Hidden zum jeweiligen Zeitpunkt t (abzulesen am Knoten Hidden(t)).

Zusätzlich gibt es noch einen beobachtbaren Knoten (Observed(t)), der in diesem Fall dieselben Zustände wie die nicht direkt beobachtbaren Knoten Hidden(t-1) und Hidden(t) hat, wobei die Beobachtung eines Zustands (hier "s1" bis "s4") jeweils für den entsprechenden Zustand im Knoten Hidden spricht (hier jeweils 60%) - jedoch bleiben recht große Fehlerwahrscheinlichkeiten für andere Zustände (hier jeweils 15% für je zwei weitere "benachbarte" Zustände und weitere 10% für den nicht benachbarten Zustand).

Vorgängerknoten (hier nur Hidden(t-1), da Observed(t-1) zur Modellierung nich benötigt wird) werden hier etwas ausgegraut dargestellt. Zudem ist es nicht möglich Beobachtungen für solche Knoten anzugeben. Sie dienen lediglich der Übermittlung der Information aus dem jeweils vorigen Zeitschritt. Des Weiteren ist die Modellierung damit identisch zu einem normalen statischen Bayes'schen Netz (d.h. man könnte es theoretisch genauso auch als statisches Netz interpretieren).

Rechnen lässt sich in einem solchen Netz prinzipiell sowohl vorwärts als auch (danach) wieder rückwärts. Während man für das Vorwärtsrechnen immer nur die Information aus dem letzten Zeitpunkt in ein frisch initialisiertes Netz übernehmen muss, ist es für die Rückrichtung nötig die vergangenen "Zeitscheiben" aufzuheben. Somit kann man zwar quasi unendlich lange vorwärts, aber üblicher Weise nur einen begrenzte Anzahl von Schritten rückwärts rechnen, je nachdem wieviele Zeitscheiben man aufheben kann/will (hier sind es 100). Beim Rückwärtsrechnen müssen übrigens keine Beobachtungen mehr angegeben werden, da diese Information ja bereits in den aufgehobenen Zeitscheiben enthalten ist. Wichtig ist, dass das Rückwärtsrechnen nicht einfach ein "Zurückspulen" darstellt, sondern, dass hier die Information aus der Zukunft berücksichtigt wird. Rechnet man Offline, also nicht in Echt-Zeit, tut man also gut daran erst Vor- und dann wieder zurückzurechnen, um die optimalen Ergebnisse zu erzielen. Damit erhält man dann übrigens auch genau dieselben Ergebnisse, die man mit einem vorab "entrollten" statischen Netz erhalten hätte, das bereits alle N Zeitscheiben auf einmal enthält (also die Knoten Hidden(0)...Hidden(N) und Observed(0)...Observed(N) enthält). Man kann schön sehen, dass die nur vorwärtsgerechneten Ergebnisse stets den Beobachtungen hinterherhinken, während die Zurückgerechneten Ergebnisse diesen Effekt nicht mehr zeigen und noch glatter sind (daher auch die engl. Bezeichnung "Backward-Smoothing"). Dabei wird ein nur sehr kurz beobachteter unplausibler Zustand komplett "weggeglättet" (z.B. s1->s2->s1), während ein plausibler Zustand sogar noch verstärkt wird (z.B. s1->s2->s3).

Patrick Rammelt, 05/2011