Vorlesung: „Künstliche Intelligenz
- Expertensysteme
Marco BlockKünstliche Intelligenz
ESES
PP
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Künstliche Intelligenz“
Expertensysteme -
Marco Block-Berlitz 1
Inhaltliche Planung für die Vorlesung
1) Definition und Geschichte der KI, PROLOG
2) Expertensysteme
3) Probabilistisches und Logisches Schließen, Resolution
4) Spieltheorie, Suchen und Planen
5) Spieleprogrammierung
Künstliche Intelligenz Marco Block
6) General Game Playing
7) Reinforcement Learning und Spieleprogrammierung
8) Mustererkennung
9) Neuronale Netze
10) Optimierungen (genetische und evolutionäre Algorithmen)
11) Bayes-Netze, Markovmodelle
12) Robotik, Pathfinding
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
1) Definition und Geschichte der KI, PROLOG
3) Probabilistisches und Logisches Schließen, Resolution
Marco Block-Berlitz 2
7) Reinforcement Learning und Spieleprogrammierung
10) Optimierungen (genetische und evolutionäre Algorithmen)
der rote Vorlesungsfaden...
Wissensbasierte Systeme
Inferenzmechanismus: Trennung von Wissensbasis und Inferenz
Vorteil: Wissensbasis einfach austauschbar, ohne System neu zu programmieren
Komponenten eines Expertensystems
Künstliche Intelligenz Marco Block
konvertiert in deklarativeForm
Spezialist, Fachmann
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Inferenzmechanismus: Trennung von Wissensbasis und Inferenz
Vorteil: Wissensbasis einfach austauschbar, ohne System neu zu programmieren
Marco Block-Berlitz 3
Macht das Systemnutzbar
Berühmte Expertensysteme
In der Chemie eingesetzt, um unbekannte organische Moleküle
zu identifizieren
1965 an der Stanford
Diagnosesystem mit Einsatz in der Medizin
DENDRAL
MYCIN
Künstliche Intelligenz Marco Block
1972 an der Stanford
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
In der Chemie eingesetzt, um unbekannte organische Moleküle
1965 an der Stanford-Universität entwickelt (LISP)
Diagnosesystem mit Einsatz in der Medizin
Marco Block-Berlitz 4
1972 an der Stanford-Universität entwickelt (LISP)
Merkmale eines Expertensystems
• Ziel- oder datenorientierte Suche
• Unsicherheit
• Datenrepräsentation
• Benutzeroberfläche
• Entscheidungskette zur Lösung
Künstliche Intelligenz Marco Block
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Marco Block-Berlitz 5
Ziel- vs. datenorientierte Suche I
Zielorientiert entspricht einer rückwärtsgerichteten Suche (backward chaining)
Axiom 1A2_4
A1_2
Künstliche Intelligenz Marco Block
kleine Zielmenge und große Datenmenge
Mathematik, Axiome, geometrische Theorembeweiser
Axiom 2
Axiom 3
Axiom 4
Axiom 5
A2_4
A3_5
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Zielorientiert entspricht einer rückwärtsgerichteten Suche (backward chaining)
A_1_2_4
Sackgasse
Marco Block-Berlitz 6
Mathematik, Axiome, geometrische Theorembeweiser
Zielze
A2_3_5
IF
family is albatross and
color is white
THEN
bird is laysan albatross.
IF
Ziel- vs. datenorientierte Suche II
Beispiel:
IF
family is albatross and
color is dark
THEN
bird is black footed albatross.
IF
order is tubenose and
size large and
wings long narrow
THEN
family is albatross.
Künstliche Intelligenz Marco Block
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Marco Block-Berlitz 7
Ziel- vs. datenorientierte Suche III
Datenorientiert entspricht einer vorwärtsgerichteten Suche (forward chaining)
Symptom 1
Symptom 2S2_4
S1_2
Künstliche Intelligenz Marco Block
kleine Datenmenge und große Zielmenge, Ziele oft unbekannt
Symptome und Krankheiten
Symptom 3
Symptom 4
Symptom 5
S4_5
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Datenorientiert entspricht einer vorwärtsgerichteten Suche (forward chaining)
Krankheit 3
S_2_3
S_1_2_4
Krankheit 4
Krankheit 1
Krankheit 2
Marco Block-Berlitz 8
kleine Datenmenge und große Zielmenge, Ziele oft unbekannt
S_2_3
S1_4_5
Krankheit 7
Krankheit 8
Krankheit 5
Krankheit 6
Ziel- vs. datenorientierte Suche IV
Beispiel:
IF
unplaced tv and
couch on wall(X) and
wall(Y) opposite wall(X)
THEN
place tv on wall(Y).
Künstliche Intelligenz Marco Block
Ein datenorientiertes System muss mit konkreten Daten gefüttert werden. Im
Gegensatz dazu sucht sich das zielorientierte System die Daten aus, die es
benötigt.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Marco Block-Berlitz 9
Ein datenorientiertes System muss mit konkreten Daten gefüttert werden. Im
Gegensatz dazu sucht sich das zielorientierte System die Daten aus, die es
Datenrepräsentation
Attribute-Value Pairs
Object Attribute-Value Triples
Records
color-white
size-large
arm_chair-width-3
straight_chair-width-2
chairs object width color type
Künstliche Intelligenz Marco Block
Frames
chairs object width color type
chair#1 3 orange easy
chair#2 2 brown straight
mammel skin legs
fur default 4
size tusks type
large default 2 constraint:
indian or
african
elephant
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
object width color type
Marco Block-Berlitz 10
object width color type
chair#1 3 orange easy
chair#2 2 brown straight
skin legs
fur default 4
large default 2 constraint:
indian or
african
tail size legs
curly medium 2
monkey
Erinnert stark anObjektorientierung
Entscheidungskette (Explanations)
Das System teilt die Fakten und Regeln mit, die es dazu geführt hatten
eine spezielle Lösung zu ermitteln.
Manchmal sind diese aber nicht besonders nützlich, da ein Expertensystem über
empirisches Wissen verfügt und kein tiefes Problemverständnis mit sich bringt,
Künstliche Intelligenz Marco Block
sondern lediglich logisch schließt.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Das System teilt die Fakten und Regeln mit, die es dazu geführt hatten
Manchmal sind diese aber nicht besonders nützlich, da ein Expertensystem über
empirisches Wissen verfügt und kein tiefes Problemverständnis mit sich bringt,
Marco Block-Berlitz 11
Warum Expertensysteme mit PROLOG?
Gründe für PROLOG
- Regelbasiertes Programmieren
Wissen und Regeln können in deklarativer Form besser ausgedrückt werden als in prezeduraler Form
- Built-in-pattern matching
- Backtracking
Künstliche Intelligenz Marco Block
Es gibt auch Argumente für konventionelle Sprachen, wie beispielsweise C
- Portability
- Performance
- Developer experience
Aktuelle PROLOG-Systeme verringern die Vorteile von C.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Warum Expertensysteme mit PROLOG?
Wissen und Regeln können in deklarativer Form besser ausgedrückt werden als in prezeduraler Form
Marco Block-Berlitz 12
Es gibt auch Argumente für konventionelle Sprachen, wie beispielsweise C
Systeme verringern die Vorteile von C.
Inference Engine von PROLOG
- built-in backward chaining
- es gibt keine Unsicherheit
- adäquat für viele Expertensystem-Applikationen
Künstliche Intelligenz Marco Block
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Applikationen
Marco Block-Berlitz 13
Expertensystem: The Bird Identification System (BID)
Die Expertise dieses Systems ist eine kleine Untermenge der
von Robbins, Bruum, Zim und Singer.
Typische Form für Regeln, die von Experten gegeben sind:
IF
first premise, and
Künstliche Intelligenz Marco Block
in PROLOG:
first premise, and
second premise, and
...
THEN
conclusion
conclusion :- first_premise,
second_premise,
...
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: The Bird Identification System (BID)
dieses Systems ist eine kleine Untermenge der Vögel Nordamerikas
Typische Form für Regeln, die von Experten gegeben sind:
Marco Block-Berlitz 14
BID-Expertensystem: Einfache Regeln und Fakten
Fangen wir mit den fundamentalen Regeln an:
PROLOG:
IF
family is albatross and
color is white
THEN
bird is laysan_albatross
Künstliche Intelligenz Marco Block
bird(laysan_albatross) :-
family(albatross),
color(white).
bird(black_footed_albatross) :-
family(albatross),
color(dark).
bird(whistling_swan) :-
family(swan),
void(muffled_musical_whistle).
bird(trumpeter_swan) :-
family(swan),
voice(loud_trumpeting).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Einfache Regeln und Fakten
Fangen wir mit den fundamentalen Regeln an:
Marco Block-Berlitz 15
BID-Expertensystem: Daten ins Programm und Anfragen
Um eine erfolgreiche Anfrage zu starten, müssen wir zuvor
die Fakten des gesuchten Vogels speichern:
Bei der Systemanfrage können wir den Vogel jetzt identifizieren:
family(albatross).
color(dark).
Künstliche Intelligenz Marco Block
Zu diesem Zeitpunkt haben wir ein komplett lauffähiges Expertensystem, bei
dem der PROLOG-Interpreter die Benutzeroberfläche stellt und die Daten direkt
im Programm gespeichert sind.
?- bird(X).
X = black_footed_albatross
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Daten ins Programm und Anfragen
Um eine erfolgreiche Anfrage zu starten, müssen wir zuvor
die Fakten des gesuchten Vogels speichern:
Bei der Systemanfrage können wir den Vogel jetzt identifizieren:
Marco Block-Berlitz 16
Zu diesem Zeitpunkt haben wir ein komplett lauffähiges Expertensystem, bei
Interpreter die Benutzeroberfläche stellt und die Daten direkt
BID-Expertensystem: Hierarchische Verhältnisse
Jetzt wollen wir natürliche Hierarchien im Vogel
ausdrücken.
order(tubenose) :-
nostrils(external_tubular),
live(at_sea),
bill(hooked).
order(waterfowl) :-
feet(webbed),
Künstliche Intelligenz Marco Block
Die Fakten lassen sich jetzt durch primitivere Daten ausdrücken.
feet(webbed),
bill(flat).
family(albatross) :-
order(tubenose),
size(large),
wings(long_narrow).
family(swan) :-
order(waterfowl),
neck(long),
color(white),
flight(ponderous).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Hierarchische Verhältnisse
Jetzt wollen wir natürliche Hierarchien im Vogel-Klassifikationssystem
Ordnung
Familie
Art
Marco Block-Berlitz 17
Die Fakten lassen sich jetzt durch primitivere Daten ausdrücken.
War vorher ein einfacher Fakt, jetzt ist eseine Regel.
BID-Expertensystem: Anfrage an das System
Jetzt müssen wir immernoch für eine erfolgreiche Anfrage die relevanten
Daten im Programm vorgeben:
nostrils(external_tubular).
live(at_sea).
bill(hooked).
size(large).
wings(long_narrow).
color(dark).
Künstliche Intelligenz Marco Block
Wir erhalten für die gleiche Anfrage das gleiche Ergebnis.
Das gleiche könnten wir in jeder anderen Programmiersprache realisieren.
Expertensysteme zeigen ihre Stärke aber, wenn die Hierarchie nicht klar und
die Organisation der Informationen mehr kaotisch ist.
color(dark).
?- bird(X).
X = black_footed_albatross
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Anfrage an das System
Jetzt müssen wir immernoch für eine erfolgreiche Anfrage die relevanten
Marco Block-Berlitz 18
Wir erhalten für die gleiche Anfrage das gleiche Ergebnis.
Das gleiche könnten wir in jeder anderen Programmiersprache realisieren.
Expertensysteme zeigen ihre Stärke aber, wenn die Hierarchie nicht klar und
die Organisation der Informationen mehr kaotisch ist.
BID-Expertensystem: Gänse kommen dazu
Die Schneegans (Canada goose) verbringt den Sommer in Kanada und
den Winter in den Vereinigten Staaten. Es ist also wichtig, welche Saison
vorliegt und wo sie gesehen wurde.
bird(canada_goose) :-
family(goose),
season(winter),
country(united_states),
Künstliche Intelligenz Marco Block
country(united_states),
head(black),
cheek(white).
bird(canada_goose) :-
family(goose),
season(summer),
country(canada),
head(black),
cheek(white).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Gänse kommen dazu
Die Schneegans (Canada goose) verbringt den Sommer in Kanada und
den Winter in den Vereinigten Staaten. Es ist also wichtig, welche Saison
country(united_states) :-
region(mid_west),
...
Marco Block-Berlitz 19
country(canada) :-
province(ontario),
...
region(south_east) :-
state(X),
member(X, [florida,
mississippi,
...]).
...
Die Prädikate können sich weiter in komplexere Hierarchien verzweigen.
BID-Expertensystem: Geschlechterspezifische Daten
Unterscheidung zweier Geschlechter
bird(mallard) :-
family(duck),
voice(quack),
head(green).
bird(mallard) :-
family(duck),
voice(quack),
color(mottled_brown).
Künstliche Intelligenz Marco Block
color(mottled_brown).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Geschlechterspezifische Daten
Marco Block-Berlitz 20
BID-Expertensystem: Übersicht einer Regeluntermenge
Künstliche Intelligenz Marco Block
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Übersicht einer Regeluntermenge
Marco Block-Berlitz 21
BID-Expertensystem: Benutzerschnittstelle
Bisher wurden die Daten in das Programm eingegeben und die
Anfragen waren sehr einfach.
Das System soll Anfragen an den Benutzer stellen, wenn diese für die
Entscheidung wichtig sind. Das Prädikat ask
Künstliche Intelligenz Marco Block
Attribute-Value-Pair die Antwort wahr oder
Wenn das System jetzt color(white) entscheiden muss, erfragt es
und falls das positiv (also yes) ist, führt auch
eats(X) :- ask(eats, X).
feet(X) :- ask(feet, X).
wings(X) :- ask(wings, X).
neck(X) :- ask(neck, X).
color(X) :- ask(color, X).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Benutzerschnittstelle
Bisher wurden die Daten in das Programm eingegeben und die
Das System soll Anfragen an den Benutzer stellen, wenn diese für die
ask wird vom Benutzer für ein gegebenes
Marco Block-Berlitz 22
oder falsch einlesen.
entscheiden muss, erfragt es ask(color, white)
) ist, führt auch color(white) zum Erfolg.
BID-Expertensystem: Prädikat ask I
Dabei ist das Prädikat read erfüllt, wenn der Benutzer „yes“ eingibt und
fail sonst.
ask(Attr, Val) :-
write(Attr:Val),
write(`?`),
read(yes).
Künstliche Intelligenz Marco Block
Bei der Anfrage ergibt sich daraus folgender Dialog:
?- bird(X).
nostrils : external_tubular? yes.
live : at_sea? yes.
bill : hooked? yes.
size : large? yes.
wings : long_narrow? yes.
color : white? yes.
X = laysan_albatross
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
erfüllt, wenn der Benutzer „yes“ eingibt und
Marco Block-Berlitz 23
Bei der Anfrage ergibt sich daraus folgender Dialog:
yes.
BID-Expertensystem: Prädikat ask II
Bei diesem Ansatz ergibt sich aber ein Problem:
Falls der Benutzer bei der letzten Frage mit „no“ antwortet, würde die
Regel bird(laysan_albatross) ein fail liefern und die nächste Regel
bird(black_footed_albatross) testen.
bird(laysan_albatross) :-
family(albatross),
Künstliche Intelligenz Marco Block
Dabei wird aber die erste Regel family(albatross)
Wir wollen also die Antworten speichern.
family(albatross),
color(white).
bird(black_footed_albatross) :-
family(albatross),
color(dark).
...
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Bei diesem Ansatz ergibt sich aber ein Problem:
Falls der Benutzer bei der letzten Frage mit „no“ antwortet, würde die
liefern und die nächste Regel
Marco Block-Berlitz 24
family(albatross) wieder erfragt...
Die gleichen Fragen werden gestellt...
BID-Expertensystem: Prädikat ask III
Wir erzeugen ein neues Prädikat known/3
es sich um ein Prädikat mit 3 Argumenten handelt.
ask(A, V) :-
known(yes, A, V),
!.
ask(A, V) :-
known(_, A, V),
!,
Künstliche Intelligenz Marco Block
Wir gehen bei dieser Lösung aber davon aus, dass ein Attribute
wahr oder falsch ist.
!,
fail.
ask(A, V) :-
write(A:V),
write(`? : `),
read(Y),
asserta(known(Y, A, V)),
Y==yes.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
known/3. Die Zahl 3 verrät uns dabei, dass
es sich um ein Prädikat mit 3 Argumenten handelt.
Marco Block-Berlitz 25
Wir gehen bei dieser Lösung aber davon aus, dass ein Attribute-Value-Pair entweder
BID-Expertensystem: Prädikat ask IV
Wir erweitern unser System
Jetzt können wir eine weitere Klausel im ask
multivalued(voice).
multivalued(feed).
ask(A, V) :-
not(multivalued(A),
Künstliche Intelligenz Marco Block
not(multivalued(A),
known(yes, A, V2),
V \== V2,
!,
fail.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
ask-Prädikat unterbringen:
ask(A, V) :-
known(yes, A, V),
Marco Block-Berlitz 26
known(yes, A, V),
!.
ask(A, V) :-
known(_, A, V),
!,
fail.
ask(A, V) :-
write(A:V),
write(`? : `),
read(Y),
asserta(known(Y, A, V)),
Y==yes.
BID-Expertensystem: Menüs
Das Menü kann erweitert werden, indem es dem Benutzer eine Liste
der möglichen Attribut-Werte liefert.
Prädikat menuask:
size(X) :- menuask(size, X, [large, plump, medium, small]).
flight(X) :- menuask(fligth, X, [ponderous, agile, flap_glide]).
Künstliche Intelligenz Marco Block
menuask(Attribute,Value,_) :-
known(yes,Attribute,Value), !.
menuask(Attribute,_,_) :-
known(yes,Attribute,_), !, fail.
menuask(A, V, MenuList) :-
write('What is the value for'), write(A), write('?'), nl,
write(MenuList), nl,
read(X),
check_val(X, A, V, MenuList),
asserta( known(yes, A, X) ),
X == V.
check_val(X, A, V, MenuList) :-
member(X, MenuList), !.
check_val(X, A, V, MenuList) :-
write(X), write(' is not a legal value, try again.'), nl,
menuask(A, V, MenuList).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Das Menü kann erweitert werden, indem es dem Benutzer eine Liste
menuask(size, X, [large, plump, medium, small]).
menuask(fligth, X, [ponderous, agile, flap_glide]).
Marco Block-Berlitz 27
write('What is the value for'), write(A), write('?'), nl,
write(X), write(' is not a legal value, try again.'), nl,
BID-Expertensystem: Einfache Shell
Ein Highlevel-Prädikat wird eingeführt, um mit minimalem Aufwand die
Wissensbasis austauschen zu können:
Mit dem folgenden Prädikat läßt sich das System „aufräumen“:
top_goal(X) :- bird(X).
Künstliche Intelligenz Marco Block
abolish entfernt alle bekannten Einträge von
eines Prädikats muss die Signatur bekannt sein, daher
solve :-
abolish(known, 3),
define(known, 3),
top_goal(X),
write(`The answer is `), write(X), nl.
solve :-
write(`No answer found.`), nl.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Prädikat wird eingeführt, um mit minimalem Aufwand die
Mit dem folgenden Prädikat läßt sich das System „aufräumen“:
Marco Block-Berlitz 28
entfernt alle bekannten Einträge von known/3. Bei der ersten Referenzierung
eines Prädikats muss die Signatur bekannt sein, daher define(known, 3).
write(`The answer is `), write(X), nl.
BID-Expertensystem: Wissensbasis und Identifikationssystem I
Der Code wird jetzt in zwei Dateien gelagert:...
solve :-
abolish(known,3),
prove(top_goal(X),[]),
write('The answer is '),write(X),nl.
solve :- write('No answer found.'),nl.
ask(Attribute,Value,_) :-
known(yes,Attribute,Value), !.
ask(Attribute,Value,_) :-
known(_,Attribute,Value), !, fail.
Künstliche Intelligenz Marco Block
known(_,Attribute,Value), !, fail.
ask(Attribute,_,_) :-
not multivalued(Attribute),
known(yes,Attribute,_), !, fail.
ask(A,V,Hist) :-
write(A : V), write('? (yes or no) '),
get_user(Y,Hist),
asserta(known(Y,A,V)),
Y = yes.
...
Prädikate der Shell
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Wissensbasis und Identifikationssystem I
Der Code wird jetzt in zwei Dateien gelagert:...
top_goal(X) :- bird(X).
order(tubenose) :-
nostrils(external_tubular),
live(at_sea),
bill(hooked).
order(waterfowl) :-
feet(webbed),
bill(flat).
order(falconiforms) :-
Marco Block-Berlitz 29
order(falconiforms) :-
eats(meat),
feet(curved_talons),
bill(sharp_hooked).
order(passerformes) :-
feet(one_long_backward_toe).
family(albatross) :-
order(tubenose),
size(large),
wings(long_narrow).
family(swan) :-
order(waterfowl),
neck(long),
...
Wissensbasis
BID-Expertensystem: Wissensbasis und Identifikationssystem II
Die Kombination beider sieht jetzt wie folgt aus:
?- consult(native).
yes
?- consult(`birds.kb`).
yes
?- solve.
nostrils : external_tubular?
Künstliche Intelligenz Marco Block
Das ganze läßt sich noch erweitern... Nachzulesen in [5]
nostrils : external_tubular?
...
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Expertensystem: Wissensbasis und Identifikationssystem II
Die Kombination beider sieht jetzt wie folgt aus:
Marco Block-Berlitz 30
Das ganze läßt sich noch erweitern... Nachzulesen in [5]
Backward Chaining mit Unsicherheit
Das Bird Identification System war ein gutes Beispiel für die Erstellung
eines Expertensystems. Dabei hatten wir aber die Annahme, dass alle Informationen
entweder wahr oder falsch sein können.
Beispielsweise könnte das Gefieder grau sein und daher nicht eindeutig in schwarz
Künstliche Intelligenz Marco Block
oder weiss klassifiziert werden.
Wir wollen Unsicherheit, also Attribute mit Wahrscheinlichkeiten, modellieren.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Das Bird Identification System war ein gutes Beispiel für die Erstellung
eines Expertensystems. Dabei hatten wir aber die Annahme, dass alle Informationen
Beispielsweise könnte das Gefieder grau sein und daher nicht eindeutig in schwarz
Marco Block-Berlitz 31
Wir wollen Unsicherheit, also Attribute mit Wahrscheinlichkeiten, modellieren.
Backward Chaining mit Unsicherheit
Die am häufigsten verwendete Methode mit Unsicherheit zu arbeiten:
Der Bestimmtheits- oder Sicherheitsfaktor (certainty factor) wird an jede
Information angehaftet und bei Kombinationen oder Schlüssen durch die
Inferenzengine automatisch aktualisiert.
Künstliche Intelligenz Marco Block
Certainty factor (cf) ist dabei im folgenden Integerwert zwischen
und 100 (definitiv true).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Die am häufigsten verwendete Methode mit Unsicherheit zu arbeiten:
oder Sicherheitsfaktor (certainty factor) wird an jede
Information angehaftet und bei Kombinationen oder Schlüssen durch die
Marco Block-Berlitz 32
Certainty factor (cf) ist dabei im folgenden Integerwert zwischen -100 (definitiv false)
Backward Chaining mit Unsicherheit (Clam)goal problem.
rule 1
if not turn_over and
battery_bad
then problem is battery.
rule 2
if lights_weak
then battery_bad cf 50.
rule 3
if radio_weak
Künstliche Intelligenz Marco Block
if radio_weak
then battery_bad cf 50.
rule 4
if turn_over and
smell_gas
then problem is flooded cf 80.
rule 5
if turn_over and
gas_gauge is empty
then problem is out_of_gas cf 90.
rule 6
if turn_over and
gas_gauge is low
then problem is out_of_gas cf 30.
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Backward Chaining mit Unsicherheit (Clam)ask turn_over
menu (yes no)
prompt 'Does the engine turn over?'.
ask lights_weak
menu (yes no)
prompt 'Are the lights weak?'.
ask radio_weak
menu (yes no)
prompt 'Is the radio weak?'.
ask smell_gas
Marco Block-Berlitz 33
ask smell_gas
menu (yes no)
prompt 'Do you smell gas?'.
ask gas_gauge
menu (empty low full)
prompt 'What does the gas gauge say?'.
:consult
Does the engine turn over? : yes
Do you smell gas? : yes
What does the gas gauge say?
empty, low, full : empty
problem-out_of_gas-cf-90
problem-flooded-cf-80
done with problem
Im Gegensatz zu PROLOG werden alle Lösungen mitgeteilt (cf)
Beispiel zuvor:
Backward Chaining mit Unsicherheit (Clam)
:consult
Does the engine turn over? : yes
Do you smell gas? : yes
What does the gas gauge say?
empty, low, full : empty
problem-out_of_gas-cf-90
problem-flooded-cf-80
done with problem
So können wir cf-Parameter mit eingeben:
Künstliche Intelligenz Marco Block
:consult
Does the engine turn over? : yes
Do you smell gas? : yes cf 50
What does the gas gauge say?
empty, low, full : empty
problem-out_of_gas-cf-90
problem-flooded-cf-40
done with problem
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Backward Chaining mit Unsicherheit (Clam)
Parameter mit eingeben:
Marco Block-Berlitz 34
Änderungen und Einfluss
Wir haben die zwei Möglichkeiten CFs in das System zu bekommen: Regeln, Input
Die CFs einer Folgerung basiert auf den CFs der Prämissen.
Beispiel: Wenn die Folgerung eine CF von 80 hat, und die Prämisse ist mit CF = 100
bekannt, dann wird die Folgerung mit CF = 80 gespeichert.
Certainty Factors in MYCIN
Künstliche Intelligenz Marco Block
turn_over cf 100
smell_gas cf 100
rule 4
if turn_over and
smell_gas
then problem is flooded cf 80
problem flooded cf 80
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Wir haben die zwei Möglichkeiten CFs in das System zu bekommen: Regeln, Input
Die CFs einer Folgerung basiert auf den CFs der Prämissen.
Wenn die Folgerung eine CF von 80 hat, und die Prämisse ist mit CF = 100
bekannt, dann wird die Folgerung mit CF = 80 gespeichert.
Marco Block-Berlitz 35
Kombination von CF der Prämisse und CF der Folgerung
das ergibt für unser Beispiel
Certainty Factors in MYCIN
CF = RuleCF * PremiseCF / 100
turn_over cf 80
smell_gas cf 50
Künstliche Intelligenz Marco Block
smell_gas cf 50
rule 4
if turn_over and
smell_gas
then problem is flooded cf 40
problem flooded cf 40
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Kombination von CF der Prämisse und CF der Folgerung
CF = RuleCF * PremiseCF / 100
Marco Block-Berlitz 36
Wir wollen verhindern, dass sich alle Regeln angesprochen fühlen und feuern.
Schwellenwert für PremiseCF wird benötigt (20 dient dabei als untere Schranke):
Regel 4 würde jetzt also nicht feuern, da eine der Prämissen zu niedrig ist.
Certainty Factors in MYCIN
turn_over cf 80
smell_gas cf 15
Kombination verschiedener CFs
Beispiel:
Künstliche Intelligenz Marco Block
CF(X, Y) = X+Y(100-X)/100. % wenn X und Y > 0
CF(X, Y) = X+Y/1 – min (|X|,|Y|). % wenn entweder X oder Y < 0
CF(X, Y) = -CF(-X, -Y). % wenn X und Y < 0
turn_over cf 80
smell_gas cf 15
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Wir wollen verhindern, dass sich alle Regeln angesprochen fühlen und feuern.
Schwellenwert für PremiseCF wird benötigt (20 dient dabei als untere Schranke):
Regel 4 würde jetzt also nicht feuern, da eine der Prämissen zu niedrig ist.
Marco Block-Berlitz 37
X)/100. % wenn X und Y > 0
min (|X|,|Y|). % wenn entweder X oder Y < 0
Y). % wenn X und Y < 0
Beispiel:
Certainty Factors in MYCIN
rule 2
if lights_weak
then battery_bad cf 50.
rule 3
if radio_weak
then battery_bad cf 50.
angenommen, es gelten die folgenden Parameter
dann folgt aus Regel 2 und aus Regel 3
Das zeigt, dass Clam eine neue Inference
haben wollen wir alle kombinieren und nicht nur immer eine Regel verwenden.
Künstliche Intelligenz Marco Block
lights_weak cf 100
radio_weak cf 100
battery_bad cf 50
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
angenommen, es gelten die folgenden Parameter
dann folgt aus Regel 2 und aus Regel 3
Das zeigt, dass Clam eine neue Inference-Engine benötigt. Immer wenn wir CF<100
haben wollen wir alle kombinieren und nicht nur immer eine Regel verwenden.
Marco Block-Berlitz 38
battery_bad cf 75
Wir führen folgende Notation ein:
Eigene Inferenz-Engine - Notation
rule(Name, LHS, RHS). % mit LHS => RHS oder RHS :
% LHS Prämissen
% RHS Schlussfolgerung
rhs(Goal, CF)
lhs(GoalList)
Attribute-Value-Pairs:
Beispiel mit Regel 5:
Künstliche Intelligenz Marco Block
av(Attribute, Value)
rule(Name,
lhs([av(A1, V1), av(A2, V2), ...]),
rhs(av(Attr, Val), CF)).
rule(5, lhs([av(turns_over, yes, av(gas_gauge, empty)]),
rhs(av(problem, flooded), 80)).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
rule(Name, LHS, RHS). % mit LHS => RHS oder RHS :- LHS
% LHS Prämissen
% RHS Schlussfolgerung
Marco Block-Berlitz 39
lhs([av(A1, V1), av(A2, V2), ...]),
rule(5, lhs([av(turns_over, yes, av(gas_gauge, empty)]),
Eigene Inferenz-Engine - Übersicht
Künstliche Intelligenz Marco Block
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Marco Block-Berlitz 40
Bekannte Fakten werden einfach gespeichert:
Frage an das System:
Eigene Inferenz-Engine - fact
fact(av(A, V), CF).
?- findgoal(av(problem, X), CF).
Drei Fälle können bei der Bearbeitung auftreten:
- Attribute-Value-Pair ist bekannt
- Es gibt Regeln aus denen sich das Attribute
- Wir müssen den Benutzer fragen
Künstliche Intelligenz Marco Block
?- findgoal(av(problem, X), CF).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Bekannte Fakten werden einfach gespeichert:
findgoal(av(problem, X), CF).
Drei Fälle können bei der Bearbeitung auftreten:
Attribute-Value-Pair ableiten läßt
Marco Block-Berlitz 41
findgoal(av(problem, X), CF).
Definition von findgoal
Eigene Inferenz-Engine - fact
findgoal( av(Attr, Val), CF) :-
fact( av(Attr, Val), CF), !.
findgoal(av(Attr, Val), CF) :-
not fact(av(Attr, _), _),
askable(Attr, Prompt),
query_user(Attr, Prompt),
!,
Künstliche Intelligenz Marco Block
!,
findgoal(av(Attr, Val), CF).
findgoal(Goal, CurCF) :-
fg(Goal, CurCF).
fg(Goal, CurCF) :-
rule(N, lhs(IfList), rhs(Goal, CF)),
prove(IfList, Tally),
adjust(CF, Tally, NewCF),
update(Goal, NewCF, CurCF),
CurCF == 100, !.
fg(Goal, CF) :- fact(Goal, CF).
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
Marco Block-Berlitz 42
rule(N, lhs(IfList), rhs(Goal, CF)),
Literatur und Abbildungsquellen
[1] Ertel, W.: „Grundkurs Künstliche Intelligenz“, Vieweg Verlag 2007
[2] Braitenberg V.: „Vehicles – Experiments in Synthetic Psychology
[3] Bratko, I.: „PROLOG Programming for Artificial Intelligence
[4] Copeland J.: „Artificial Intelligence: A Philosophical Introduction
[5] Merrit D.: „Building Expert Systems in Prolog“, Openbook, Amzi!, 2000
Künstliche Intelligenz Marco Block
Vorlesung Künstliche Intelligenz
Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz
“, Vieweg Verlag 2007
Experiments in Synthetic Psychology“, MIT Press, 1984
PROLOG Programming for Artificial Intelligence“, 3.Auflage, Pearson Verlag 2001
Artificial Intelligence: A Philosophical Introduction“, Oxford UK and Cambridge, 1993
“, Openbook, Amzi!, 2000
Marco Block-Berlitz 43
Top Related