Vorlesung: „ Künstliche Intelligenz · Inhaltliche Planung für die Vorlesung 1) Definition und...

43
Vorlesung: „Küns - Expertens Marco Blo Künstliche Intelligenz ES ES P Vorlesung Künstliche Intelligenz Fachbereich Mathematik/Informatik – AG Künstliche Intelligenz stliche Intelligenzsysteme - ock-Berlitz 1

Transcript of Vorlesung: „ Künstliche Intelligenz · Inhaltliche Planung für die Vorlesung 1) Definition und...

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