• Keine Ergebnisse gefunden

2 Modellierung und Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "2 Modellierung und Programmierung"

Copied!
12
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

2 Modellierung und Programmierung

6. Vorlesung: KI-Programmierung. Lisp.

Von Logik zu PROLOG.

– 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 Die zugrundeliegenden

Verarbeitungsmodelle (Programmiersprache + ausführende Maschine) sind sehr verschieden.

(2)

! #

Typische Anwendungen für KI-Methoden:

– Verarbeitung natürlicher Sprache – Bildverarbeitung

– Konstruktion (teil-)autonomer Systeme (Roboter);

– maschinelles Problemlösen – Entscheidungsunterstützung

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 programmiersprachliche

Verarbeitungsmodelle)

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?

(3)

! %

früher 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

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)

...

Anfang 90er: EuLISP, ISO LISP AutoLISP für AutoCAD-Systeme ...

(4)

! &

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)

-> (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 Literatur

(5)

! (

)

Grundlage logikbasierter Systeme: automatische Theorembeweiser

)

basieren in vielen Fällen auf der Resolutionsregel:

*

allgemeineres Schlußverfahren als Modus ponens

+

arbeitet auf Formeln in Klauseldarstellung

,

Resolutionsbeweiser sind zwar allgemein langsam, für Hornklauseln in der Aussagenlogik jedoch sehr effizient

,

sind auf Klauseln der Prädikatenlogik erweiterbar und haben dort für Hornklauseln immer noch Effizienzvorteile

PROLOG

D E FG H IJ FKL K M FH NH OH NP

– Probleme können als logische Aussagen formuliert werden (Theoreme, die man "anfragt").

– Das zur Lösung eines Problems benötigte Wissen kann ebenfalls in Form logischer Aussagen ausgedrückt werden (Axiome, die man "assertiert").

– Die Lösung eines Problems besteht dann 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 ein Formulierungsproblem.

(Aber: noch nicht in vollem Umfang erreicht!)

(6)

- . / 0 123 4 5 6 7 8 3 9: 0 ; 3 6 ; 3 1 < = 6 4 92> ? : 3 6 @ 6 93 22> 7 3 6 A B B

Modus ponens

A → B

Q

A v B A A B B

Modus tollens

A → B

Q

A v B

Q

B

Q

B

Q

A

Q

A

Resolution

A v B

Q

B v C A v C

Resolution ist eine allgemeinere Schlußregel; sie beinhaltet zugleich Modus ponens und Modus tollens.

D E FG H IJ FKL K M FH NH OH NP

Direkter Beweis

+

bei den Axiomen beginnen

+

Schlußregeln anwenden, bis zu beweisender Satz dasteht.

Beweis durch Widerlegung (indirekt)

+

Nimm an, die Verneinung (das Negat) des Theorems sei wahr.

+

Zeige, daß die Axiome und das Negat zusammen etwas als wahr bezeichnen, das nicht stimmt.

+

Folgere, daß das Negat nicht wahr sein kann, da ein Widerspruch folgt.

+

Schließe, daß das Theorem wahr sein muß, da das Negat nicht wahr

sein kann.

(7)

- . / 0 123 4 5 6 7 8 3 9: 0 ; 3 6 ; 3 1 < = 6 4 92> ? : 3 6 @ 6 93 22> 7 3 6 A B S

Ich trage die

Sonnenbrille ODER Es regnet Es regnet

nicht

ODER Ich nehme den Schirm mit Ich trage die

Sonnenbrille ODER Ich nehme den Schirm mit

gegeben:

gegeben:

Schluß:

A B

Q

B C

A C

D E FG H IJ FKL K M FH NH OH NP

Ich trage die

Sonnenbrille ODER Es regnet Es regnet

nicht

ODER Ich nehme den Schirm mit Ich trage die

Sonnenbrille ODER Ich nehme den Schirm mit

gegeben:

gegeben:

gilt:

A B

Q

B C

A C

A v B

Q

B v C

Q

A &

Q

C

Q

B

B

?

Das Negat der Anfrage

also gilt: A v C

Beweis durch

Widerlegung

des Gegenteils

(8)

- . / 0 123 4 5 6 7 8 3 9: 0 ; 3 6 ; 3 1 < = 6 4 92> ? : 3 6 @ 6 93 22> 7 3 6 A B U

,

Unifikation ermöglicht die Anwendung des Resolutions- verfahrens auf Klauseln, die scheinbar nichts miteinander zu tun haben (d.h. verschiedene Variablen haben)

=> Erweiterung des Resolutionsverfahrens auf die Prädikatenlogik

,

Unifikation:

Prozeß des Findens von Variablensubstitutionen in zwei Ausdrücken, die die Ausdrücke gleich machen

D E FG H IJ FKL K M FH NH OH NP

Freund (x,Hans) Freund (Fritz,y)

unifiziert mit der Variablensubstitution {x/Fritz, y/Hans}

Freund (x,x)

Freund (Fritz,Hans)

unifiziert nicht (x kann nicht zwei Dinge zugleich sein) Freund (Fritz,Hans)

?

(9)

- . / 0 123 4 5 6 7 8 3 9: 0 ; 3 6 ; 3 1 < = 6 4 92> ? : 3 6 @ 6 93 22> 7 3 6 A B V

D E FG H IJ FKL K M FH NH OH NP

Für alle x, y, z, ... gelte die Aussage C1 und C2 und ... und Cn

(Voraussetzung).

Dann gilt auch die Aussage A1 oder A2 oder ... oder Ak (zu Zeigendes).

Abstrakte Form eines Theorems:

Beweis:

Man zeigt, daß für jede Einsetzung der in den Cj vorkommenden

Variablen mit Konstanten

auch die zu zeigende

Aussage wahr ist.

(10)

- . / 0 123 4 5 6 7 8 3 9: 0 ; 3 6 ; 3 1 < = 6 4 92> ? : 3 6 @ 6 93 22> 7 3 6 A B X

– Jede geschlossene Formel der Prädikatenlogik läßt sich in eine äquivalente KNF in Pränexform bringen (alle Quantoren stehen vorn).

Der Pränex-Teil enthält aber u.U. noch Existenzquantoren.

– Beseitigt man in einer KNF die Existenzquantoren (durch sog. Skolemisierung), so erhält man die Skolem-Normalform; diese ist zwar nicht äquivalent zur

Ausgangsformel, aber immerhin erfüllbarkeitsäquivalent, und das reicht.

– Die Skolem-Normalform wird in der Literatur häufig auch als "Klauselform"

bezeichnet.

Eine Klausel hat die Gestalt:

∀x1...∀xs (L1 ∨ ... ∨ Lm) Lj:

Literale

– Die Skolem-Normalform (Klauselform) besteht aus einer Konjunktion von Klauseln (die wiederum Disjunktionen von Literalen sind).

– Auf Klauseln läßt sich das Resolutionsverfahren anwenden.

D E FG H IJ FKL K M FH NH OH NP

x1...xs (L1 ... Lm)

x1...xs (A1 ... Ak ¬ C1 ... ¬ Cn)

x1...xs (A1 ... Ak <− C1 & ... & Cn)

( A1 , ... , Ak <− C1 , ... , Cn) Kurzschreibweise:

Atome oder negierte Atome

(11)

- . / 0 123 4 5 6 7 8 3 9: 0 ; 3 6 ; 3 1 < = 6 4 92> ? : 3 6 @ 6 93 22> 7 3 6 A R B

x1...xs (A

¬

C1 ...

¬

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.

D E FG H IJ FKL K M FH NH OH NP

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:

∀xyz (grossvater x y) (vater x z)(vater z y) Die entsprechende Definition

"über die Mutter":

xyz (grossvater x y)

(vater x z)(mutter z y)

In PROLOG gelten alle Variablen als implizit

allquantifiziert (d.h. die operationale Semantik erlaubt Ersetzungen durch beliebige, in der Wissensbasis vorhandene Terme); Quantoren werden weggelassen:

(grossvater ?x ?y) 1 (vater ?x ?z)(vater ?z ?y)

(grossvater ?x ?y) 2

(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)

Ist Fritz ein Großvater?

("?" kennzeichnet implizit allquantifizierte Variablen)

(grossvater fritz ?u)

(12)

- . / 0 123 4 5 6 7 8 3 9: 0 ; 3 6 ; 3 1 < = 6 4 92> ? : 3 6 @ 6 93 22> 7 3 6 A R S

show: (grossvater fritz ?u) show: (vater fritz ?z) success: (vater fritz hans) show: (vater hans ?y) redo: (vater hans ?y) fail: (vater hans ?y) redo: (vater fritz ?z) success: (vater fritz klara) show: (vater klara ?y) redo: (vater klara ?y) fail: (vater klara ?y)

(grossvater fritz ?u)

(grossvater ?x ?y) (grossvater ?x ?y)

(vater ?x ?z) (vater ?z ?y) (vater ?x ?z) (mutter ?z ?y)

(vater fritz

hans)

(vater fritz klara)

(vater fritz

hans)

(vater fritz klara)

(vater fritz

hans)

(vater fritz klara)

(mutter klara peter)

1 2

redo: (grossvater fritz ?u) show: (vater fritz ?z) success: (vater fritz hans) show: (mutter hans ?y) fail: (mutter hans ?y) redo: (vater fritz ?z) success: (vater fritz klara) show: (mutter klara ?y) success: (mutter klara peter) success: (grossvater fritz peter)

Mit diesem Beispiel werden wir uns in Kap. 6 noch ausführlicher beschäftigen!

D E FG H IJ FKL K M FH NH OH NP

,

Charniak & McDermott, Kapitel 2, Seite 33-48

,

Görz, Kapitel 9.1 (Grundlagen der KI-Programmierung)

zur eigenständigen Erarbeitung nach Bedarf

Referenzen

ÄHNLICHE DOKUMENTE

• Für ein elegantes Programmieren sind gelegentlich Variablen, deren Wert geändert werden kann, ganz nützlich :-). • Darum erweitern wir unsere kleine Programmiersprache

• Für ein elegantes Programmieren sind gelegentlich Variablen, deren Wert geändert werden kann, ganz nützlich :-).. • Darum erweitern wir unsere kleine Programmiersprache

Schreibe die Anzahl der Möglichkeiten, die du herausfindest hinter jedes Verb.. Welches hat die

Wie kann man Brüche mit unterschiedlichem Nenner zusammenrechnen. Ja, man muss den gemeinsamen

Das Gesundheitsamt lädt hierzu Ihre Mitglieder und Ihre medizinische Einrichtungen der Region ein, um durch die gemeinsamen Erfahrungen und die praktischen

Das Gesundheitsamt des Main-Kinzig- Kreises möchte Ihnen eine Fortbildungs- maßnahme näher bringen, die sich an die niedergelassene Ärzteschaft, die Alten- und

Unter diesem Motto möchte ihnen das Ge- sundheitsamt des Main-Kinzig-Kreises eine Fortbildungsmaßnahme näher bringen, die sich insbesondere an die Alten- und Pfle- geheime sowie

Das Gesundheitsamt lädt die medizinischen Einrichtungen der Region ein dem Netzwerk beizutreten, sich zur Einhaltung dieser Stan- dards zu verpflichten und ihre Erfahrungen