Induktive Funktionale Logische Programmierung

Werbung
Induktive Funktional-Logische Programmierung
Künstliche Intelligenz und Software-Engineering
WS 2000 / 2001
Betreuerin:
Petra Hofstedt
Verfasser:
Susanne Ressel
Dirk Mügge
Inhaltsverzeichnis
1 Einleitung ............................................................................... 3
Was ist „Logische Programmierung“? .................................................................................... 3
Was ist „Funktionale Programmierung“? ................................................................................ 3
Was ist Funktional-Logische Programmierung? ..................................................................... 3
2 Grundlagen - Logik ............................................................... 4
2.1 Logik ................................................................................................................. 4
Terme, Grundterm .................................................................................................................... 4
Variante ..................................................................................................................................... 4
Termposition , O(t) .................................................................................................................... 4
Klausel ....................................................................................................................................... 5
Literal ........................................................................................................................................ 5
Substitution ................................................................................................................................ 5
Unifikation ................................................................................................................................. 5
2.2 Logische Programmierung ............................................................................. 5
Resolution ................................................................................................................................. 5
2.3 Induktive Logische Programmierung ........................................................... 5
Beschreibung ............................................................................................................................. 5
3 Induktive Funktional-Logische Programmierung .............. 6
3.1 FLP .................................................................................................................... 6
Sinn und Zweck von Narrowing ................................................................................................ 6
Narrowing: Ein Beispiel ............................................................................................................ 6
Narrowing: Formale Definition ................................................................................................ 7
3.2 IFLP................................................................................................................... 8
Einleitung: „Inverse Narrowing“ ............................................................................................. 8
Grundlagen für „Inverse Narrowing“
Definition: Beschränkte Generalisierung (RG = Restricted Generalization) ................... 8
Definition: Konsistent Beschränkte Generalisierung (CRG = Consistent RG) .................... 8
Beispiel zur CRG: ..................................................................................................................... 8
Beschreibung „Inverses Narrowing“ ....................................................................................... 9
Beispiel zu „Inverses Narrowing“ ........................................................................................... 9
Beschreibung des IFLP-Algorithmus (Def. nach [1]) ............................................................ 10
Prozedur „GenerateCRG“ ..................................................................................................... 11
Prozedur „InverseNarrowing“ ............................................................................................... 11
IFLP-Algorithmus ................................................................................................................... 12
4 Anwendung ........................................................................... 13
Das FLIP System .................................................................................................................... 13
Index......................................................................................... 14
Literaturverzeichnis ............................................................... 15
Induktive Funktional-Logische Programmierung
Seite 2
1 Einleitung
Diese Arbeit erläutert das Prinzip der induktiven funktional-logischen
Programmierung, in deren Mittelpunkt das „Inverse Narrowing“ steht. Zu diesem
Zweck führen wir Techniken auf, die für das „Inverse Narrowing“ nötig sind.
Was ist „Logische Programmierung“?
Logische Programme bestehen aus einer Menge von Klauseln und Fakten. An diese
Programme können Anfragen gestellt werden, die mit true oder false beantwortet
werden. Bei der logischen Programmierung wird mittels der Substitution eine
Belegung der Variablen festgelegt, welche man sich auch Anzeigen lassen kann.
Was ist „Funktionale Programmierung“?
Bei der funktionalen Programmierung werden, durch Angaben von Funktionen,
Programme auf einem abstrakten mathematischen Niveau modelliert. Die Eingabe
und Ausgabe stehen in einer eindeutigen Relation zueinander.
Was ist Funktional-Logische Programmierung?
Funktional-logische Programmierung versucht die Konzepte logischer und
funktionaler Programmierung (Sprachen) zu kombinieren. Beide Sprachkonzepte
enthalten Elemente, die zur Problemlösung geeignet scheinen.
Logische Programmierung bringt partielle Datenstrukturen und funktionale
Programmierung unendliche Datenstrukturen mit sich.
Die funktionale Auswertung ist effizienter und besser zu kontrollieren, während
logische Auswertung Variablen und Inversion unterstützt.
Im Vergleich zu rein logischen Sprachen haben funktional-logische Sprachen ein
effizienteres operationales Verhalten, da Funktionen eine deterministische Auswertung
besser unterstützen als Prädikate.
Induktive Funktional-Logische Programmierung
Seite 3
2 Grundlagen - Logik
Da wir die allgemein gängigen Definitionen verwenden, verzichten wir an dieser
Stelle auf eine formale Darstellung (siehe Literaturverzeichnis).
2.1 Logik
Terme, Grundterm
Als Term werden eine oder mehrere algebraische Größen (wie Zahlen oder
Buchstabensymbole) bezeichnet, die durch Funktionssymbole (+,-,*,/, ...), sowie
durch verschiedene Arten von Klammern zur Festlegung der Operationsfolge,
verknüpft sind. Ein Grundterm ist ein Term, der keine Variablen enthält.
Variante
Eine Variante einer Regel erhält man durch Umbenennung aller Variablen.
Termposition , O(t)
Eine Position p in einem Term t wird repräsentiert durch eine Sequenz von natürlichen
Zahlen, die durch Punkte getrennt sind. t|p bezeichnet den Subterm von t an der
Position p und t[s]p bezeichnet das Resultat der Ersetzung des Subterms t|p durch s.
Darstellung der Termpositionen von 0 + s(x + s(y)) = s(x) + s(y)
Mit O(t) bezeichnet man die Menge aller Termpositionen von Term t.
Induktive Funktional-Logische Programmierung
Seite 4
Klausel
Eine Klausel ist eine Menge von Literalen.
Literal
Sei P eine Menge von Aussagensymbolen.
Eine Formel ψ ∈ Form(P) heißt Literal, wenn entweder ψ
p P.
P oder ψ = ~p mit
Substitution
Eine Substitution ist eine endliche Menge von Einsetzungen von Termen ti für Variable
vi in einer Formel.
Unifikation
Eine Substitution heißt Unifikator, wenn sie eine Menge von Ausdrücken egalisiert.
Wenn ein Unifikator existiert, dann existiert auch ein allgemeinster Unifikator.
Ein allgemeinster Unifikator ist ein Unifikator, der durch Substitution in jeden anderen
Unifikator überführt werden kann.
2.2 Logische Programmierung
Resolution
Die Resolutionsmethode ist ein effektives Verfahren zur Konstruktion von Beweisen.
Bei der Resolutionsmethode wird die Negation der Behauptung zu den Axiomen
(Behauptung und Axiome liegen in definiten Klauseln vor) hinzugefügt und eine
Widerlegung, d. h. Herbeiführung eines Widerspruches, versucht.
2.3 Induktive Logische Programmierung
Beschreibung
ILP ist ein Zusammenschluß aus induktivem Lernen und logischer Programmierung.
Das Hauptziel ist die Entwicklung von Hilfsmitteln, Theorien und Techniken zum
Erzeugen von Hypothesen aus Beispielen und Hintergrundwissen. Dies wird unter
anderem durch die inverse Resolution erreicht, welche auf die Resolution zurückgeht.
Induktive Funktional-Logische Programmierung
Seite 5
3 Induktive Funktional-Logische Programmierung
Wir betrachten kurz die funktional-logische Programmierung und führen das
Narrowing, als Vorbereitung auf IFLP, ein.
3.1 FLP
Sinn und Zweck von Narrowing
Bei der Ausführung eines Programms kann es zur Auswertung eines funktionalen
Ausdrucks kommen, der uninstanziierte Variablen enthält. Dies ist ein grundlegendes
Problem bei der Integration von funktionaler und logischer Programmierung.
Narrowing löst das Problem durch fundierte Annahmen über die Werte dieser
Variablen, um eine nahtlose Integration von logischen und funktionalen Berechnungen
zu gewährleisten.
Narrowing: Ein Beispiel
Wir definieren uns ein Programm, welches die gewöhnliche Addition und „größer“
Relation auf den Natürlichen Zahlen definiert.
1. Regel: 0 + x = x
2. Regel: succ(x) + y = succ(x + y)
3. Regel: 0 > z = False
4. Regel: succ( z ) > 0 = True
5. Regel: succ(x) > succ(y) = x > y
Die Auswertung der Gleichung succ(0) + succ(0) > succ(0) zu True kann durch
folgende Schritte realisiert werden:
1. Schritt: succ(0) + succ(0) > succ(0) // Anwendung von Regel 2
2. Schritt: succ(0 + succ(0)) > succ(0) // Anwendung von Regel 1
3. Schritt: succ(succ(0)) > succ(0)
// Anwendung von Regel 5
4. Schritt: succ(0) > 0
// Anwendung von Regel 4
5. Schritt: True
Dieses Vorgehen nennt sich ‘Rewriting’und ist ein Modell für funktionale Auswertung.
Enthält die Auswertung einer Aussage Variablen, z. B. succ(0) > 0 + u, dann müssen
Variablen instanziiert werden (Anwendung von Unifikation), um ‘Rewriting’ zu
zulassen. Dies nennt man dann Narrowing.
Auswertung des Beispiels succ(0) > 0 + u:
1. Schritt: succ(0) > 0 + u
// Anwendung von Regel 1
2. Schritt: succ(0) > u
// Anwendung von Regel 4, {u/0}
3. Schritt: True
Das Ergebnis ist das Paar (True, {u/0}).
Induktive Funktional-Logische Programmierung
Seite 6
Die Substitution von 0 für u ist die berechnete Antwort, d.h.:
succ(0) > 0 + 0 gilt.
Eine andere Auswertung ist möglich mit Regel 5 anstatt Regel 4:
2. Schritt: succ(0) > u
// Anwendung von Regel 5, {u/succ(v)}
3. Schritt: 0 > v
// Anwendung von Regel 3
4. Schritt: False
Das Ergebnis ist das Paar (False, {u/succ(v)}).
Das bedeutet:
succ(0) > 0 + succ(v) gilt für kein v.
Im Allgemeinen kann man beliebig viele Lösungen berechnen.
Narrowing: Formale Definition
In einem ‘Narrowing’-Schritt wird ein nicht variabler Subterm von t mit der linken
Seite einer Regel unifiziert. Der so instanziierte Subterm wird dann durch die
instanziierte rechte Seite der Regel ersetzt.
Formal kann ein Term t durch ‘Narrowing’ in einen Term t’ überführt werden, wenn:
1.
p ist eine nicht variable Position in t
2.
l = r ist eine neue Variante einer Regel
3.
Die Substitution σ ist ein allgemeinster Unifikator von t|p und l.
4.
t’ = σ(t[r]p)
Beispiel: (Siehe Narrowing-Beispiel; 1.Schritt der Auswertung mit Variable.)
Sei t: succ(0) > 0 + u
p=2
(also: t|p = 0 + u)
(Variante von Regel 1)
σ=(x’/u)
t’ = σ(t[x’]2)= succ(0) > u
Somit wird succ(0) > 0 + u ersetzt durch succ(0) >u .
Induktive Funktional-Logische Programmierung
Seite 7
3.2 IFLP
Wir führen nun das „Inverse Narrowing“ ein und erklären den IFLP Algorithmus zur
Findung einer Programmerweiterung.
Als Analogie läßt sich feststellen:
Resolution für LP
Inverse Resolution für ILP
Narrowing bei FLP
Inverses Narrowing für IFLP
Einleitung: „Inverse Narrowing“
Gegeben ist eine Menge von positiven Beispielen E+ und negativen Beispielen Eund ein Programm B, sog. Basiswissen.
Gesucht ist ein Programm P, so dass
BUP
alle Beispiele aus E+ erfüllt und kein Beispiel aus E-.
Grundlagen für „Inverse Narrowing“
Definition: Beschränkte Generalisierung (RG = Restricted Generalization)
e’ ist eine beschränkte Generalisierung einer Gleichung e, wenn eine Substitution
existiert, die e’ auf e abbildet und die Menge der Variablen der rechten Seite von e’
eine Teilmenge der Variablen auf der linken Seite darstellt.
Definition: Konsistent Beschränkte Generalisierung (CRG = Consistent RG)
bzgl. E+, E- und B U P
CRG entspricht e = {l1 = r1}
gdw.
1.
e ist RG für mind. ein
,
2.
es existiert keine ‘Narrowing’-Kette, die e benutzt und die ein
liefert.
Es darf keine linke Seite eines Elementes aus E- abgeleitet werden, so daß die
rechte Seite als Ergebnis hergeleitet wird, und
3.
es existiert keine ‘Narrowing’-Kette, so dass
l’ ~~>e ... ~~> r’’ != r’
mit
Beispiel zur CRG:
Wir wollen Regeln für die Addition ableiten.
Gegeben ist ein positives und negatives Beispiel und Basiswissen.
E+: 0 + s(0) = s(0)
E-: 0 + s(0) = 0
B:
s(x) + y = s(x+y)
zu 1.
Erzeugung einer RG, durch Ersetzen einer Konstanten durch eine Variable.
σ = {x/0}
=> e = {x + s(x) = s(x)}
Induktive Funktional-Logische Programmierung
Seite 8
zu 2.
Mit der RG dürfen die negativen Beispiele nicht hergeleitet werden können.
0 + s(0) ~~> s(0) ~/~> 0
Es gibt keine Narrowing-Kette um 0 + s(0) zu 0 abzuleiten.
zu 3.
Es darf keine ‘Narrowing’-Kette geben, so daß eine andere rechte Seite
abgeleitet wird, als r’.
0 + s(0) ~~>e s(0)
Es ist nicht möglich, mit einer Gleichung aus B, eine Ableitung zu realisieren,
die eine andere Normalform erzeugt.
Beschreibung „Inverses Narrowing“
Sei P ein Programm. t, t’ sind Terme
t’ kann durch inverses Narrowing von t gebildet werden, wir schreiben
t’
t
gdw.
u ∈ O(t), { l = r } P
θ = mgu(t|u,r)
und t’ = θ(t[l]u)
Vorgehensweise für IFLP:
und { l = r }
Sei { s = t } E+
Existiert
θ = mgu(t|u,r) ,
dann erhält man neue Regeln wie folgt:
s = θ(t[l]u) mit l = r
B
Beachte, dass für jede Termposition ein θ gebildet werden kann. Damit können
ebenso viele neue Gleichungen gebildet werden, wie Anzahl θ’s.
Beispiel zu „Inverses Narrowing“
Sei B unser betrachtetes Programm.
e’ = { X’ + 0 = X’ }
B
// Eine Gleichung des Basiswissens B
l = X’ + 0
// linke Seite von e’
r = X’
// rechte Seite von e’
{l=r} B
(1)
Sei e ein positives Beispiel für unser zu konstruierendes Programm P.
e E+:
e = { X + s(0) = s(X) }
// Gleichung des positiven Beispiels
u = X + s(0)
// linke Seite des Beispiels
t = s(X)
// rechte Seite des Beispiels
u=t
//Die mit dem erweiterten Programm zu erfüllende Gleichung
Induktive Funktional-Logische Programmierung
Seite 9
Bildung des allgemeinsten Unifikators θ:
θε = {X’ / s(X)}
σ =mgu(t|u,r)
θ1 = {X’/X}
t’ε = s(X) + 0 = σ(t[l]u)
t’1 = s(X + 0)
=>
(Term t wird durch r ersetzt)
(X wird durch r ersetzt)
X + s(0) = s(X) + 0
(2)
X + s(0) = s(X+0)
(3)
Diese beiden Gleichungen werden dem Programm P hinzugefügt.
Wir haben so ein neues Programm erhalten:
X’ + 0 = X’
X + s(0) = s(X) + 0
X + s(0) = s(X+0)
Probe, d.h. wir wollen zeigen, dass e E+ ableitbar ist:
X’’ + s(0) ~~> ((2) mit σ{X’’/X}) s(X’’) + 0
~~> ( (1)mit σ’{s(X’’)/X’}) s(X’’)
=> u = t
X’’ + s(0) ~~> ( (3) mit σ{X’’/X}) s(X’’+ 0) ~~>( (1)mit σ’{X’’/X}) s(X’’)
=> u = t
Beschreibung des IFLP-Algorithmus (Def. nach [1])
Wir starten den induktiven Prozeß mit den positiven und negativen Beispielen E+
und E-. Zusätzlich kann Hintergrundtheorie (B) benutzt werden um das Zielprogramm
P zu induzieren. Bezeichne BF die Basisfunktionen.
Der IFLP Algorithmus hat drei Parameter.
1)
min stellt die maximale Anzahl von CRG’s dar, die in einem Schritt des
Algorithmus generiert werden müssen.
2)
step der Wert, um den min erhöht wird (falls keine Lösung gefunden
werden kann)
3)
inarcomb maximale Anzahl von „inverse Narrowing“ Schritten, die mit
einem Paar von Programmen durchgeführt werden kann.
Die Parameter sollen die Performance und Effektivität des Algorithmus verbessern.
Der Standard IFLP Algorithmus lernt Programme, indem er zwei Gruppen von
Hypothesen generiert:
- Menge von Gleichungen (EH), die hauptsächlich durch CRG generiert wurden
- Menge von Programmen (PH), die ausschließlich aus Gleichungen EH entstanden
In jedem Schritt des Algorithmus entstehen neue Gleichungen und Programme durch
das „inverse Narrowing“.
Der Algorithmus läßt sich über zwei Hilfsprozeduren aufbauen:
GenerateCRG(input: E+, E-, EH, min; output: EHf)
InverseNarrowing(input: P1, P2, BF, inarcomb; output: EH, PH)
Induktive Funktional-Logische Programmierung
Seite 10
Prozedur „GenerateCRG“
Gibt eine Menge EHf zurück, indem man eine Menge von Gleichungen, die CRG’s
für E+ und E- sind und aus jedem Beispiel aus E+ konstruiert wurden, zu EH hinzufügt.
Die Größe von EHf ist durch min beschränkt.
Prozedur „InverseNarrowing“
Gibt eine Menge von Gleichungen und Programmen zurück, die man wie folgt erhält:
Als erstes wird „inverses Narrowing“ auf Gleichungen aus den beiden eingegebenen
Programmen angewendet (bis zu inarcomb Kombinationen) und dann werden die
Mengen verkleinert um Redundanzen und Inkonsistenzen zu eliminieren.
Eingabe: P1, P2, BF, inarcomb
Berechne eine Menge von Gleichungen E, indem „inverse Narrowing“-Schritte
auf die „beste“1 Gleichung aus P1 und alle Gleichungen aus P2
angewendet werden.
Wir berechnen alle CRG’s C für alle Elemente aus E.
Sei die Menge der Gleichungshypothesen (EH) die Vereinigung über C.
Sei die Menge der Programmhypothesen (PH) die Vereinigung über C,P1
und P2 ohne die „beste“ Gleichung aus P1.
Berechne alle „coverings“2 und „optimalities“3 jedes Elementes von der
Potenzmenge von PH.
Solange ein Programm p in PH existiert, welches inkonsistent und
nicht „confluent“ ist, wiederhole:
Falls p nicht konsistent ist, dann entferne p aus PH
Falls p nicht „confluent“ ist, ersetze p durch alle seine „confluenten“
Teilmengen.
Ende Schleife
Entferne alle redundanten Gleichungen aus Elementen von PH.
Ausgabe: EH, PH
1
Im Sinne eines definierten Optimalitätskriteriums.
Macht eine Aussage über die Anzahl der abgedeckten positiven Beispiele einer Gleichung.
3
Optimalitätsfunktion, die Parameter enthält, die auf verschiedene Probleme angepasst werden können.
2
Induktive Funktional-Logische Programmierung
Seite 11
IFLP-Algorithmus
Eingabe: pos. u. neg. Beispiele, Basiswissen, Parameter
Generiere CRG’s
Solange „Stop Kriterium“4 nicht erfüllt wiederhole
Existiert keine Programmhypothese, die ein Optimalitätskriterium erfüllt
dann:
Wähle eine Teilmenge der pos. Beispiele E
Für jedes Element e aus E wiederhole:
Sei e ein Programm P.
Führe aus:
InverseNarrowing für P, Basiswissen und
Teilmenge des Basiswissens (BF)
Neue und alte Prorgammhypothesen vereinigen.
Neue und alte Gleichungshypothesen (CRG’s) vereinigen.
Bestes Programm bestimmen.
Ende Schleife
Sei: n = #pos. Beispiele
Solange n > 0 wiederhole
Sei PP die Menge aller Prorgammpaare für die gilt:
P1,P2 sind aus der Menge der Programmhypothesen und
ungleich und die Anzahl pos. Beispiele, die von P1 oder
P2 erfüllt werden ist größer als n
Falls PP nicht leer ist,
dann:
Wähle das Programmpaar P1,P2, so dass die Summe der
Optimalitätskriterien maximal wird.
Beende Schleife.
sonst:
Verringere n um 1.
Ende Schleife
Falls n=0,
dann:
Erhöhe Anzahl zu generierender CRG’s
Generiere CRG’s
Wenn alte und neue Gleichungshypothesen identisch sind,
dann:
Abbruch, es gibt keine neuen Programmhypothesen
=> Keine Lösung.
sonst:
InverseNarrowing für P, Basiswissen und BF
Neue und alte Prorgammhypothesen vereinigen.
Neue und alte Gleichungshypothesen (CRG’s) vereinigen.
Bestes Programm bestimmen.
Ende Schleife
Ausgabe: „Bestes Programm“
4
Man wählt i.d.R. eine Kombination aus diversen Optimalitätskriterien.
Induktive Funktional-Logische Programmierung
Seite 12
4 Anwendung
Das FLIP System
Das „Functional Logic Inductive Programming System“ ist in der Lage, aus positiven
und negativen Beispielen sowie unter Verwendung von Basiswissen,
Programmhypothesen zu erzeugen.
Es hat sich gezeigt, dass die Wahl der Beispiele besonders wichtig ist.
Induktive Funktional-Logische Programmierung
Seite 13
Index
B
Beschränkte Generalisierung 8
konsistente 8
Beispiel 8
F
Funktionale Programmierung 3
I
Inverse Narrowing
Algorithmus 10
Grundlagen 8
Prozedur
GenerateCRG 11
InverseNarrowing 11
Vorgehen 8
K
Klausel 5
L
Literal 5
Logische Programmierung 3
N
Narrowing 6. Siehe auch Inverse Narrowing
Beispiel 6–7
Grundlagen 6
R
Resolution
Methode 5
S
Substitution 5
T
Terme 4
Termposition 4
U
Unifikation 5. Siehe Substitution
Unifikator
allgemeinster 5
V
Variante 4
Induktive Funktional-Logische Programmierung
Seite 14
Literaturverzeichnis
[1] J. Hernandez-Orallo, M.J. Ramirez-Quitana. Inverse Narrowing for the Induction of Funtional Logic.
Website http://www.dsic.upv.es.
[2] Peter A. Flash. The logic of learning: a brief introduction to Inductive Logic Programming.
Website http://www.cs.bris.ac.uk/~flach, 1998.
[3] M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice.
In: Journal of Logic Programming. Vol.19&20. 1994. S.583-628.
[4] Katharina Morik. Maschinelles Lernen.
Skriptzur Vorlesung. 1999.
[5] Ehrig, Mahr, Cornelius, Große-Rhode, Zeitz. Grundlagen der Informatik.
Springer-Verlag, Berlin. 1998
[6] C. Ferri-Ramirez, J. Hernandez-Orallo, Ramirez-Quitana, M. José. The FLIP System.
Website http://www.dsic.upv.es/~jorallo/flip/. 2000.
[7] Sergio Antony. Research in Functional Logic Programming at Portland State
Website http://www.cs.pdx.edu/~antoy. 2000.
Induktive Funktional-Logische Programmierung
Seite 15
Herunterladen