7 Memory Organization und Deduktion
17. Vorlesung: Speicherorganisation: Indexing;
Assoziative Netzwerke
$
Was sind Ziele und Vorhaben der KI?
$ Wie lassen sich Probleme durch (geschickte) Suche lösen?
$
Wie lassen sich Datenstrukturen zur Darstellung von Wissen maschinenverarbeitbar anlegen?
$ Wie lassen sich maschinell Schlußfolgerungen aus Annahmen ziehen?
$
Für welche Ziele soll Computer-Intelligenz eingesetzt werden?
! " %
Kapitel 6:
Ausgehend von allgemeinen prädikatenlogischen Schlußverfahren betrachteten wir die konkrete Manipulation entsprechend vorbereiteter Formeln (in database) für maschinelle Schlußverfahren.
(Zuletzt: goal-tree search für die Suche nach subgoals beim backward chaining)
Kapitel 7:
Noch eine Stufe konkreter werden Datenstrukturen und verschiedene Organisations- und Zugriffsprinzipien betrachtet, durch die eine solche Formelmanipulation effektiv abgewickelt werden kann.
Frage bisher:
' Wie drückt man Fakten und Annahmen über eine Domäne aus, so daß sich formale Schlußweisen darauf anwenden lassen?
Frage jetzt:
' Wie organisiert man geschickt den Zugang zu Einträgen in DATABASE und deren maschinelle Benutzung?
Memory Management
' erfordert sorgfältig geplante Kombination von Datenstrukturen mit geeigneten Inferenzalgorithmen
„Accessibility is just as important as content“
! " (
$
als Beispiel einer „Gedächtnis- struktur“, wie sie für „Story Understanding“ postuliert wird
$
Script: Stereotype Abfolge von Ereignissen als Modell für be- stimmte Weltzusammenhänge
$
Beispiel: Besuch im Schönheits- salon („Beauty Parlor“)
Skizze einer prädikaten- logischen Repräsentation des "Beauty-Parlor"-Scripts
zum Verstehen einer Geschichte wie der folgenden:
Frieda brauchte einen Haarschnitt.
Als sie zum Schönheitssalon kam, war sie unglücklich, daß Suzy, ihre Lieblings-Stylistin, nicht da war.
Noch bestürzter war Frieda, als sie dann ihren Irokesenschnitt sah.
Ohne ein Trinkgeld zu geben, schritt sie davon.
! "
*
Prinzip:
' Sätze der Geschichte werden mit Script-Elementen „gematcht“ und dabei Variablen gemäß der tatsächlichen events gebunden
' Wo das Script verzweigt: bestpassende Alternative wählen
*
Grundidee „Script-Matching“:
' ein Story-Pointer und ein Script-Pointer werden koordiniert geführt
' dabei werden weitere Ereignisbeschreibungen im Script zugänglich, die zum sukzessiven Aufbau einer Repräsentation beitragen.
*
Vorteil:
spezielle Organisation von Assertions steigert die Effizienz beim Aufbau der Repräsentation erheblich.*
Nachteil:
Starr!! Funktioniert wirklich nur für stereotype Geschichten.
$
DATABASE hält (skolemisierte) Fakten vor, die von einem
Theorembeweiser manipuliert werden:
(a) Hinzufügen und Wegnehmen (assert und retract)
(b) Finden aller Fakten, die mit einer (als Fetch-Pattern)
gegebenen Formel unifizieren
$
Diese Manipulationen müssen (vom Rechenaufwand) billig sein!
Beispiel zu (b): Backward Chaining Gegeben goal G
dann muß GATEKEEPER alle Formeln der Form
(i) G’
oder (ii) S –> G’
(hier jetzt geschrieben: (<– G’ S) ) auffinden, für die gilt: G’ unifiziert
mit G
(i) das Fetchpattern ist G
(ii) das Fetch-Pattern ist (<–G ?v) (?v darf in G nicht vorkommen)
! " ,
Jeder Konstante ist eine Liste der Assertionen, die diese Konstante enthalten, zugeordnet, organisiert nach der Position der Konstante:
( (pos N -formulas- ) (pos N -formulas- ) ...) pos: Position, repräsentiert als
Tupel natürlicher Zahlen
< > : ganze Formel
<1 2> : erstes Element des zweiten Elements ...
N: Zahl der Formeln mit dieser Konstante an dieser Position
*var* : für enthaltene Variablen
! "
> siehe Seite 398 in Charniak/McDermott <
„bucket (Eimer)“: eine Formelliste
index-fetch
! " %
Es werden nicht nur Formeln ausgeworfen, die das Fetch-Pattern garantiert matchen (d.h. Formeln werden geholt, für die Unifikation
fehlschlägt).
Trotz selektiver Verarbeitung kann der Rechenaufwand für Unifikation immer noch sehr teuer sein.
Der Algorithmus erfordert teure Operationen der Durchschnittbildung, für die es zwar Verbesserungen gibt (mark-and-test), aber keinen grundsätzlichen "Durchbruch" (bei großen buckets).
Es gibt verbesserte Indexing-Methoden, die z.B. die Prädikat-Position spezifisch behandeln (in der Prädikatenlogik erster Stufe kommen keine Prädikatvariablen vor).
Bei Interesse oder Bedarf:
Siehe Seite 397 - 400 !
Alternativer Ansatz:
Assoziative Netzwerke
(Aufgabe wieder: Angabe von Datenstrukturen in DATABASE, die Fakten repräsentieren und auf die sich geschickt zugreifen läßt.) Assoziatives Netzwerk:
Allgemeiner Begriff für Repräsentationssysteme auf der Basis von Graphen, deren Kanten ("links") mit Prädikaten korrespondieren.
(Es gibt viele Typen!)
Implementiert als Pointer-Strukturen, die eine Struktur von Relationen im modellierten Gebiet ausdrücken.
Inferenzen basieren auf Graph-Suchalgorithmen
Beispiel (nur als Motivation für die Repräsentation der Struktur):
Stadtplan als Graph mit Knoten = Kreuzungen, Kanten = Straßen
. / 0 1 2 345 6 7 8 9 : 5 ;< 2 = 5 8 = 5 3 > ? 8 6 ;4@ A < 5 8 B 8 ;5 44@ 9 5 8 C . D
vorher:
indexierte Assertionen in DATABASE Theorembeweiser im GATEKEEPER
jetzt:
Assoziatives Netz in der DATABASE Graph-Suchalgorithmen (in der Regel mehrere spezielle) im GATEKEEPER DATA-
BASE
PROGRAM GATE- KEEPER
Antworten
Neue Fakten Anfragen E F GH I JK GLM L N GI OI PI OQ
. / 0 1 2 345 6 7 8 9 : 5 ;< 2 = 5 8 = 5 3 > ? 8 6 ;4@ A < 5 8 B 8 ;5 44@ 9 5 8 C . /
Beispiel: Auszudrücken sei
(contains a b), (contains a c), (contains d a) etc.
• Es soll möglich sein, alles, was in a enthalten ist, von a aus leicht zu finden
--> forward pointer ( für die Relation contains)
• Es soll möglich sein, alles, worin a enthalten ist, von a aus leicht zu finden
--> backward pointer (für die Relation contained-by)
Pointer-Paar (interne Darstellung eines links):
Zweielementige Liste, deren Elemente über entsprechend gelabelte pointer auf die Liste zeigen.
(a,b): links steht erstes, rechts zweites Argument einer contains-Relation
E F GH I JK GLM L N GI OI PI OQ
> siehe Fig. 7.7 in Charniak/McDermott
. / 0 1 2 345 6 7 8 9 : 5 ;< 2 = 5 8 = 5 3 > ? 8 6 ;4@ A < 5 8 B 8 ;5 44@ 9 5 8 C . T
new-york:
((<2> 1 (contains new-york empire-state-bldg)) (<3> 1 (contains us new-york))
...)
ausgedrückt durch contains-Pointer (forward pointer) ausgedrückt durch contained-by-Pointer (back pointer)
Frage: Welche Dinge enthält a?
- mit backward chaining
(Show: (contains a ?what))
dann unifizierende Pattern suchen und ggfs. rückwärts verkettete Regeln ausnutzen, um subgoals zu bekommen.
- im Netzwerk schneller (nämlich unmittelbar zugreifbar):
• Betrachte die contains-links von a (siehe Fig. 7.7)
• werfe jeweils die zweiten Elemente des Pointer-Paars aus
Hauptvorteil:
Vermeidung von backward chaining und Unifikation für Inferenzen
E F GH I JK GLM L N GI OI PI OQ
für symmetrische, transitive Relationen
(= a b) (= b c) (= a d)
Pointerliste: (a b c d)
(•) (•) (•) (•)
a b c d
Dann (= c a) genauso leicht zu bestätigen wie (= a c) usw.
. / 0 1 2 345 6 7 8 9 : 5 ;< 2 = 5 8 = 5 3 > ? 8 6 ;4@ A < 5 8 B 8 ;5 44@ 9 5 8 C U .
• Beschränkung auf binäre Relationen (für Assertions nicht der Fall)
• jedoch kann jede Assertion mit mehrstelligen Prädikaten in eine Menge von "binären" Assertionen überführt werden:
Dies ist Slot-Assertion-Notation!
(siehe 3. Vorlesung)
(p a1 a2 . . . an )
(inst r p -Relation) (arg-1 r a1 )
(arg-2 r a2 ) . . .
(arg-n r an )
neue Konstante!
E F GH I JK GLM L N GI OI PI OQ
D.h. es wird ein expliziter Relationen-Knoten (hier: parents relationship) eingeführt und markierte Kanten für die Binär-Relationen (Pointer-Paare), die eine Instanz der Relation mit ihren Argumenten verbinden.
inst-links werden eine besondere Rolle spielen ("property inheritance")
Die drei betrachteten link-Typen
• gerichtete Kanten (für binäre Relationen)
• Äquivalenzklassen (für symmetrische, transitive Relationen)
• explizite Knoten (für Relationen mit > 2 Argum.) erfordern jeweils spezielle Graph-Suchalgorithmen ("link traverser"), die aber die Effizienz erheblich steigern.
W X Y Z [ \]^ _ ` a b c ^ de [ f ^ a f ^ \ g h a _ d]i j e ^ a k a d^ ]]i b ^ a l U m
(für indexierte Assertionen erläutert, für assoz. Netzwerke analog übernehmbar)
Wenn zwei Konstanten als gleich assertiert werden, kann diese Assertion als "="-link dargestellt werden.
Der Retrieval-Algorithmus kann sie dann wie gleiche Objekte behandeln.
Beispiel:
In einer Detektiv-Geschichte stellt sich heraus, daß der Butler Ackroyd der in anderen Fakten erwähnte Mörder ist:
(= ackroyd murderer-97)
Wenn jetzt Fakten über Ackroyd in der DATABASE erfragt werden sollen, kann die assertierte Gleichheit unter folgenden Umständen genutzt werden:
1. index-fetch wird so geändert, daß nicht nur (bucket pos pat) für ein Atom pat gefunden wird, sondern auch (bucket pos e) für jedes Atom e, daß als gleich mit pat assertiert worden ist.
2 . unify wird so geändert, daß nicht nur Atome auf (syntaktische) Gleichheit geprüft werden, sondern auch daraufhin, ob sie als gleich assertiert worden sind.
(im einzelnen siehe Seite 404f)
n o pq r st puv u w pr xr yr xz
}