Bayesian Network
Ein Bayes-Netz modelliert Variablen und ihre bedingten Abhängigkeiten als gerichteten azyklischen Graphen. So können Informationen die Wahrscheinlichkeiten möglicher Ursachen aktualisieren.
Ein Bayes-Netzwerk, auch Bayes'sches Netz genannt, ist ein probabilistisches grafisches Modell, das eine Menge von Zufallsvariablen und deren bedingte Abhängigkeiten mithilfe eines gerichteten azyklischen Graphen (DAG) darstellt. Jeder Knoten steht für eine Variable, etwa eine Krankheit, ein Symptom oder einen Messwert eines Sensors. Jeder Pfeil zeigt von einem direkten Einfluss auf die davon betroffene Variable. In jedem Knoten ist eine bedingte Wahrscheinlichkeitstabelle hinterlegt, die für jede Kombination der Werte seiner Elternknoten die Verteilung angibt. Zusammen definieren diese Tabellen die vollständige gemeinsame Verteilung aller Variablen. Liegen Informationen zu einigen Variablen vor, berechnet das Netzwerk aktualisierte Wahrscheinlichkeiten für die übrigen. So eignet es sich für Diagnose, Risikobewertung und Entscheidungshilfe bei Unsicherheit. Judea Pearl entwickelte in den 1980er-Jahren einen großen Teil der Theorie. Für seine Arbeit zu probabilistischem und kausalem Schließen erhielt er 2011 den Turing Award.
Struktur und bedingte Wahrscheinlichkeitstabellen#
Der Graph kodiert bedingte Unabhängigkeit: Sobald die Eltern einer Variablen bekannt sind, ist sie unabhängig von den Variablen, die keine ihrer Nachkommen sind. Dadurch lässt sich die gemeinsame Verteilung in kleine lokale Teile zerlegen: P(X1, ..., Xn) = P(X1 | parents(X1)) × ... × P(Xn | parents(Xn)). Das klassische Einbruch-Alarm-Netzwerk aus Pearls Arbeit, das im Lehrbuch Artificial Intelligence: A Modern Approach von Russell und Norvig ausführlich behandelt wird, umfasst fünf binäre Variablen. Ein Einbruch oder ein Erdbeben kann einen Hausalarm auslösen, woraufhin zwei Nachbarn, John und Mary, den Besitzer anrufen.
Eine vollständige gemeinsame Tabelle für fünf binäre Variablen benötigt 31 unabhängige Wahrscheinlichkeiten. Das Netzwerk benötigt nur 10: je eine für Einbruch und Erdbeben, vier für den Alarm bei jeder Kombination seiner beiden Elternvariablen und je zwei für jeden Nachbarn abhängig vom Alarm. Bei mehr Variablen wächst die Einsparung schnell, da die Größe jeder Tabelle nur von der Anzahl der Elternvariablen eines Knotens abhängt.
Inferenz: Überzeugungen anhand von Informationen aktualisieren#
Bei der Inferenz werden die beobachteten Variablen festgelegt und die A-posteriori-Verteilung einer Abfragevariablen berechnet, indem der Graph mit dem Satz von Bayes ausgewertet wird. Die Inferenz funktioniert in jede Richtung: von Ursachen zu Wirkungen (Vorhersage), von Wirkungen zu Ursachen (Diagnose) und zwischen Ursachen einer gemeinsamen Wirkung. Bei diesem letzten Muster, dem sogenannten Wegerklären, sinkt die Wahrscheinlichkeit eines Einbruchs, wenn man nach dem Ertönen des Alarms erfährt, dass es ein Erdbeben gab. Eine exakte Inferenz durch Aufzählung oder Variablenelimination ist bei kleinen oder baumartigen Netzwerken praktikabel, im Allgemeinen aber NP-schwer. Große Netzwerke verwenden deshalb Näherungsverfahren wie Likelihood-Gewichtung, Gibbs-Sampling oder loopy belief propagation.
Dieses Beispiel beantwortet die Lehrbuchabfrage P(Burglary | John calls, Mary calls) durch Aufzählung. Dazu wird die faktorisierten gemeinsamen Verteilung über die unbeobachteten Variablen Erdbeben und Alarm aufsummiert:
from itertools import product
# Conditional probability tables of the burglary-alarm network
p_burglary, p_earthquake = 0.001, 0.002
p_alarm = {(True, True): 0.95, (True, False): 0.94, (False, True): 0.29, (False, False): 0.001}
p_john = {True: 0.90, False: 0.05} # P(John calls | alarm)
p_mary = {True: 0.70, False: 0.01} # P(Mary calls | alarm)
def bern(p, value):
"""Return the probability of a binary outcome with success probability p."""
return p if value else 1 - p
# Evidence: both neighbors called. Sum the factored joint over the hidden variables.
joint = {True: 0.0, False: 0.0}
for b, e, a in product([True, False], repeat=3):
joint[b] += bern(p_burglary, b) * bern(p_earthquake, e) * bern(p_alarm[b, e], a) * p_john[a] * p_mary[a]
print(f"P(burglary | John and Mary call) = {joint[True] / sum(joint.values()):.3f}")Das Skript gibt 0.284 aus, dasselbe Ergebnis wie im Lehrbuch. Zwei Anrufe erhöhen die Wahrscheinlichkeit eines Einbruchs von 1 zu 1.000 auf etwa 28 %. Die übrigen 72 % entfallen auf Erklärungen ohne Einbruch, etwa einen durch ein Erdbeben oder einen Defekt ausgelösten Alarm, denn Einbrüche sind sehr selten.
Bayes-Netzwerke aus Daten lernen#
Ein Netzwerk lässt sich anhand von Expertenwissen von Hand erstellen, aus Daten lernen oder auf beide Arten aufbauen. Beim Lernen der Parameter werden die bedingten Wahrscheinlichkeitstabellen anhand beobachteter Häufigkeiten ausgefüllt. A-priori-Verteilungen glätten dabei seltene Kombinationen; fehlen Werte, kommt der Erwartungs-Maximierungs-Algorithmus zum Einsatz. Beim Lernen der Struktur wird der Graph selbst gesucht. Dazu werden entweder Kandidatengraphen anhand eines Kriteriums wie des Bayes'schen Informationskriteriums bewertet oder bedingte Unabhängigkeitstests durchgeführt, wie beim PC-Algorithmus. Gelernte Pfeile zeigen statistische Abhängigkeit. Sie als Ursachen zu interpretieren, erfordert die zusätzlichen Annahmen, die in der kausalen Entdeckung untersucht werden. Python-Bibliotheken wie pgmpy unterstützen beide Arten des Lernens sowie exakte und approximative Inferenz.
Anwendungen in der Praxis#
- Medizinische Diagnose: Netzwerke verknüpfen Krankheiten mit den Symptomen und Testergebnissen, die sie verursachen. Die Beobachtungen einer Ärztin oder eines Arztes aktualisieren so die Wahrscheinlichkeit der einzelnen Erkrankungen. Jede Schlussfolgerung lässt sich durch den Graphen zurückverfolgen – eine Form der erklärbaren KI.
- Fehlerdiagnose: Für Industrie- und IT-Systeme wird modelliert, wie sich Ausfälle von Komponenten auf Alarme und Messwerte auswirken. Bei der visuellen Inspektion können von einem YOLO26-Detektor erkannte Fehlerklassen als beobachtete Informationen in das Netzwerk eingehen. Diese aktualisieren die Wahrscheinlichkeit der jeweiligen übergeordneten Grundursache, etwa eines abgenutzten Werkzeugs oder einer falsch kalibrierten Maschine.
- Risikobewertung: Ökologinnen und Ökologen, Versicherer sowie Sicherheitsingenieurinnen und -ingenieure kombinieren spärliche Daten mit Expertenwissen in Netzwerken, die die Wahrscheinlichkeit seltener Ereignisse abschätzen.
Bayes-Netzwerke und verwandte Modelle#
- Naive Bayes: Ein Bayes-Netzwerk, in dem ein einzelner Klassenknoten die einzige Elternvariable jedes Merkmals ist. Dadurch wird angenommen, dass die Merkmale bei gegebener Klasse unabhängig voneinander sind.
- Markov-Zufallsfelder: Grafische Modelle mit ungerichteten Kanten, die sich für symmetrische Beziehungen eignen, etwa zwischen benachbarten Pixeln in einem Bild.
- Markov-Entscheidungsprozesse: Modelle für aufeinanderfolgende Entscheidungen, bei denen Aktionen den Zustand verändern und Belohnungen maximiert werden. Sie bilden den Standardrahmen für bestärkendes Lernen. Ein Bayes-Netzwerk erhält Entscheidungen und Auszahlungen erst, wenn es um Entscheidungs- und Nutzknoten zu einem Einflussdiagramm erweitert wird.
- Verdeckte Markov-Modelle: Ein dynamisches Bayes-Netzwerk, das bei jedem Zeitschritt dieselbe Struktur wiederholt und in jedem Schritt eine Beobachtung aus einem verborgenen Zustand erzeugt. Kalman-Filter haben dieselbe Struktur, aber mit kontinuierlichen Zuständen sowie linear-gaußschen Übergängen und Beobachtungen.










