TUTORIAL:
BAYES'SCHE NETZE
PROBABILISTISCHE NETZE
(Bayesian Networks / Probabilistic Networks / Causal Belief Networks)
Interaktive Online-Beispiele VI (Hybride Netze)
Hier werden Algorithmen für Hybride Netze vorgestellt. Hybride Netze haben nicht nur Knoten mit einem diskreten Zustandsraum (z.B. "ja", "nein" oder "stark", "mittel", "schwach") sondern können auch kontinuierliche Knoten haben deren Wert durch eine reelle Zahl (z.B. 2.4[m]) dargestellt wird. Der Fall, dass ausschließlich kontinuierliche Knoten in einem Netz vorkommen, wird hier als Sonderfall der Hybriden Netze verstanden und nicht gesondert behandelt. Dies ist die Fortsetzung zu den hier dargestelleten Beispielen (bitte ggf. zunächst dort nachlesen, wie die Netze zu bedienen sind). Für die kontinuierlichen Knoten gilt abweichend, dass Evidenz durch einen einfachen Klick in den Bereich zwischen Min- und Max-Wert gesetzt wird und mittels eines Klicks in den Bereich außerhalb (also knapp oberhalb des Min- bzw. knapp unterhalb des Max-Wertes) wieder zurückgesetzt wird. Da ich keine komplett neue Bedienlogik für die kontinuierlichen Knoten erfinden wollte, können kontinuierliche Elternknoten nur in der Reihenfolge wieder entfernt werden, wie sie einem Kind-Knoten hinzugefügt wurden (das entspricht dem Verhalten beim Hinzufügen/Löschen von Zuständen bei diskreten Knoten). Wichtig ist noch, dass diskrete Knoten nur diskrete Elternknoten haben dürfen.
Likelihood-Weighting-Sampler
BEISPIEL-NETZ
SAMPLES

Das Schöne an den Sampling-Verfahren ist, dass sie auch mit kontinuierlichen Knoten funktionieren - und das auch mit beliebigen Verteilungen, solange es nur möglich ist aus diesen Verteilungen Samples zu ziehen (deshalb fange ich hier auch ausnahmsweise mal mit dem Sampling an). Wesentliche Abweichungen zum normalen Sampling sind nur diese:

  • Zur Gewichtung (nur LW-Sampling) wird bei beobachteten kontinuierlichen Knoten statt der Wahrscheinlichkeit, der Funktionswert der Dichtefunktion an der betreffenden Stelle benutzt (die Wahrscheinlichkeit für einen konkreten Wert (z.B. x=7.34) liegt ja bekanntlich bei 0, weil das Integral von x bis x immer gleich 0 ist). Damit verliert aber auch der angezeigte Wert für P(e|M) seine Bedeutung als echte Wahrscheinlichkeit (bzw. Likelihood).
  • Möglich wäre theoretisch auch Soft-Evidenz, z.B. in der Form, dass man angibt "möglich sind Werte im Intervall [von...bis]". Dies würde einer Multiplikation mehrerer Dichtefunktionen entsprechen (der aus dem Netz und der, die die unsichere Beobachtung repräsentiert). Dieses Feature ist hier aber nicht implementiert, so dass nur konkrete Werte als Beobachtungswert (z.B. x=2.7) möglich sind.
  • Hier werden jeweils die kompletten Dichtefunktionen für eine gegebene Elternkonfiguration im Knoten abgelegt und gewichtet. Ansonsten könnte man nur ein Histogramm anzeigen, was ich aber aus Kompatibilitätsgründen zum nachfolgend vorgestellten Junction-Tree-Verfahren vermeiden wollte. Andererseits könnte man diesen Ansatz auch für die diskreten Knoten verwenden, was aber das "händische" Nachrechnen, zumindest für die diskreten Knoten, nahezu unmöglich machen würde, weshalb ich diese Idee verworfen habe.
Anmerkung: Das Beispielnetz wurde aus anderen Beispielen übernommen, wobei einfach drei diskrete durch entsprechende kontinuierliche Knoten ersetzt wurden. Die Werte machen so noch überhauptgarkeinen Sinn - da muss ich mir bei Gelegenheit mal was Sinnigeres ausdenken...
Semi-Strong-Elimination-Tree (nach Cowell)
BEISPIEL-NETZ
JUNCTION-TREE

Es gibt auch Junction-Tree-Verfahren für rein kontinuierliche bzw. hybride Netze (bzw. Junction-Tree-ähnliche Verfahren). Diese sind aber wesentlich komplizierter als das Sampling, oder die normalen Junction-Trees (die ja schon nicht ganz ohne sind). Hier wird das Verfahren von Cowell benutzt, welches hier näher vorgestellt wird. Wesentliche Einschränkungen des Algorithmus' sind:

  • Geht so nur für Conditional Gaussians (CG) - damit sind nicht-lineare Zusammenhänge nur über Umwege abbildbar (andere Verteilungen würden nur dann funktionieren, wenn man für diese auch eine "Exchange-Operation" finden würde).
  • Das Ergebnis ist eine sogenannte "Mixture of Gaussians", also mehrere gewichtet überlagerte Gaussverteilungen. Dies gilt aber nur solange diskrete Knoten mit im Spiel sind - für rein kontinuierliche Netze kommt jeweils für jeden Knoten genau eine Gauss-Verteilung heraus.
  • Soft-Evidenz für kontinuierliche Knoten, z.B. in der Form, dass man angibt "möglich sind Werte im Intervall [von...bis]" ist nicht möglich.
  • Max-Propagation funktioniert nicht.
  • Die gemeinsamen Wahrscheinlichkeitsverteilungen für Knoten und ihre Eltern (P(N,pa(N)) sind nur für die diskreten Knoten verfügbar.
  • Da bei der Junction-Tree-Erstellung die kontinuierlichen Knoten vor allen diskreten Knoten eliminiert werden müssen, ergeben sich für bestimmte (und nicht nur ungewöhnliche) Netzstrukturen schnell Komplexitätsprobleme.
  • Auch hier wird der Funktionswert der Dichtefunktion an der betreffenden Stelle als Gewicht benutzt. Damit verliert der angezeigte Wert für P(e|M) hier ebenfalls seine Bedeutung als echte Wahrscheinlichkeit (bzw. Likelihood).

Damit man noch etwas tiefer in den Algorithmus hineinschauen kann hier einige Spezialmethoden (beim Setzen von Evidenz durch Anklicken eines States wird sonst ja immer gleich eine vollständige Propagation angestoßen):

  • Klicke hier um nur die Initialisierungsphase durchzuführen, Postbags sind danach noch nicht geleert, Evidenz noch nicht gesetzt.
  • Klicke hier um zusätzlich noch die Collect-Postbags-Phase durchzuführen jedoch noch ohne Evidenz zu setzen.
  • Klicke hier um zusätzlich auch die aktuelle Evidenz einzubeziehen.
  • Klicke hier um eine vollständige Propagation mit Update der A-Posteriori-Wahrscheinlichkeiten der Knoten durchzuführen.
Anmerkung: In dem vorgegebenen Netz gibt es derzeit keine Postbags, so dass nicht alle Phasen voll "ausgeschöpft" werden (Collect-Postbags bewirkt keine Änderung).
Patrick Rammelt, 08/2011