Programming lesson
Bayes-Netze verstehen: Ein Tutorial zur MI6-Sicherheitsanalyse (CS6601 Assignment 3)
Lerne, wie du mit pgmpy einen Bayes-Netz für das MI6-Sicherheitsszenario erstellst – inklusive Knoten, Kanten und bedingten Wahrscheinlichkeitstabellen. Perfekt für das CS6601 Assignment 3, mit praxisnahen Beispielen aus Spionage und Cyberangriffen.
Bayes-Netze für die Spionageabwehr: Das MI6-Szenario verstehen
In diesem Tutorial lernst du, wie du einen Bayes-Netz (auch Bayesian Network genannt) für das CS6601 Assignment 3 entwirfst. Das Szenario: Spectre versucht, an die geheimen "Double-0"-Dateien des MI6 zu gelangen. Mit Hilfe der Python-Bibliothek pgmpy modellierst du die Abhängigkeiten zwischen Ereignissen wie Hackern, Computern, Entführungen und dem finalen Erfolg. Dieses Wissen ist nicht nur für die Uni wichtig, sondern auch für moderne KI-Anwendungen wie Spam-Filter, medizinische Diagnosen oder sogar Spieltheorie in E-Sports.
Was ist ein Bayes-Netz?
Ein Bayes-Netz ist ein probabilistisches Modell, das Unsicherheiten in komplexen Systemen abbildet. Es besteht aus Knoten (Ereignissen) und gerichteten Kanten (Abhängigkeiten). Jeder Knoten hat eine bedingte Wahrscheinlichkeitstabelle (CPT), die angibt, wie wahrscheinlich ein Ereignis in Abhängigkeit seiner Elternknoten ist. Stell dir vor, du analysierst die Gewinnwahrscheinlichkeit eines E-Sports-Teams basierend auf Spielerform und Gegner – genau so funktioniert ein Bayes-Netz.
Das MI6-Szenario: Knoten und Abhängigkeiten
Laut Aufgabenstellung müssen folgende Knoten verwendet werden:
- H: Spectre heuert professionelle Hacker an
- C: Spectre kauft den Computer "Contra"
- M: Spectre heuert Söldner an
- B: Bond bewacht M zum Zeitpunkt der Entführung
- Q: Q's Datenbank wird gehackt (Chiffre gestohlen)
- K: M wird entführt und gibt den Schlüssel preis
- D: Spectre erhält die "Double-0"-Dateien
Die Abhängigkeiten ergeben sich aus der Beschreibung:
- Q hängt von H und C ab (Hacker und Computer beeinflussen den Hack)
- K hängt von M und B ab (Söldner und Bond beeinflussen die Entführung)
- D hängt von Q und K ab (Chiffre und Schlüssel nötig)
Die Knoten H, C, M und B haben keine Eltern – sie sind Wurzelknoten mit a priori Wahrscheinlichkeiten.
Schritt-für-Schritt: Netz mit pgmpy erstellen
Öffne deine Datei submission.py und implementiere die Funktion make_security_system_net(). So gehst du vor:
from pgmpy.models import BayesianNetwork
def make_security_system_net():
model = BayesianNetwork()
# Knoten hinzufügen
model.add_nodes_from(['H', 'C', 'M', 'B', 'Q', 'K', 'D'])
# Kanten hinzufügen
model.add_edge('H', 'Q')
model.add_edge('C', 'Q')
model.add_edge('M', 'K')
model.add_edge('B', 'K')
model.add_edge('Q', 'D')
model.add_edge('K', 'D')
return model
Beachte: Die Kantenrichtung zeigt von der Ursache zur Wirkung. H und C beeinflussen Q, nicht umgekehrt. Das ist typisch für kausale Modellierung.
Bedingte Wahrscheinlichkeitstabellen (CPTs) definieren
Obwohl die Aufgabe zunächst nur das Netzgerüst verlangt, ist es wichtig, die CPTs zu verstehen. Später wirst du sie mit TabularCPD aus pgmpy hinzufügen. Hier ein Beispiel für den Knoten Q:
from pgmpy.factors.discrete import TabularCPD
cpd_Q = TabularCPD('Q', 2,
[[0.55, 0.9, 0.05, 0.25], # P(Q=True | H, C)
[0.45, 0.1, 0.95, 0.75]], # P(Q=False | H, C)
evidence=['H', 'C'], evidence_card=[2, 2])
model.add_cpds(cpd_Q)
Die Reihenfolge der Elternknoten in evidence bestimmt die Anordnung der Werte. Die Werte stammen aus der Aufgabenstellung: "Hacker knacken Datenbank ohne Contra mit 0.55, mit Contra mit 0.9" etc. Achte auf die korrekte Zuordnung!
Häufige Fehler vermeiden
Fehler 1: Falsche Eltern-Reihenfolge in der CPD. Verwende immer dieselbe Reihenfolge wie in evidence.
Fehler 2: Knoten vergessen. Stelle sicher, dass alle 7 Knoten vorhanden sind.
Fehler 3: Kanten falsch herum. Lies die Beschreibung genau: Bond beeinflusst die Entführung, nicht umgekehrt.
Warum dieses Wissen aktuell ist
Bayes-Netze werden in vielen KI-Trends eingesetzt: In autonomen Fahrzeugen zur Unfallvorhersage, in Finanzmodellen für Risikoabschätzung oder in Spielen wie "Among Us" zur Deduktion des Täters. Auch Chatbots und Empfehlungssysteme nutzen probabilistische Graphen. Mit diesem Tutorial legst du den Grundstein für fortgeschrittene maschinelle Lernverfahren.
Zusammenfassung und nächste Schritte
Du hast gelernt, wie man einen Bayes-Netz für das MI6-Szenario erstellt. Die nächsten Aufgaben in Assignment 3 umfassen das Hinzufügen von CPTs und die Inferenz (z.B. mit Variable Elimination). Teste dein Netz lokal, bevor du auf Gradescope einreichst – du hast nur 7 Versuche! Nutze print(model.check_model()) zur Validierung.
Viel Erfolg bei deinem CS6601 Assignment – und denk dran: In der Cybersicherheit sind probabilistische Modelle der Schlüssel zur Abwehr von Angriffen, genau wie bei MI6.