Wissensbasiertes System: Fakten, Regeln, Inferenz
Du unterscheidest Wissensbasis und Inferenzmaschine, formulierst Fakten und Regeln und erklärst Ableitungen sowie negative Antworten.
Kurz gesagt
Ein wissensbasiertes System nutzt gespeicherte Fakten und Regeln, um Anfragen zu beantworten. Die Wissensbasis enthält dieses Wissen; die Inferenzmaschine prüft, welche Antworten daraus folgen.
Wie kann ein Programm eine Frage beantworten, deren Antwort nicht ausdrücklich gespeichert ist? Dazu kann es Regeln auf vorhandene Fakten anwenden. Alle folgenden Modelle sind ausgedacht; für jede Aufgabe gelten genau die dort angegebenen Fakten und Regeln.
Deine Lernziele
Ein wissensbasiertes System verarbeitet ausdrücklich dargestelltes Wissen. Seine Wissensbasis enthält Fakten und Regeln. Ein Fakt ist eine Aussage, die im Modell als gegeben gilt. Eine Regel beschreibt, welche Aussage aus bestimmten Bedingungen folgt. Die Einträge müssen deshalb nicht schon die wirkliche Welt vollständig oder richtig beschreiben.
Die Inferenzmaschine ist der Berechnungsmechanismus, der dieses Wissen verwendet. Sie prüft anhand der Fakten und Regeln, ob sich eine gesuchte Aussage begründen lässt. Dieses Schlussfolgern heißt Inferenz. Eine begründete Folge kann also beantwortet werden, auch wenn sie nicht selbst als Fakt gespeichert ist.
Eine Anfrage ist eine Frage an das System. Sie legt fest, welche Aussage geprüft werden soll. Durch das Stellen einer Anfrage wird diese Aussage noch nicht zu einem Fakt. Die Rollen bleiben getrennt: Die Wissensbasis enthält das dargestellte Wissen, die Inferenzmaschine verarbeitet es.
Wissensbasis und Inferenzmaschine
Die Wissensbasis enthält Fakten und Regeln. Die Inferenzmaschine nutzt diese Einträge, um Anfragen zu bearbeiten und Schlussfolgerungen zu begründen.
Merke: Eine Schlussfolgerung gilt aufgrund der angegebenen Fakten und Regeln. Die Inferenzmaschine überprüft damit nicht unabhängig, ob die gespeicherten Fakten in der Wirklichkeit stimmen.
Teste dich
Prolog ist eine Programmiersprache, in der du Fakten, Regeln und Anfragen formulieren kannst. Wir verwenden einen einfachen Ausschnitt ihrer Schreibweise. Ein Name vor Klammern bezeichnet eine Eigenschaft oder Beziehung. Die Angaben in den Klammern heißen Argumente. Im Buchmodell bedeutet buch(roman): Das Objekt mit dem Namen roman ist ein Buch. steht(roman, regal) bedeutet: roman steht im regal. Bei Beziehungen ist die Reihenfolge der Argumente festgelegt.
Die verwendeten Eigenschafts-, Beziehungs- und Objektnamen beginnen klein. Ein Fakt endet mit einem Punkt, etwa buch(roman). Ein Name wie X oder Y beginnt groß und bezeichnet eine Variable: einen Platzhalter für ein Objekt. Innerhalb derselben Regel steht dieselbe Variable für dasselbe Objekt. Verschiedene Variablen müssen dagegen nicht verschiedene Objekte bezeichnen.
Eine Regel hat die Form Folge :- Bedingungen. Das Zeichen :- liest du als „gilt, wenn“. Die Folge steht links, die Bedingungen stehen rechts. Das Komma zwischen Bedingungen bedeutet „und“: Alle Bedingungen müssen mit zueinander passenden Belegungen der Variablen gelten. Das Komma innerhalb einer Klammer trennt dagegen Argumente. Die Regel ausleihbar(X) :- buch(X), frei(X). bedeutet: X ist ausleihbar, wenn X ein Buch und X frei ist. Sie sagt nicht, dass jede Bedingung allein genügt.
Ein Prolog-Interpreter ist ein Programm, das Prolog-Anfragen bearbeitet. Seine Eingabeaufforderung ?- kennzeichnet eine Anfrage. Du fragst etwa mit ?- ausleihbar(roman). nach dem Objekt roman. Je nach verwendeter Umgebung erscheint eine positive Antwort als true oder yes und eine negative als false oder no. Die Eingabeaufforderung und die Antwort gehören zur Bedienung des Interpreters; sie sind keine Fakten oder Regeln der Wissensbasis.
Beispiel: Ein ausgedachtes Buchmodell
- 1buch(roman).
- 2frei(roman).
- 3steht(roman, regal).
- 4ausleihbar(X) :- buch(X), frei(X).
- 5Anfrage: ?- ausleihbar(roman).
- 6Positive Antwort: true. Beide Bedingungen sind für roman durch Fakten belegt.
Merke: Ein Fakt stellt eine Aussage bereit. Eine Regel verbindet Bedingungen mit einer Folge. Eine Anfrage verlangt die Prüfung einer Aussage.
Teste dich
Bei einer mehrstufigen Ableitung begründest du eine Aussage zunächst aus Fakten. Diese Aussage kann dann eine Bedingung einer weiteren Regel erfüllen. So entsteht eine Kette von Begründungen. Eine Zwischenaussage muss dabei nicht als ursprünglicher Fakt in der Wissensbasis stehen.
Notiere bei jedem Schritt, welche Regel du benutzt und durch welches Objekt du ihre Variablen ersetzt. Prüfe anschließend jede Bedingung. Ein Beleg zu einem anderen Objekt ersetzt keinen fehlenden Beleg zum gesuchten Objekt. Mehrere Bedingungen einer Regel müssen zusammen erfüllt sein.
Im folgenden Werkzeugmodell steht erfasst für „im Modell eingetragen“, geprueft für „im Modell geprüft“, gelagert für „im Modell gelagert“ und verleihbar für „nach den Modellregeln verleihbar“. Wir erklären die Ableitung von den Fakten zum Ziel. Diese Darstellung legt keine zeitliche Reihenfolge für die interne Suche eines bestimmten Programms fest.
Beispiel: Ein ausgedachtes Werkzeugmodell
- 1Fakten: erfasst(bohrer). geprueft(bohrer).
- 2Regeln: gelagert(X) :- erfasst(X). verleihbar(X) :- gelagert(X), geprueft(X).
- 3Anfrage: ?- verleihbar(bohrer).
- 4Ersetze in der ersten Regel X durch bohrer. erfasst(bohrer) ist ein Fakt; damit folgt gelagert(bohrer).
- 5Ersetze in der zweiten Regel X durch bohrer. gelagert(bohrer) ist hergeleitet und geprueft(bohrer) ist ein Fakt.
- 6Beide Bedingungen sind erfüllt. Damit folgt verleihbar(bohrer); die Anfrage erhält eine positive Antwort.
Merke: Eine vollständige Begründung nennt für jede verwendete Bedingung einen passenden Fakt oder eine weitere Ableitung. Die Erklärung an einem Beispiel beweist keine allgemeine Eigenschaft aller Prolog-Programme.
Teste dich
Eine positive Antwort setzt einen passenden Fakt oder eine passende Ableitung durch Regeln voraus. Ein fehlender gleichlautender Fakt genügt deshalb noch nicht für eine negative Antwort: Vielleicht lässt sich die Aussage durch eine Regel begründen. Bei mehreren Bedingungen müssen alle mit zueinander passenden Belegungen der Variablen belegt sein. Ein Beleg zu einem anderen Objekt schließt eine Lücke nicht.
Endet die Suche, ohne die Anfrage zu belegen, erscheint im hier betrachteten Prolog-Modell eine negative Antwort: no oder false. Sie bedeutet, dass die Anfrage aus den vorhandenen Fakten und Regeln nicht hergeleitet werden konnte. Sie beweist nicht, dass die Aussage außerhalb dieser Wissensbasis falsch ist. Auch die gegenteilige Aussage folgt daraus nicht als neue belegte Tatsache.
Die geschlossene-Welt-Annahme bezeichnet hier die Behandlung nicht belegbarer Anfragen als negativ. Diese Behandlung ersetzt kein vollständiges Wissen über die Wirklichkeit. Unsere Beispiele verwenden kleine Wissensbasen ohne sich selbst aufrufende Regeln; ihre gezeigten Suchläufe enden. Daraus folgt keine Zusage, dass jede beliebige Prolog-Anfrage endet. Eine noch laufende Suche ohne Antwort ist keine negative Antwort.
Negative Antwort
no oder false meldet nach abgeschlossener Suche: Für diese Anfrage wurde aus der betrachteten Wissensbasis keine Ableitung gefunden. Über die Wahrheit außerhalb des Modells ist damit nichts bewiesen.
Beispiel: Ein ausgedachtes Wettermodell
- 1Fakt: regen(westfeld). regen bedeutet hier „im Modell als Regenort eingetragen“.
- 2Regel: nass(X) :- regen(X). nass bedeutet hier „nach der Modellregel nass“.
- 3Anfrage: ?- nass(ostfeld).
- 4Die Regel benötigt regen(ostfeld). Vorhanden ist jedoch regen(westfeld); eine weitere passende Regel gibt es nicht.
- 5Die Suche endet mit no. Damit ist weder tatsächliche Nässe noch tatsächliche Trockenheit in ostfeld bewiesen.
Teste dich
Alles auf einen Blick
Wissensbasiertes System
Fakten und Regeln stellen das Wissen des Modells dar.
Sie prüft Anfragen anhand dieses Wissens.
Links von :- steht die Folge; rechts stehen ihre Bedingungen.
Begründete Zwischenaussagen können weitere Regelschritte ermöglichen.
no oder false nach abgeschlossener Suche bedeutet fehlende Herleitbarkeit aus der Wissensbasis, keinen Beweis über die Wirklichkeit.
Eine Abholung im ausgedachten Paketmodell prüfen
- 1Die Fakten lauten: liegt(paket, depot). offen(depot). liegt beschreibt den Lagerort; offen beschreibt einen im Modell geöffneten Ort.
- 2Die Regeln lauten: erreichbar(X) :- liegt(X, Y), offen(Y). abholbar(X) :- erreichbar(X). erreichbar und abholbar gelten hier nach diesen Modellregeln.
- 3Die Anfrage lautet: ?- abholbar(paket). Die zweite Regel benötigt dafür erreichbar(paket).
- 4Setze in der ersten Regel X auf paket und Y auf depot. Dadurch entstehen die Bedingungen liegt(paket, depot) und offen(depot).
- 5Beide Bedingungen stehen als Fakten bereit. Deshalb folgt erreichbar(paket).
- 6Damit ist die Bedingung der zweiten Regel erfüllt. Es folgt abholbar(paket); die Anfrage erhält eine positive Antwort.
Fehler finden
Fehler in Zeile 5Die letzte Zeile überträgt die fehlende Ableitung auf die Wirklichkeit. Richtig: no bedeutet hier, dass nutzbar(fachblau) aus dieser Wissensbasis nicht hergeleitet werden kann. Die tatsächliche Nutzbarkeit bleibt damit ungeklärt.
Lückentext
Die Komponente, in der die Fakten und Regeln gespeichert sind, heißt . Zwischen zwei Bedingungen einer Regel bedeutet das Komma . Im ausgedachten Farbmodell lautet der einzige Fakt rot(ball). Es gibt keine Regeln. Die abgeschlossene Anfrage ?- rot(kegel). erhält daher die Antwort .