Zum Inhalt springen
coden

Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet

Gemeinsame Verteilung und ihre Faktorisierung, bayessches Netz und Tabellen bedingter Wahrscheinlichkeiten, Inferenz durch Aufzählung, Wegerklären, d-Separation und approximative Inferenz durch Stichproben — am Netz bewölkt, Rasensprenger, Regen, nasses Gras.

13 Minuten Matěj Žalmánek 2026-10-15

Serie KI-Grundlagen Teil 40 von 52
  1. Landkarte der künstlichen Intelligenz: was was ist und wie alles zusammenpasst
  2. Eine kurze Geschichte der künstlichen Intelligenz: von Turing bis zu Sprachmodellen
  3. Daten, Modell, Training, Inferenz: die Grundbegriffe an einem einzigen Beispiel
  4. Mathematische Notation lesen: Symbole, Indizes, Summen und Quantoren
  5. Mengen und Relationen: der Baukasten, aus dem Definitionen in der KI bestehen
  6. Funktionen und Abbildungen: warum jedes KI-Modell eine Funktion ist
  7. Logik und Beweise: die Regeln, nach denen KI schließt
  8. Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen
  9. Lineare Algebra für maschinelles Lernen: Vektoren, Matrizen und warum KI vor allem multipliziert
  10. Ableitungen, Gradient und Kettenregel: wie ein Modell herausfindet, in welche Richtung es lernen soll
  11. Gradientenabstieg: wie ein Modell lernt
  12. Was ist Wahrscheinlichkeit: vom Würfelwurf zu den Kolmogorow-Axiomen
  13. Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst
  14. Zufallsvariable und Verteilungsfunktion: eine Funktion, die alles über eine Verteilung verrät
  15. Dichtefunktion und Wahrscheinlichkeitsfunktion: warum eine stetige Zufallsvariable in einem Punkt die Wahrscheinlichkeit null hat
  16. Erwartungswert, Varianz und Kovarianz: wo eine Verteilung liegt, wie breit sie ist und was womit zusammenhängt
  17. Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
  18. Gesetz der großen Zahlen und zentraler Grenzwertsatz: Warum sich Durchschnitte so vorhersagbar verhalten
  19. Statistik und Parameterschätzung: Maximum Likelihood, MAP und Konfidenzintervalle
  20. Informationstheorie: Entropie, Kreuzentropie und KL-Divergenz — woher Verlustfunktionen kommen
  21. Zustandsraumsuche: BFS, DFS, UCS und A* mit Animationen
  22. Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
  23. Constraint Satisfaction: Backtracking, Constraint-Propagierung und AC-3 an Sudoku und einer Karte tschechischer Regionen
  24. Logik und wissensbasierte Systeme: Vorwärts- und Rückwärtsverkettung, Resolution und Expertensysteme
  25. Planung: STRIPS, die Blockwelt, Heuristiken aus Relaxierung und Planung in KI-Agenten
  26. Lokale Suche und simulierte Abkühlung: ein Handlungsreisender durch die tschechischen Regionalhauptstädte
  27. Genetische Algorithmen: Population, Kreuzung, Mutation und Selektion am Rucksack für die Wanderung
  28. Evolutionsstrategien und genetische Programmierung: von der 1/5-Erfolgsregel zum Keplerschen Gesetz
  29. Ameisenkolonieoptimierung: wie eine Pheromonspur einen kurzen Weg findet
  30. Partikelschwarmoptimierung: Trägheit, eigene Erfahrung und die Erfahrung des Schwarms
  31. Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
  32. Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt
  33. Fuzzy-Logik und Wahrscheinlichkeit: warum „etwas warm“ nicht „wahrscheinlich warm“ bedeutet
  34. Fuzzy-Logik: t-Normen, Implikationen und WENN–DANN-Regeln
  35. Fuzzy-Regelung: Mamdani und Sugeno vom Ventilator bis zum Pendel auf dem Wagen
  36. Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern
  37. Neuro-Fuzzy-Systeme (ANFIS): Fuzzy-Regeln, die aus Daten lernen
  38. Markow-Ketten: Übergangsmatrix, stationäre Verteilung und PageRank
  39. Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino
  40. Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet
  41. Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
  42. Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr
  43. Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt
  44. Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum
  45. Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
  46. Diffusionsmodelle: wie aus reinem Rauschen ein Bild wird
  47. Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
  48. Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
  49. Policy Gradient und PPO: die Strategie direkt lernen
  50. Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
  51. Programmieren mit KI-Agenten: Auftrag, Tests und Kontrolle
  52. Bewertung und Sicherheit von KI-Systemen: wie man misst und wie man überwacht

Der ganze Lehrplan der Serie 52 von 83 Themen fertig

Was du mitnimmst
  • Wie ein bayessches Netz eine riesige Wahrscheinlichkeitstabelle auf ein paar kleine Tabellen schrumpfen lässt.
  • Wie ein Netz von Wirkungen auf Ursachen schließt und was Wegerklären ist.
  • Wie man aus dem Graphen abliest, welche Variablen unabhängig sind, und wie man Wahrscheinlichkeiten durch Stichproben schätzt.

Vorher gut zu wissen: Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst, Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen

Du gehst morgens hinaus, und das Gras ist nass. Hat es geregnet, oder lief der Rasensprenger? Und wenn du dann vom Nachbarn erfährst, dass es in der Nacht geregnet hat — ändert das, was du über den Rasensprenger denkst? Menschen denken so, ohne nachzudenken. Eine Maschine kann das auch, solange sie weiß, was womit zusammenhängt. Ein bayessches Netz ist ein Bild dieser Zusammenhänge, aus dem sich die Antwort auf jede beliebige Frage berechnen lässt. Judea Pearl erhielt dafür und für die darauf aufbauende Theorie der Kausalität 2011 den Turing Award.

Dieser Teil baut auf den Teilen Bedingte Wahrscheinlichkeit und der Satz von Bayes und Graphen und Bäume auf.

1. Das Problem der großen Tabelle

Die vollständige Information über mehrere Zufallsvariablen ist ihre gemeinsame Verteilung — die Wahrscheinlichkeit jeder Kombination von Werten. Für vier Ja/Nein-Variablen gibt es 16 Kombinationen, also 15 unabhängige Zahlen. Für 37 Variablen (so viele hat das bekannte medizinische Netz ALARM zur Überwachung von Patienten unter Narkose) wären es über 137 Milliarden Zahlen, selbst wenn alle nur Ja/Nein wären. Eine solche Tabelle kann niemand aufstellen, speichern oder aus Daten schätzen. Rettung bringt die Tatsache, dass die meisten Variablen nur indirekt zusammenhängen.

Definition — gemeinsame Verteilung und die Zahl ihrer Parameter

Die gemeinsame Verteilung diskreter Variablen X1, …, Xn ist die Funktion P(x1, …, xn) = P(X1 = x1, …, Xn = xn), die nichtnegativ ist und sich über alle Kombinationen von Werten zu 1 summiert. Für n Ja/Nein-Variablen hat sie 2n Werte; den letzten berechnen wir aus den übrigen (die Summe ist 1), also gibt es 2n − 1 unabhängige Parameter.

Rechnung. 24 − 1 = 15; 237 − 1 = 137 438 953 471.

Satz — die Kettenregel

Für beliebige Variablen und jede Kombination von Werten mit positiver Wahrscheinlichkeit gilt

P(x1, …, xn) = P(x1) · P(x2 | x1) · P(x3 | x1, x2) ⋯ P(xn | x1, …, xn−1) = ∏i=1n P(xi | x1, …, xi−1).

Beweis: Nach der Definition der bedingten Wahrscheinlichkeit ist P(x1, …, xn) = P(xn | x1, …, xn−1) · P(x1, …, xn−1). Dasselbe wenden wir auf den zweiten Faktor an und so weiter, bis nur P(x1) übrig bleibt. ∎

Die Kettenregel spart nichts: Der letzte Faktor hängt immer noch von allen vorherigen Variablen ab, es ist also nur eine andere Schreibweise derselben riesigen Tabelle. Die Ersparnis kommt erst, wenn wir einige Bedingungen weglassen.

2. Bayessches Netz

Definition — bayessches Netz

Ein bayessches Netz über den Variablen X1, …, Xn ist ein gerichteter azyklischer Graph, dessen Knoten die Variablen sind, zusammen mit einer Tabelle bedingter Wahrscheinlichkeiten P(Xi | Eltern(Xi)) für jeden Knoten. Das Netz legt die gemeinsame Verteilung fest:

P(x1, …, xn) = ∏i P(xi | Eltern(Xi)).

Einfach gesagt

Die Pfeile führen von Ursachen zu Wirkungen. Bei jeder Variable genügt es zu wissen, wie sie von ihren direkten Ursachen abhängt — mehr nicht. Die Wahrscheinlichkeit der ganzen Situation ist das Produkt dieser lokalen Zahlen. Statt einer riesigen Tabelle haben wir ein paar kleine.

Warum darf das Netz nur P(xi | Eltern) schreiben und nicht die ganze Vorgeschichte wie die Kettenregel? Weil es über den Graphen bedingte Unabhängigkeiten annimmt.

Definition — bedingte Unabhängigkeit

Die Variablen A und C sind bedingt unabhängig gegeben E, geschrieben A ⊥ C | E, wenn für alle Werte a, c, e mit P(c, e) > 0 gilt

P(a | c, e) = P(a | e)

P(a | c, e)
was wir über A wissen, wenn wir E und zusätzlich C kennen
P(a | e)
was wir über A allein aus E wissen; die Gleichheit sagt, dass C nichts mehr hinzufügt — der ganze Zusammenhang zwischen A und C läuft über E
Äquivalent: P(a, c | e) = P(a | e) · P(c | e). Für leeres E ist das gewöhnliche Unabhängigkeit.
Satz — Faktorisierung ist Kettenregel plus lokale Unabhängigkeiten

Ordnen wir die Variablen topologisch (jedes Elternteil vor seinen Kindern). Wenn jede Variable Xi bei bekannten Eltern bedingt unabhängig von allen Variablen ist, die nicht ihre Nachkommen sind (lokale Markow-Bedingung), dann gilt P(x1, …, xn) = ∏i P(xi | Eltern(Xi)).

Beweis: In der Kettenregel in topologischer Reihenfolge steht P(xi | x1, …, xi−1). Unter X1, …, Xi−1 sind alle Eltern von Xi und keiner seiner Nachkommen (ein Nachkomme steht in der Reihenfolge erst dahinter). Nach der Markow-Bedingung können wir alle übrigen aus der Bedingung weglassen, und es bleibt P(xi | Eltern(Xi)). ∎

Es gilt auch umgekehrt: Jede Verteilung, die durch ein Produkt von Tabellen gegeben ist, erfüllt die lokale Markow-Bedingung. Deshalb lässt sich ein bayessches Netz auf beide Arten definieren.

Unser Netz: Wenn es bewölkt ist, ist Regen wahrscheinlicher und es ist weniger wahrscheinlich, dass jemand den Rasensprenger einschaltet. Sowohl Regen als auch Rasensprenger machen das Gras nass. Die Zahlen stammen aus Kevin Murphys beliebtem Beispiel:

bewölkt Z P(Z) 0,5 Sprenger P Z P(P) − 0,5 + 0,1 Regen D Z P(D) − 0,2 + 0,8 nasses Gras T P D P(T) + − 0,9 + + 0,99 − + 0,9 − − 0
Das Netz „nasses Gras“ mit Tabellen bedingter Wahrscheinlichkeiten + ja, − nein

Das Netz hat 1 + 2 + 2 + 4 = 9 Zahlen statt 15. Bei vier Variablen ist die Ersparnis klein, bei Hunderten riesig: Hat jeder Knoten höchstens k Eltern, wächst die Zahl der Zahlen mit n linear (n · 2k), nicht exponentiell (2n). Die Wahrscheinlichkeit der Situation „bewölkt, Rasensprenger lief nicht, es regnete, Gras nass“ ist 0,5 · 0,9 · 0,8 · 0,9 = 0,324.

P(z, p, d, t) = P(z) · P(p | z) · P(d | z) · P(t | p, d)

P(z)
bewölkt hat keine Eltern, seine Tabelle ist eine einzige Zahl; im Beispiel 0,5
P(p | z)
der Rasensprenger hängt nur von den Wolken ab — hier unterscheidet sich nichts von der Kettenregel; im Beispiel lief er bei bewölktem Himmel nicht: 1 − 0,1 = 0,9
P(d | z)
die Kettenregel würde P(d | z, p) verlangen; das Netz nimmt an, dass der Rasensprenger bei bekanntem Himmel nichts über den Regen verrät, und so fällt p aus der Bedingung heraus; im Beispiel 0,8
P(t | p, d)
die Kettenregel würde P(t | z, p, d) verlangen; das Gras „weiß“ von den Wolken nur über Regen und Rasensprenger, und so fällt z heraus; im Beispiel (Rasensprenger nein, Regen ja) 0,9
Jeder weggelassene Term einer Bedingung ist eine bedingte Unabhängigkeit, die das Netz annimmt — genau diese verkürzen 15 Zahlen auf 9.

3. Inferenz: von der Wirkung zur Ursache

Definition — Inferenz durch Aufzählung

Die Wahrscheinlichkeit der Anfrage Q bei der Evidenz E = e ist

P(Q | e) = ∑y P(Q, e, y) / ∑q, y P(q, e, y),

wobei über alle Werte y der übrigen (verborgenen) Variablen summiert wird und jeder Term ein Produkt aus der Faktorisierung des Netzes ist.

Einfach gesagt

Wir gehen alle möglichen Welten durch, die mit dem übereinstimmen, was wir wissen (das Gras ist nass), und schauen, welches Gewicht unter ihnen die haben, in denen es geregnet hat. Das ist der Satz von Bayes aus dem Teil über bedingte Wahrscheinlichkeit, nur wird über mehr Variablen auf einmal summiert.

P(Q | e) = ∑y P(Q, e, y) / ∑q, y P(q, e, y)

e
Evidenz — die Werte, die wir beobachtet haben (bei uns nasses Gras); in allen summierten Welten sind sie fest
∑y
die verborgenen Variablen (bei uns bewölkt und Rasensprenger) kennen wir nicht und sie interessieren uns nicht, also summieren wir über alle ihre Möglichkeiten — Marginalisierung; die Welten schließen einander aus, also addieren sich die Wahrscheinlichkeiten
P(Q, e, y)
die Wahrscheinlichkeit einer vollständigen Welt, in der Anfrage und Evidenz gelten — ein Produkt von Zahlen aus den Tabellen gemäß der Faktorisierung
∑q, y P(q, e, y)
= P(e), das Gewicht aller Welten, die mit der Evidenz übereinstimmen; die Division ist die Definition der bedingten Wahrscheinlichkeit P(Q | e) = P(Q, e) / P(e) und garantiert, dass P(Q | e) + P(¬Q | e) = 1
Beispiel — P(Regen | nasses Gras) durch Aufzählung

Die Evidenz ist T = ja, die Anfrage D, verborgen sind Z und P. Welten mit nassem Gras gibt es 23 = 8; jede ist das Produkt P(z) · P(p | z) · P(d | z) · P(t | p, d):

RegenbewölktRasensprengerProduktP(Welt)
jajaja0,5 · 0,1 · 0,8 · 0,990,0396
janeinja0,5 · 0,5 · 0,2 · 0,990,0495
jajanein0,5 · 0,9 · 0,8 · 0,90,3240
janeinnein0,5 · 0,5 · 0,2 · 0,90,0450
neinjaja0,5 · 0,1 · 0,2 · 0,90,0090
neinneinja0,5 · 0,5 · 0,8 · 0,90,1800
neinjanein0,5 · 0,9 · 0,2 · 00,0000
neinneinnein0,5 · 0,5 · 0,8 · 00,0000

Die ersten vier Zeilen (es hat geregnet) ergeben P(D, T) = 0,4581, alle acht P(T) = 0,6471. Die letzten zwei Zeilen sind null: Ohne Regen und ohne Rasensprenger ist das Gras nicht nass. Also

P(D | T) = 0,4581 / 0,6471 = 0,708.

def dotaz(Q, dukazy, sit):
    citatel = jmenovatel = 0.0
    for svet in vsechna_prirazeni(sit):              # 2^n vollständige Welten
        if any(svet[k] != v for k, v in dukazy.items()):
            continue                                 # passt nicht zur Evidenz
        p = 1.0
        for uzel in sit:                             # Faktorisierung des Netzes
            p *= P(uzel, svet[uzel], svet[rodice(uzel)])
        jmenovatel += p                              # → P(e)
        if svet[Q]:
            citatel += p                             # → P(Q, e)
    return citatel / jmenovatel

Im Voraus (ohne jede Beobachtung) ist die Wahrscheinlichkeit von Regen 0,5 und die des Rasensprengers 0,3. Nasses Gras erhöht beide: P(Regen | nasses Gras) = 0,708 und P(Rasensprenger | nasses Gras) = 0,430. Regen ist die wahrscheinlichere Erklärung, weil es öfter regnet, als der Rasensprenger läuft. Nasses Gras erhöht auch die Wahrscheinlichkeit, dass es bewölkt war — von 0,5 auf 0,576 —, obwohl Gras und Wolken nicht direkt zusammenhängen. Information fließt durch das Netz gegen die Pfeile.

4. Wegerklären

Jetzt erfahren wir, dass es in der Nacht wirklich geregnet hat. Was passiert mit dem Rasensprenger?

00,51 0,30 0,43 0,19 Rasensprenger 0,50 0,71 0,32 Regen Ursache des nassen Grases (Kategorie) Wahrscheinlichkeit P (0–1)
Rasensprenger und Regen: im Voraus, bei nassem Gras und bei nassem Gras, wenn wir von der anderen Ursache wissen im Voraus Gras ist nass und wir kennen die andere Ursache

Die Wahrscheinlichkeit des Rasensprengers fällt von 0,430 auf 0,194. Der Regen hat das nasse Gras schon erklärt, also bleibt für den Rasensprenger kein Grund. Umgekehrt: Wenn wir wissen, dass der Rasensprenger lief, sinkt die Wahrscheinlichkeit von Regen von 0,708 auf 0,320. Dieses Phänomen heißt Wegerklären (explaining away). Zwei Ursachen, die im Voraus nur schwach zusammenhingen, beginnen sich gegenseitig zu „verdrängen“, sobald wir ihre gemeinsame Wirkung beobachten. Und wüssten wir, dass es nicht geregnet hat, müsste der Rasensprenger gelaufen sein: P(Rasensprenger | nasses Gras, kein Regen) = 1, denn in unserem Netz kann das Gras nicht von selbst nass sein.

Beispiel — Wegerklären in Zahlen

Aus der Tabelle im vorigen Beispiel: Die Welten, in denen es geregnet hat, der Rasensprenger lief und das Gras nass ist, haben zusammen P(P, D, T) = 0,0396 + 0,0495 = 0,0891. Daher

P(P | T, D) = P(P, D, T) / P(D, T) = 0,0891 / 0,4581 = 0,194,

P(D | T, P) = P(P, D, T) / P(P, T) = 0,0891 / 0,2781 = 0,320.

Formal ist Wegerklären die Ungleichung P(P | T, D) < P(P | T): Die Bestätigung einer Ursache senkt die Wahrscheinlichkeit der anderen (0,194 < 0,430).

5. Was das Netz verrät: d-Separation

Der Graph sagt nicht nur, wie man rechnet — er sagt auch, welche Variablen voneinander unabhängig sind, und das ohne eine einzige Zahl. Alle Möglichkeiten setzen sich aus drei Grundformen zusammen:

  • Kette A → B → C: A und C hängen zusammen, aber wenn wir B kennen, nicht mehr. (Bewölkt → Regen → nasses Gras: Wer weiß, ob es geregnet hat, dem sagen die Wolken nichts über das Gras.)
  • Gabel A ← B → C: Eine gemeinsame Ursache macht A und C abhängig; wenn wir sie kennen, verschwindet die Abhängigkeit. (Rasensprenger und Regen hängen im Voraus über die Wolken zusammen: P(Rasensprenger | Regen) = 0,18, aber P(Rasensprenger | kein Regen) = 0,42. Wenn wir wissen, ob es bewölkt ist, sind sie unabhängig.)
  • Kollider A → B ← C: Die Ursachen sind unabhängig, solange wir die gemeinsame Wirkung nicht beobachten — dann werden sie abhängig. Das ist Wegerklären.
Definition — d-Separation

Ein Pfad im Graphen (ohne Rücksicht auf die Richtung der Pfeile) ist durch eine Menge E blockiert, wenn auf ihm eine Kette oder Gabel mit Mittelknoten in E liegt oder ein Kollider, dessen Mittelknoten und alle seine Nachkommen nicht in E liegen. Die Variablen A und C sind durch die Menge E d-separiert, wenn E alle Pfade zwischen ihnen blockiert. Dann sind sie in jeder Verteilung, die das Netz festlegt, bedingt unabhängig gegeben E.

Einfach gesagt

Information fließt durch den Graphen entlang von Pfaden. Eine bekannte Variable in der Mitte einer Kette oder Gabel stoppt den Fluss — sie ist schon „erklärt“. Beim Kollider ist es umgekehrt: Solange wir die Wirkung nicht kennen, steht der Fluss dort still; sobald wir sie beobachten, öffnet er sich. Aus dem Bild lässt sich so ablesen, was gemessen werden muss und was überflüssig ist.

In unserem Netz sind bewölkt und nasses Gras d-separiert, wenn wir sowohl den Rasensprenger als auch den Regen kennen — die Rechnung bestätigt es: Die Wahrscheinlichkeit eines bewölkten Himmels hängt dann überhaupt nicht vom Gras ab.

Beispiel — drei Formen, durch Rechnung überprüft
  • Gabel Rasensprenger ← bewölkt → Regen. Ohne Kenntnis des Himmels: P(P | D) = 0,18 ≠ P(P) = 0,3, abhängig. Bei bekanntem Himmel: P(P | Z, D) = 0,1 = P(P | Z), also P ⊥ D | Z.
  • Kollider Rasensprenger → nasses Gras ← Regen. Bei bekanntem Himmel sind P und D unabhängig (P(P | Z, D) = P(P | Z, ¬D) = 0,1), aber sobald wir das Gras beobachten, nicht mehr: P(P | Z, D, T) = 0,109, während P(P | Z, ¬D, T) = 1.
  • D-Separation von bewölktem Himmel und nassem Gras durch die Menge {P, D}: Beide Pfade Z → P → T und Z → D → T sind Ketten mit bekanntem Mittelknoten, also blockiert. Und tatsächlich: P(Z | P, D) = 0,444 und P(Z | P, D, T) = 0,444; P(Z | P, ¬D) = 0,048 und P(Z | P, ¬D, T) = 0,048.

6. Approximative Inferenz durch Stichproben

Inferenz durch Aufzählung geht alle Kombinationen der verborgenen Variablen durch — in einem allgemeinen Netz exponentiell viele. Exakte Inferenz in bayesschen Netzen ist NP-schwer. Für große Netze werden die Wahrscheinlichkeiten deshalb durch Simulation geschätzt.

Algorithmen — Verwerfungsmethode und Likelihood-Gewichtung

Verwerfungsmethode (Rejection Sampling): Erzeuge Welten aus dem Netz (von den Ursachen zu den Wirkungen, nach den Tabellen), verwirf die, die nicht zur Evidenz passen, und berechne unter den übrigen den Anteil, in dem die Anfrage gilt.

Likelihood-Gewichtung (Likelihood Weighting): Lose die Evidenz nicht aus, sondern fixiere sie; gewichte jede erzeugte Welt mit dem Produkt der Wahrscheinlichkeiten der Evidenz bei den Werten ihrer Eltern. Die Schätzung ist der gewichtete Anteil.

Einfach gesagt

Verwerfen ist ehrlich, aber verschwenderisch: Wenn die Evidenz selten ist, wirft es fast alle Stichproben weg. Die Likelihood-Gewichtung wirft nichts weg — sie gibt jeder Stichprobe nur ein Gewicht danach, wie gut sie zu dem passt, was wir wissen.

def zamitani(Q, dukazy, n, sit):
    prijato = ano = 0
    for _ in range(n):
        svet = {}
        for uzel in sit:                             # von Ursachen zu Wirkungen
            svet[uzel] = nahoda() < P(uzel, True, svet[rodice(uzel)])
        if any(svet[k] != v for k, v in dukazy.items()):
            continue                                 # in den Papierkorb
        prijato += 1
        ano += svet[Q]
    return ano / prijato

def vazena(Q, dukazy, n, sit):
    s = s_ano = 0.0
    for _ in range(n):
        svet, w = {}, 1.0
        for uzel in sit:
            p = P(uzel, True, svet[rodice(uzel)])
            if uzel in dukazy:                       # Evidenz losen wir nicht aus…
                svet[uzel] = dukazy[uzel]
                w *= p if dukazy[uzel] else 1 - p    # …sondern gewichten, wie wahrscheinlich sie ist
            else:
                svet[uzel] = nahoda() < p
        s += w
        s_ano += w * svet[Q]
    return s_ano / s

P̂(Q | e) = ∑k wk [Q gilt in Stichprobe k] / ∑k wk,   wk = ∏j P(ej | Elternk)

wk
das Gewicht der Stichprobe (grün wie die Kurve der Likelihood-Gewichtung im Diagramm) — das Produkt der Wahrscheinlichkeiten aller Evidenzen ej bei den Werten ihrer Eltern, die in Stichprobe k gefallen sind: Die Evidenz haben wir nicht ausgelost, sondern aufgezwungen, also müssen wir berücksichtigen, wie wahrscheinlich sie bei den übrigen ausgelosten Werten wäre — sonst wäre die Schätzung verzerrt
[Q gilt in Stichprobe k]
1, wenn in der Stichprobe die Anfrage gilt, sonst 0 — wir zählen nur das Gewicht der Stichproben, in denen es geregnet hat
∑k wk
das Gesamtgewicht; durch die Division machen wir daraus einen Anteil, genau wie die Division durch P(e) bei der Aufzählung. Dank ihr macht es nichts, dass sich die Gewichte nicht zu 1 summieren
Verwerfen ist ein Sonderfall: Das Gewicht ist 1 für Stichproben, die zur Evidenz passen, und 0 für die übrigen.
Beispiel — Gewichte bei der Evidenz „das Gras ist nass“

Die einzige Evidenz ist T = ja, ihre Eltern sind Rasensprenger und Regen. Das Gewicht einer Stichprobe ist deshalb einfach P(T = ja | p, d) aus der Tabelle des nassen Grases:

  • Rasensprenger und Regen: w = 0,99,
  • nur eines von beiden: w = 0,9,
  • keines: w = 0 — eine solche Stichprobe trägt nichts bei, genauso wie das Verwerfen sie wegwerfen würde.

Vom Himmel hängt das Gewicht nicht ab: bewölkt ist kein Elternteil des Grases.

0,60,70,8 101001 00010 000 Stichproben (Anzahl, log. Skala) Schätzung P(Regen | nass) (0–1)
Schätzung von P(Regen | nasses Gras) nach Anzahl der Stichproben Verwerfen Likelihood-Gewichtung exakt 0,708

Mit hundert Stichproben lieferte das Verwerfen die Schätzung 0,686 und nutzte nur 70 davon — die übrigen 30 hatten trockenes Gras und landeten im Papierkorb. Mit 10 000 Stichproben (von denen 6 524 übrig blieben) ist die Schätzung 0,703, nah am exakten Wert 0,708. Der Fehler sinkt wie 1/√N, wie der zentrale Grenzwertsatz sagt: Für eine zehnmal genauere Schätzung braucht man hundertmal mehr Stichproben.

σP̂ = √(p(1 − p) / Nakz),   Nakz ≈ N · P(e)

p(1 − p)
die Varianz einer einzelnen Ja/Nein-Stichprobe (Bernoulli-Verteilung mit Wahrscheinlichkeit p); am größten ist sie für p = 0,5, wenn eine einzelne Stichprobe am wenigsten vorhersagbar ist
Nakz
die Zahl der Stichproben, die tatsächlich zählen; beim Verwerfen nur die, die durchgekommen sind, und das ist im Mittel der Anteil P(e) — bei seltener Evidenz fast keine. Die Varianz des Mittelwerts von N unabhängigen Stichproben ist N-mal kleiner
Die Wurzel rechnet die Varianz zurück in Einheiten der Wahrscheinlichkeit — deshalb sinkt der Fehler nur wie 1/√N. (Die Gleichheit ist ungefähr: Die Zahl der akzeptierten Stichproben ist selbst zufällig.)
Beispiel — wie großen Fehler man erwarten kann

Exakt ist p = 0,708 und P(e) = P(T) = 0,6471, also erwarten wir von 10 000 Stichproben etwa 6 471 akzeptierte (tatsächlich waren es 6 524).

  • Nakz = 70: σ = √(0,708 · 0,292 / 70) = 0,054; tatsächlicher Fehler |0,686 − 0,708| = 0,022.
  • Nakz = 6 524: σ = 0,0056; tatsächlicher Fehler 0,0050.

Beide tatsächlichen Fehler sind kleiner als eine Standardabweichung — im Einklang damit, dass etwa zwei Drittel der Schätzungen in ±σ fallen (Normalverteilung nach dem zentralen Grenzwertsatz).

7. Bayessche Netze in der Praxis

  • Diagnose. Medizinische Netze (ALARM, QMR-DT mit Hunderten Krankheiten und Tausenden Symptomen) und die Fehlerdiagnose von Maschinen und Netzwerken: aus beobachteten Symptomen die wahrscheinlichste Ursache ableiten — und vorschlagen, was als Nächstes gemessen werden soll.
  • Lernen aus Daten. Die Tabellen lassen sich aus Daten durch Zählen schätzen (mit der Maximum-Likelihood-Methode aus dem Teil über Statistik), sogar wenn einige Werte fehlen — mit dem EM-Algorithmus, einem Verwandten des Baum-Welch-Algorithmus aus dem letzten Teil.
  • Kausalität. Pearl hat gezeigt, dass ein Netz, das als Graph von Ursachen gelesen wird, auch Fragen der Art „was würde passieren, wenn wir eingreifen“ beantworten kann — den Rasensprenger selbst einschalten —, was sich aus Korrelationen allein nicht ablesen lässt. Darauf beruht die heutige kausale Inferenz in Epidemiologie und Ökonomie.
  • Verwandte. Der naive Bayes-Klassifikator ist ein bayessches Netz mit einer Ursache und vielen unabhängigen Wirkungen. Hidden-Markov-Modelle aus dem letzten Teil sind ein in der Zeit entfaltetes bayessches Netz.

8. Zusammenfassung

  • Ein bayessches Netz ist ein gerichteter azyklischer Graph mit Tabellen P(X | Eltern); die gemeinsame Verteilung ist das Produkt dieser Tabellen. Unser Netz braucht 9 Zahlen statt 15.
  • Inferenz funktioniert auch gegen die Pfeile: Nasses Gras erhöht die Wahrscheinlichkeit von Regen auf 0,708 und die des Rasensprengers auf 0,430.
  • Wegerklären: Wenn wir wissen, dass es geregnet hat, sinkt die Wahrscheinlichkeit des Rasensprengers auf 0,194.
  • Die d-Separation liest Unabhängigkeiten direkt aus dem Graphen ab — Kette und Gabel werden durch Beobachtung geschlossen, ein Kollider geöffnet.
  • Exakte Inferenz ist im Allgemeinen NP-schwer; Stichprobenverfahren liefern Schätzungen mit einem Fehler, der wie 1/√N sinkt.

Willst du es selbst ausprobieren? Lass einen KI-Agenten ein bayessches Netz für eine Panne deines eigenen Autos oder Computers bauen („springt nicht an — Batterie oder Anlasser?“) und probiere aus, wie sich der Verdacht ändert, wenn du Beobachtungen hinzufügst.

Siehst du das anders? Schreib an support@coden-app.com.

Ein Agent auf deinem Rechner, vom Telefon aus gesteuert