Zum einfachen Austausch einzelner Teile eines Netzes
bzw. zur Wiederverwendung derselben in anderen Netzen ist es hilfreich
ein Netz in
Module
aufzuteilen. Das sollte einerseits natürlich anhand bestimmter
logischer Überlegungen erfolgen, muss aber andererseits auch
bestimmten Kriterien genügen, um mit den zusammengesetzten Modulen
schließlich wie mit einem "normalen" Netz rechnen zu können.
Welche Kriterien das sind hängt vom konkret eingesetzten Verfahren
ab.
Zunächst einmal sollte jedes Modul (Teilnetz) selbst ein korrektes
und formal vollständiges Bayes'sches Netz darstellen. Kommt in
zwei
Modulen derselbe Knoten
A 1) vor
und hat
dieser Knoten nur in höchstens einem Teilnetz Elternknoten, so
kann man die Teilnetze zusammenbauen, indem die "elternlose" Definition
des Knotens
A
durch die des anderen Teilnetzes ersetzt wird. Die elternlose
Version (insbesondere die bedingte Wahrscheinlichkeitstafel) von
A wäre hier
also lediglich ein Dummy. Danach kann mit dem so zusammengebauten
Gesamtnetz ganz normal weitergearbeitet werden. Dieser Ansatz
funktioniert auch wenn sich Module mehrere Knoten teilen. Dabei muss
auch nicht verlangt werden, dass alle gemeinsamen Knoten in demselben
Modul elternlos sind, sondern es wäre z.B. möglich, dass
Knoten
A
in Modul
M1
elternlos ist, während dies für Knoten
B im Modul
M2
der Fall ist.
Ein Netz aus zwei Modulen, die ("dynamisch") über den Knoten
B
verbunden sind
Interessant ist auch das dynamische An- und Abhängen einzelner
Module - insbesondere in Dynamischen Bayes'schen Netzen. Dabei werden
die bereits fertig "compilierten" Junction-Trees der Module
zusammengefügt. Nur dürfen in diesem Fall durch das
Zusammenfügen der Module keine neuen ungerichteten Zyklen im
Gesamtnetz entstehen (also solche die nicht bereits in einem der
Teilmodule vollständig enthalten sind).
2) Es sollte
dafür
gesorgt werden, dass alle Knoten die sowohl im Modul
M1
als auch in
M2
vorkommen jeweils gemeinsam in einer Clique der beiden
Teil-Junction-Trees enthalten sind. Zwischen diesen beiden Cliquen kann
dann ein zusätzlicher Separator eingefügt werden. Wobei die
Information bezüglich der gemeinsamen Knoten (z.B.
A und
B) in einem der
beiden Teil-Netze (z.B.
M1)
fallen gelassen wird und durch die Information aus dem anderen
Teil-Netz ersetzt wird:
P'M1(A,B,...)
=
PM1(A,B,...)
/ PM1(A,B) * PM2(A,B)
Das entspricht der normalen Informationsweiterleitung über einen
Separator.
1) |
Dabei kommt es
nicht darauf an, dass der Knoten tatsächlich in beiden Netzen "A" heißt,
sondern darauf, dass inhaltlich derselbe Knoten gemeint ist.
|
2) |
Das bedeutet
insbesondere, dass jeweils nur ein Modul dynamische Kanten haben darf -
jedenfalls wenn alle Module innerhalb einer Zeitscheibe verbunden sind.
|