2 Modellierung und Programmierung
6. Vorlesung: KI-Programmierung. Lisp, PROLOG.
Regelbasiertes Programmieren
Methoden der KŸnstlichen Intelligenz
Ipke Wachsmuth ÊWS 2000/2001
6. Vorlesung Methoden der KŸnstlichen Intelligenz 2
Programmierstile
– Prozeduraler Programmierstil
Schrittweise ausgeführte Folgen von Anweisungen (Prozeduren) modifizieren Daten in einem Speicher – Funktionaler Programmierstil
Berechnung durch Auswertung von Funktionen (Abbildung von Definitionsbereich in Wertebereich)
– Logikorientierter Programmierstil
Deklarative Notierung von Problem und Lösungs"wissen" als logische Formeln, Berechnung durch Theorembeweisen – Objektorientierter Programmierstil
Berechnung durch Kommunikation: Austausch von Nachrichten zwischen aktiven unabhängigen Objekten – Regelbasierter Programmierstil
Berechnung durch Regelanwendung und deren Vorwärts- oder Rückwärtsverkettung
Die zugrundeliegenden Verarbeitungsmodelle (Programmiersprache + ausführende Maschine) sind sehr verschieden.
UniversitŠt Bielefeld
Programmierung in der KI
Typische Anwendungen für KI-Methoden:
– Verarbeitung natürlicher Sprache – Bildverarbeitung
– Konstruktion (teil-)autonomer Systeme (z.B. Roboter) – maschinelles Problemlösen
– Entscheidungsunterstützung/Expertensysteme
• Aufgaben i.a. sehr komplex und auf abstraktem Niveau
• Lösungsansätze basieren häufig auf kognitiven Modellen Klassen von Problemen führen zu
problemspezifischen Verarbeitungsmodellen
(auf höherer Ebene als programmiersprachlicheVerarbeitungsmodelle)
UniversitŠt Bielefeld
KI-Programmierung Ð Aufgaben
• Entwurf, formale Spezifikation und Implementierung problemspezifischer Verarbeitungsmodelle
• Programmierung in diesen Modellen Voraussetzung:
angemessene Programmiersprachen mit mächtigen Mitteln zum Aufbau und zur Verarbeitung komplexer symbolischer Daten Frage nicht: Welches ist die grundsätzlich bessere
KI-Programmiersprache?
sondern:
Welche Sprache ist zur Implementierung
eines Verarbeitungsmodells für eine bestimmte
Problemklasse besser geeignet?
6. Vorlesung Methoden der KŸnstlichen Intelligenz 5
Warum Lisp Bedeutung erlangte
• frühe Basissprache für viele KI-Systeme
• Flexibilität
• bestens geeignet (erfunden) für Symbolmanipulation und Zuordnung von Information zu Symbolen
• einfache Konstruktion neuer Datenstrukturen
• Befreiung von expliziter Speicherverwaltung (garbage collection)
• uniforme Behandlung von Daten und Programmen
Lisp ist
• eine mathematische formale Sprache mit präziser formaler Beschreibung, die einen funktionalen Programmierstil unterstützt
• die Grundlage etlicher
"höherer" Sprachen und KI- Entwicklungswerkzeuge
6. Vorlesung Methoden der KŸnstlichen Intelligenz 6
Entwicklung von Lisp
JOHN McCARTHY Asst. Professor of Mathematics in Dartmouth 1 9 5 8 McCarthy (MIT) formuliert die Eigenschaften von LISP
1 9 5 9 McCarthy schafft die theoretische Grundlage („Recursive Functions of Symbolic Expressions and their Computation by Machine“) 1 9 6 0 / 6 2 LISP1 / LISP 1.5 (MIT), lange ein Quasistandard
1 9 6 6 BBN LISP (Bolt, Beranek & Newman), MAC LISP (Project MAC am MIT), 1973 BBN LISP in InterLISP-10 umbenannt
1 9 7 5 LISP Machine LISP, Scheme (MIT), FranzLISP (MAC LISP auf Unix, Berkeley), UCI-LISP 1 9 7 7 LISP-Maschinen-Entwicklung beginnt am MIT
1 9 7 8 NIL für kommerzielle timesharing-Systeme
1 9 8 0 ZetaLISP ( Symbolics), LM LISP (LMI), InterLISP-D (Xerox), SPICE LISP (CMU) 1 9 8 1 LISP-Maschinen kommen auf den Markt, LeLISP
1 9 8 2 S1 LISP für Supercomputer mit MultiProcessing (CMU, MIT, Lawrence Livermore Lab) CommonLISP (viele Firmen und Institutionen)
...
1 9 9 0 + EuLISP, ISO LISP AutoLISP für AutoCAD-Systeme ...
UniversitŠt Bielefeld
Wie funktioniert Lisp?
Lisp ist (in erster Linie) eine interpretierte Sprache.
Ein Lisp-System stellt eine Programmierumgebung zur Verfügung.
Lisp-Ausdrücke werden gelesen, evaluiert, das Resultat gedruckt (read-eval-print loop).
lisp –> 5 5 –> -2.71 -2.71 –> (+ 3 4) 7
–> (* 2 3 -1) -6
–> (/ (+ 81 12) 3) 31
–> (* 2 (_ 15 8))
Error: eval: Undefined function _
<1>: (return '-) 14
–> (exit)
UniversitŠt Bielefeld
Programmieren in Lisp (Basics)
–> (defun square (num) (* num num)) square
–> (square 9) 81
–> (defun in-order (first second third)) (cond ((> first second)(> second third)))) in-order
–> (in-order 3 2 1) t
–> (in-order 1 2 3) nil
Alle Programme sind Funktionen, d.h.
• erwarten 0 oder mehr Argumente
• geben genau einen Wert aus
• sind entweder vordefiniert oder nach Wunsch geschrieben
Konsequenz:
Programmieren =
Funktionen schreiben
Einführung weiterer Sprachkonstrukte (setq, car, cdr etc): -> angegebene Literatur6. Vorlesung Methoden der KŸnstlichen Intelligenz 9
Idee logischer Programmierung
– Probleme werden als logische Aussagen formuliert (Theoreme, die man "anfragt").
– Das zur Lösung eines Problems benötigte Wissen wird ebenfalls in Form logischer Aussagen formuliert (Axiome, die man "assertiert").
– Die Lösung eines Problems besteht im Finden eines logischen Beweises für das angefragte Theorem.
Idee: Das Finden des Beweises wird einem automatischen Theorembeweiser übertragen, der den Beweis (sofern existent) konstruieren kann.
Damit reduziert sich das Problemlösen auf ein Formulierungsproblem.
(Idealvorstellung; nicht in vollem Umfang erreicht!)
6. Vorlesung Methoden der KŸnstlichen Intelligenz 10
Theorembeweiser
u Grundlage logikorientierter Programmierung
u basieren in vielen Fällen auf dem Resolutionsverfahren:
l
allgemeineres Schlußverfahren als Modus ponens
l
arbeitet auf Formeln in Klauseldarstellung
u Resolutionsbeweiser sind zwar allgemein langsam, für Hornklauseln in der Aussagenlogik jedoch sehr effizient u sind auf Klauseln der Prädikatenlogik (PL) erweiterbar und
haben dort für Hornklauseln immer noch Effizienzvorteile PROLOG
UniversitŠt Bielefeld
Von PL-Klauseln zu ãRegelnÒ
x1... xs (L1
...
Lm)
x1... xs (A1
...
Ak
¬ C1
...
¬ Cn)
x1... xs (A1
...
Ak
C1
...
Cn)
( A1
...
Ak
C1
...
Cn)
Kurzschreibweise als „Regel“:
L j: Literale
(Atome oder negierte Atome)
Disjunktion von Atomen Konjunktion von Atomen
UniversitŠt Bielefeld
PROLOG: Hornklauseln!
x1...
xs ( A
¬ C 1
...
¬ Cn)
x1...
xs ( A
C1
...
Cn)
( A
C1
...
Cn)
Beschränkung auf Klauseln mit höchstens einem nicht-negierten Atom:
Prozedurale Semantik: Um A zu zeigen, müssen die Cj gezeigt werden.
6. Vorlesung Methoden der KŸnstlichen Intelligenz 13 Eine Definition von "Großvater":
Für alle x, für alle y, für alle z gilt:
x ist Großvater von y, wenn x Vater von z ist und z Vater von y.
oder ganz formal:
x y z (grossvater x y)
(vater x z)(vater z y)
Die entsprechende Definition
"über die Mutter":
x y z (grossvater x y) (vater x z)(mutter z y)
In PROLOG gelten alle Variablen als implizit all- quantifiziert (die prozedurale Semantik erlaubt Ersetzungen durch beliebige in der Wissensbasis vorh. Terme); Quantoren werden weggelassen:
(grossvater x y)
(vater x z),(vater z y) (grossvater x y)
(vater x z),(mutter z y)
Seien jetzt diese beiden Implikationen (Regeln) assertiert, zusammen mit folgenden Fakten:
(vater fritz hans) (vater fritz klara) (mutter klara peter)
Zeige: Ist Fritz der Großvater von jemand?
>(grossvater fritz u)?
Axiome formulieren in PROLOG
* "klassische" Clocksin/Mellish–Syntax:
grossvater(X Y)
vater(X Z),vater(Z Y) >(grossvater fritz peter)
6. Vorlesung Methoden der KŸnstlichen Intelligenz 14
Regelbasiertes Programmieren
einer der Hauptansätze für die Erstellung größerer Systeme zur Lösung von Spezialaufgaben
angebracht, wo Wissen über die Zusammenhänge zwischen Aufgabensituation und Aufgabenlösungen verfügbar ist
Grundidee: jede Regel entspricht einem Stück Wissen des Typs If <circumstances> then <do action, or conclude something>
"Was ist zu tun, wenn ..." "Was ist anzunehmen, wenn ..."
mustergesteuerte Inferenzsysteme
UniversitŠt Bielefeld
u Bestandteile „mustergesteuerter Inferenzsysteme“
1. Eine Kollektion relativ unabhängiger Module, die durch aktuelle Daten, die auf ihr „trigger pattern“ passen, aktivierbar sind 2. eine oder mehrere dynamische Datenstrukturen, die durch ein
aktives Modul inspiziert und verändert werden können
3. ein Interpreter, der die Auswahl und Aktivierung von Modulen auf zyklischer Basis steuert
u Module: z.B. logische Klauseln (wie in PROLOG) oder Produktionsregeln (OPS5; CLIPS)
Eine abstraktere Sicht ...
UniversitŠt Bielefeld
Produktionsregeln
C 1 C 2 ... C n A 1 A 2 ... A m
Wenn C 1 und C 2 ... und C n gelten, dann führe A 1 und A 2 ... und A m aus.
„führe aus“:
• nimm an, daß gilt (Implikation)
• ändere „Weltzustand“ (Aktion)
ãCondition-Action StatementsÒ
6. Vorlesung Methoden der KŸnstlichen Intelligenz 17
Perceive-Reason-Act-Schleife
„PERCEIVE“: Wahrnehmung von Problemmerkmalen
„REASON“: Interne Verarbeitung und Problemlösung
„ACT“: Umsetzen der Problem- lösung in der Welt
6. Vorlesung Methoden der KŸnstlichen Intelligenz 18
Recognize-Act-Cycle in OPS5
1. „MATCH“: Prüfen sämtlicher Produktionsregeln gegen Working Memory Elements --> Konfliktmenge
2. „CONFLICT RESOLUTION“: Wähle eine Produktions- regel mit erfüllter Bedingungsseite aus. Bei leerer Konfliktmenge: Kontrolle an den Benutzer
3. „ACT“: Alle Aktionen der ausgewählten Produktionsregel ausführen
4. Falls HALT-Aktion: Kontrolle an den Benutzer; sonst:
gehe zu 1.
(analog in CLIPS)
UniversitŠt Bielefeld
Aufbau eines Produktionssystems
Inferenzmaschine Erkennung
Konfliktmenge von möglichen Regeln
Aktion evaluiere die ausgewählte Regel Regelinterpreter Erkennung
Konfliktmenge von möglichen Regeln
Aktion evaluiere die ausgewählte Regel
Inferenzmaschine
ErkennungKonfliktmenge von möglichen Regeln
Aktion evaluiere die ausgewählte Regel
Regelinterpreter
ErkennungKonfliktmenge von möglichen Regeln
Aktion evaluiere die ausgewählte Regel
Produktions- regeln Regeln sind modular
leichte Modifizierung einzelner Regeln möglich
Aufbau der Regeln entspricht einzelnen Wissenselementen der Domäne („Regelwissen“)
Arbeits- speicher
UniversitŠt Bielefeld
Arbeits- speicher
X,Y,Z Arbeits-
speicher
X,Y
S S,Z
T S,Y
A Y,T
B X,T
C
Regelbasierte Problemlšsung
u Abstrakt gesprochen besteht eine Problemlösung darin, durch Anwendung der Regeln ein bestimmtes Symbol (oder mehrere) in einem Arbeitsspeicher zu erzeugen.
u Beispiel. Sei gegeben:
Arbeitsspeicher Regelwissensbasis
Ziel:
Arbeits-
speicher
enthält C
6. Vorlesung Methoden der KŸnstlichen Intelligenz 21
VorwŠrtsverkettender Interpreter
Komponenten:
u Datenbasis/Arbeitsspeicher u Produktionsregeln
(1) DATA Ausgangsdatenbasis
(2) Until DATA erfüllt Terminierungskriterium do (3) Begin
(4) Wähle eine anwendbare Regel R (deren Bedingungsteil durch DATA erfüllt ist)
(5) DATA Ergebnis der Anwendung des R-Aktionsteils auf DATA (6) End
6. Vorlesung Methoden der KŸnstlichen Intelligenz 22
Lšsung mit VorwŠrtsverkettung
Voraussetzung über die Konfliktresolution:
u Ignoriere Regeln, die bereits im Arbeitsspeicher stehende Symbole nochmals eintragen würden
u Berücksichtige Regeln gemäß ihrer Reihenfolge im Regelspeicher Arbeitsspeicher angewendete Regel
X,Y,Z X,Y
S
X,Y,Z,S S,Z
T
X,Y,Z,S,T S,Y
A X,Y,Z,S,T,A Y,T
B X,Y,Z,S,T,A,B X,T
C X,Y,Z,S,T,A,B,C
UniversitŠt Bielefeld
Lšsung mit RŸckwŠrtsverkettung
u nur solche Regeln werden ausgewählt, die das gesuchte Symbol in den Arbeitsspeicher (AS) schreiben
u sind sie (noch) nicht anwendbar
Teilziel: anwendbar machen Arbeitsspeicher Ziel: C
X,Y,Z Regel: X,T
C
X,Y,Z Teilziel 1: X (schon im AS)
X,Y,Z Teilziel 2: T
X,Y,Z Regel: S,Z
T
X,Y,Z Teilziel 1: S
X,Y,Z Regel: X,Y
S
X,Y,Z Teilziel 1: X (im AS)
X,Y,Z,S Teilziel 2: Y (im AS) X,Y,Z,S,T,C Teilziel 2: Z (im AS)
UniversitŠt Bielefeld
Programmierstile im Vergleich
Anweisungsbasierter Stil
l
Programm = Sequenz von Befehlen und Abfragen
l
Programmierer legt fest, was getan wird und in welcher Reihenfolge
l
Kontrollfluß übersichtlich, aber starr
Regelbasierter Stil
l
Programm = Menge von Regeln und Regelinterpreter
l
festgelegt nur, was in einer Situation zu tun ist; Regel- interpreter bestimmt Abfolge
l