KM (Knowledge Machine)

Transcrição

KM (Knowledge Machine)
KM (Knowledge Machine) – Eine Kurzeinführung
• KM ist ein Frame-basiertes Wissensrepräsentationssystem
• Implementiert in CommonLisp
• System, Manual und Test-KB’s unter
http://www.cs.utexas.edu/users/mfkb/km.html
• Hohe Ausdruckmächtigkeit mit (hauptsächlich) PL1-Semantik.
• Besonderheit: Schlussfolgern mit Situationen (“snapshot” der Wissensbasis zu
einem best. Zeitpunkt)
• Typische Repräsentationseinheit ist ein Frame/Klasse, der einen Slot mit einem
best. Wert als Füller enthält.
Einf. in die KI
Kurzeinführung KM 1-1
Technisches & Bedienung
Lisp starten (z. B. /soft/acl62/alisp) und
CL-USER(1): :ld km-1-4-5-59.lisp
; Loading /home/.../km-1-4-5-59.lisp
CL-USER(2): (compile-file "km-1-4-5-59.lisp")
;;; Compiling file km-1-4-5-59.lisp
CL-USER(3): :ld km-1-4-5-59
; Fast loading /home/.../km-1-4-5-59.fasl
Resetting KM...
=======================================================
KM - THE KNOWLEDGE MACHINE - INFERENCE ENGINE v1.4.5.59
=======================================================
Copyright (C) 2002 Peter Clark and Bruce Porter. KM comes with ABSOLUTELY
NO WARRANTY. This is free software, and you are welcome to redistribute it
under certain conditions. Type (licence) for details.
Type (km) for the KM interpreter prompt!
CL-USER(4): (km)
KM>
Einf. in die KI
Kurzeinführung KM 1-2
Frames/Klassen – Klasseneigenschaften
Beschreibung der Klasseneigenschaften:
(<class> has (<slot1> (<expr11> <expr12> ...))
(<slot2> (<expr21> <expr22> ...))
...)
Diese Eigenschaften beschreiben die Klasse selber und werden nicht an deren
Instanzen vererbt.
Typische (vordefinierte) Slots zur Beschreibung von Klasseneigenschaften:
(superclasses (<superclass1> ... <superclassN>))
(subclasses (<subclass1> ... <subclassN>))
(instances (<instance1> ... <instanceN>)))
Cars are vehicles and Things:
superclasses(Car, Vehicle) ∧ superclasses(Car, Thing)
(Car has (superclasses (Thing Vehicle)))
Einf. in die KI
Kurzeinführung KM 1-3
Frames/Klassen – Eigenschaften von Instanzen
Beschreibung der Eigenschaften aller Klasseninstanzen:
(every <class> has
(<slot1> (<expr11> <expr12> ...))
...)
Every car has four wheels, an engine, and a chassis:
∀c isa(c, Car) ⇒ wheels(c, 4)
∀c isa(c, Car) ⇒ ∃e, ch isa(e, Engine) ∧ isa(ch, Chassis)∧
parts(c, e) ∧ parts(c, ch)
(every Car has (wheels ((4)))
(parts ((a Engine) (a Chassis))))
Der Ausdruck (a Engine) sagt aus, dass eine Instanz der Klasse Engine für
jedes Auto existieren muss.
Einf. in die KI
Kurzeinführung KM 1-4
Instanzen
Anlegen von Instanzen:
KM> (*MyCar has (instance-of (Car)))
(*MyCar)
Anonyme Instanzen:
KM> (a Car)
(_Car1)
Abfragen der Slotwerte:
(the <slot> of <expr>)
(<expr> <slot>)
Was sind die Teile meines Autos? ANS = {x| parts(*MyCar, x)}
KM> (the parts of *MyCar)
(_Engine2 _Chassis3)
Einf. in die KI
KM> (*MyCar wheels)
(4)
Kurzeinführung KM 1-5
Abfragen: Klasseneigenschaften
In gleicher Form können Klasseneigenschaften angezeigt werden:
KM> (the superclasses of Car)
(Thing Vehicle)
Allgemeine Anzeige von Informationen zu Klassen und Instanzen:
KM> (showme-all Car)
(Car has
(instances (*MyCar _Car1))
(superclasses (Thing Vehicle)))
KM> (showme-all _Car1)
(_Car1 has
(instance-of (Car))
(parts ((a Engine) (a Chassis)))
(wheels ((4))))
(every Car has
(parts ((a Engine) (a Chassis)))
(wheels ((4))))
Anzeigen der Klassenhierarchie mit: (taxonomy)
Einf. in die KI
Kurzeinführung KM 1-6
Slots im Detail
Slots sind binäre Beziehungen zwischen Instanzen (werden intern selber als
Instanzen der Klasse Slot repräsentiert).
Slots werden implizit definiert. D. h. sie müssen nicht explizit deklariert werden,
solange die Default-Einstellungen genügen.
(parts has
(instance-of (Slot))
(domain (Physobj))
(range (Physobj))
(cardinality (1-to-N))
(inverse (part-of))
(subslots (mechanical-part)))
(wheel-count has
(instance-of (Slot))
(domain (Vehicle))
(range (Integer))
(cardinality (N-to-1)))
Die Default-Kardinalität is N-to-N. Mindestens einen Füller fordern N-to-1 und
1-to-1 und zusammen mit (a <class>) wird die Füllermenge dann genau auf
einen Füller eingeschränkt.
Einf. in die KI
Kurzeinführung KM 1-7
Kardinalitäten
Weitere Kardinalitäten sind:
(at-least n <class>)
(at-most n <class>)
(exactly n <class>)
∀p isa(a, P erson) ⇒
|{n| owns(a, c) ∧ isa(c, Car)}| ≥ 1
(every Person has
(owns ((at-least 1 Car))))
Der Wertebereich eines Slots kann ganz allgemein auf eine bestimmte Klasse
eingeschränkt werden:
(must-be-a <class>)
(mustnt-be-a <class>)
Einf. in die KI
∀p isa(p, P erson) ⇒
(∀p0f riends(p, p0) ⇒ isa(p0, P erson))
(every Person has
(friends ((must-be-a Person))))
Kurzeinführung KM 1-8
Hinreichende Klassendefinitionen
Definitionen von Klassen die sowohl notwendige als auch hinreichende Definitionen
besitzten:
(every Mexican has-definition
(instance-of (Person))
(lives-in (*Mexico)))
∀x isa(x, M exican) ⇔ isa(x, P erson) ∧ lives − in(x, ∗M exico)
Im Gegensatz zu lediglich notwendigen Klassendefinitionen:
(Mexican has (superclasses (Person)))
(every Mexican has (lives-in (*Mexico)))
∀x isa(x, M exican) ⇒ isa(x, P erson) ∧ lives − in(x, ∗M exico)
Einf. in die KI
Kurzeinführung KM 1-9
Selbstreferenzen
In Spezifikationen von Slotfüllern in Klassendefinitionen (every) kann mit Self
auf die Instanz der Klasse referenziert werden.
(every Student has
(favorite-color ((a Color)))
(owns ((a Car with (parts ((a Door)))
(color ((the favorite-color of Self)))))))
KM> (a Student with (favorite-color (*Yellow)))
(_Student1)
KM> (the owns of _Student1)
(_Car2)
KM> (the color of (the owns of _Student1))
(COMMENT: (*Yellow && _Color3) unified to be *Yellow)
(*Yellow)
Einf. in die KI
Kurzeinführung KM 1-10
Mengen
Es existieren in KM Operatoren zur Auswahl von Mitgliedern einer Menge. Hier
referenziert das Schlüsselwort It auf die in der Umgebung gebundenen Variable.
Ein Beispiel:
(every Car has (color ((a Color))))
(*Cab has (instance-of (Car)) (color (*Yellow)))
KM> (forall (the all-instances of Car)
where
((the color of It) = *Yellow)
It)
(*Cab)
Einf. in die KI
Kurzeinführung KM 1-11
Subsumtion
Fragestellung: Welche Klasse ist genereller als (subsumiert) ein andere Klasse?
Formal: A subsumiert B gdw. ∀x isa(x, B) ⇒ isa(x, A)
In KM:
(Vehicle has (superclasses (Thing)))
(Car has (superclasses (Vehicle)))
KM> (Thing covers Car)
(t)
Einf. in die KI
Kurzeinführung KM 1-12