380 likes | 544 Views
Automatisch redeneren en stellingen bewijzen. Introductie: logica in AI. Automatisch redeneren : Resolutie Unificatie Normalizatie. Introductie:. Automatisch redeneren. Motiverend voorbeeld. Logica: Syntax Model semantiek Logisch gevolg.
E N D
Automatisch redeneren en stellingen bewijzen Introductie: logica in AI Automatisch redeneren: Resolutie Unificatie Normalizatie
Introductie: Automatisch redeneren Motiverend voorbeeld Logica: Syntax Model semantiek Logisch gevolg
Het AI droombeeld anno ‘60: • In logica kan je vrijwel alles ‘formeel’ uitdrukken. • Ook kan je in logica “stellingen” bewijzen uit gegeven informatie. • Kunnen we dit uitbaten om een automatische redenerend systeem te bouwen ??
Logica is de ‘assembler’ van de kennis + ligt heel dicht bij natuurlijke taal. Vrijwel elke vorm van kennis kan je formeel en ondubbelzinnig uitdrukken in logica. • Als computers kennis moeten verwerken dan moet die kennis formeel en ondubbelzinnig verwoord zijn. • Logische deductie laat toe om op systematische manier nieuwe kennis uit bestaande kennis af te leiden Deductie automatiseren ?? Onderliggende premisses:
1. Marcus was een man. • Was Marcus loyaal aan Cesar? • Haatte Marcus Cesar? Een voorbeeld: • Gegeven kennis in natuurlijke taal: 2. Marcus was Pompeier. 3. Alle Pompeiers waren Romeinen. 4. Cesar was een heerser. 5. Alle Romeinen waren ofwel loyaal aan Cesar of haatten hem. 6. Iedereen is loyaal aan iemand. 7. Mensen proberen alleen heersers te vermoorden waar ze niet loyaal aan zijn. 8. Marcus probeerde Cesar te vermoorden. • Hoe kunnen we automatische vragen beantwoorden als:
Conversie naar eerste orde logica: • Feiten representatie: 1. Marcus was een man. man(Marcus) 2. Marcus was Pompeier. Pompeier(Marcus) 4. Cesar was een heerser. heerser(Cesar) 8. Marcus probeerde Cesar te vermoorden. probeervermoord(Marcus, Cesar)
() ~(loyaalaan(x,Cesar) haat(x,Cesar)) XOR Conversie naar eerste orde logica (2): • Algemene representaties (regel representaties): 3. Alle Pompeiers waren Romeinen. x Pompeier(x) Romein(x) 5. Alle Romeinen waren ofwel loyaal aan Cesar of haatten hem. x Romein(x) loyaalaan(x,Cesar) haat(x,Cesar) 6. Iedereen is loyaal aan iemand. x yloyaalaan(x,y) 7. Mensen proberen alleen heersers te vermoorden waar ze niet loyaal aan zijn. xy mens(x) heerser(y) probeervermoord(x,y) ~loyaalaan(x,y)
Probeer bijvoorbeeld te bewijzen dat hij het niet was: Bewijs dat hij het was: De “stelling” ? • Was Marcus loyaal aan Cesar? ~loyaalaan(Marcus,Cesar) • Haatte Marcus Cesar? haat(Marcus,Cesar)
xy mens(x) heerser(y) probeervermoord(x,y) ~loyaalaan(x,y) + substitutie: x/Marcus y/Cesar AND mens(Marcus) heerser(Cesar) probeerver-moord(Marcus,Cesar) ~loyaalaan(Marcus,Cesar) mens(Marcus) probeervermoord(Marcus, Cesar) Extra regel: x man(x) mens(x) heerser(Cesar) 8. 4. 1. man(Marcus) Klaar! Klaar! Klaar! Een bewijs door backward-reasoning probleem-reductie: ~loyaalaan(Marcus,Cesar) + Modus ponens
Problemen:1) kennisrepresentatie: • Natuurlijke taal is imprecies / ambigu • zie “Mensen proberen alleen …” • Evidente informatie wordt gemakkelijk vergeten. • zie man <-> mens • Sommige informatie is moeilijker voor te stellen in logica. • Vb.: “misschien …”, “mogelijk…”, “waarschijnlijk…”, “45% kans dat …”, • Logica is niet handig vanuit ‘software engineering’ perspectief. • te ‘fine-grained’ (assembler-achtig?)
Enige toepasbare regel is: x Romein(x) loyaalaan(x,Cesar) haat(x,Cesar) Modus ponens??? Problemen:2) Problem solving: • Alle trade-offs die we bij toestandruimte representatie zoekmethodes hadden: • backward/forward, boom/grafe, OF-boom/EN-OF, controle aspecten, ... • Welke deductieregels zijn in het algemeen nodig? • Vb.: bewijs “ haat(Marcus,Cesar) “ • Hoe behandelen we x eny ?
xy mens(x) heerser(y) probeervermoord(x,y) ~loyaalaan(x,y) In het algemeen: veel complexer + substitutie: x/Marcus y/Cesar Problemen:2) Problem solving (2): • Hoe bereken je in het algemeen de substituties? • Van welke taak start je? • Vb: loyaalaan(Marcus,Cesar) of ~loyaalaan(Marcus,Cesar) • Hoe behandel je gelijkheid van objecten? • Probleem: combinatorische explosie van afgeleide gelijkheden (reflexiviteit, symmetrie, transitiviteit, …) • Hoe garanderen we correctheid/volledigheid?
De formele model semantiek van Logica Wat betekent de notie “Logisch gevolg”?
Het alphabet: connectieven punctuaties weer_is_regenachtig ~ jos_draagt_paraplu ) ( Atomaire proposities Correct-gevormde formules: ~weer_is_regenachtig jos_draagt_parapluweer_is_regenachtig Notatie: p, q, r : atomaire proposities. Basis concepten: In propositie logica:
1. Intuitieve (natuurlijke) semantiek: Semantiek (betekenis) • Algemeen (voor elk kennisrepresentatie formalisme): • 2 aanpakken voor het vastleggen van semantiek: • Beschrijf de betekenis in termen van natuurlijke taal • Vbn. (propositie logica): • : “impliceert” • ~ : “niet zo dat” • : “of” • p q : “p als en slechts als q” • ~ p r : “niet p en r” • elk symbool en elke correct-gevormde formule krijgt betekenis door geassocieerde natuurlijke-taal
2. Transformationele semantiek: p ~ q p q p r q r q r p p q r Semantiek (2) • Beschrijf de betekenis door omzetting naar een geassocieerd “mathematisch” object • In propositie logica : • de verzameling van alle propositie symbolen die logisch gevolg zijn van de gegeven formules: Logische gevolgen p q r
Maar hoe definieren we dan “logisch gevolg” ? • NIET als: • Alles wat we kunnen afleiden uit de formules • WANT: • Op dit ogenblik weten we nog niet: • “wat is een volledig stel van afleidingsregels” • Dat is net wat we in Automatisch Redeneren willen gaan vastleggen ! • WEL door: • Interpretaties • Modellen
Geeft dan ook onrechtstreeks een waarheids-waarde aan elke correct-gevormde formule p q ~p p q p q p q p q T T F T T T T T F F F T F F F T T F T T F F F T F F T T Interpretatie: = een functie die aan elke “atomaire” formule een waarheidswaarde toekent Waarheidstabel
S Voorbeeld: p ~ q q r p p Model: p q r p ~q q r T F T T T T Model • Gegeven een stel formules S: een model is een interpretatie die alle formules in S waar maakt
S Voorbeeld: p ~ q q r p (enige) Model: p q r r p T F T T Logische gevolg: • Gegeven een stel formules S en een formule F: F is logisch gevolg van S( S|=F), als elk model van S maakt ook F waar. F: r p
constanten Het alphabet: connectieven variabelen Yvonne x Yvette ~ y z functie symbolen predicaat symbolen f g h q p Termen: Yvonne y f(x, g(Yvette)) punctuaties , ) Correct-gevormde formules: ( quantoren p(Yvonne) p(x) ~q(x) z p(z) x y p(x) q(y) p(f(Yvonne, Yvette)
Formeler: • Een alphabet bestaat uit variabelen, constanten, functie symbolen, predicaatsymbolen (allen gebruikers-gedefinieerd) en uit connectoren, punctuaties en quantoren. • Termen zijn ofwel: • variabelen, • constanten, • functie symbolen voorzien met termen als argumenten, zoveel als het functie symbool argumenten verwacht. • Correct-gevormde formules worden geconstrueerd uit predicaat symbolen, voorzien met termen als argumenten, en uit connectoren, quantoren en punctuaties - dit volgens de regels die connectoren opleggen.
Concreet voorbeeld: { {0}, {x,y}, {s}, {odd,even}, Con, Pun, Quan} • Alphabet: • Termen: { 0, s(0), s(s(0)), s(s(s(0))), … x, s(x), s(s(x)), s(s(s(x))), … y, s(y), s(s(y)), s(s(s(y))), … } • Correct-gevormde formules: odd(0), even(s(0)), … odd(x), odd(s(y)), … odd(x) even(s(s(x))), … x ( odd(x) even(s(x)) ), … odd(y)x (even( s(x))), ...
A y x 0 odd s “even” true D = N boole 1 0 3 2 false Voorbeeld: Interpretatie: • een functie die constanten in D afbeeldt, en = een verzameling D (het domein), en • een functie die functie symbolen op functies: D -> D afbeeldt, en • een functie die predicaat symbolen op predicaten: D-> boole afbeeldt.
Toekenning van waarheidswaarden: 1. Aan gegronde atomaire formules: • vorm:p(f(a), g(a,b)) I( odd( s ( s( 0 ) ) ) ) ) = ? = I (odd) (I(s) ( I(s) (I(0)) )) = “even”(succ ( succ (0) )) = “even” (succ (1 )) = “even” (2) = true Voorbeeld:
Toekenning van waarheidswaarden (2): 2. Voor gesloten correct-gevormde formules: (= geen niet-gequantificeerde variabelen) • x F(x) is waar als: • voor alle d D: I( F(d) ) = true • x F(x) is waar als: • er een d D bestaat zodat: I( F(d) ) = true • verder: gebruik van waarheidstabellen. I(x odd( s ( x ) ) odd(x) )= ? = true als voor alle d in N: I (odd( s (d) ) odd(d) ) = true Voorbeeld: = “even”(succ(d)) “even”(d) Neem: d = 0, dan: = falsetrue Waarheidstabellen: false !
Gegeven een stel formules S: een model is een interpretatie die alle formules in S waar maakt. • Gegeven een stel formules S en een formule F: F is logisch gevolg van S( S|=F), als elk model van S maakt ook F waar. Semantiek / Logisch gevolg: • Net zoals voor propositie logica ! • Bijkomend: inconsistentie: • Gegeven een stel formules S: S is inconsistent als S geen enkel model heeft. Voorbeeld:S = { p(a), ~p(a)}
A V C F = y Marcus x Cesar mens heerser P man probeervermoord Pompeier Romein loyaalaan haat D = wereld van ~40 VC. “Cesar” “was_heerser” true true “Marcus” boole “was_pompeier” false false boole Marcus voorbeeld: “Intended” interpretatie: Is een model ALS ALLE FORMULES CORRECT ZIJN
A C V Marcus F = y Cesar x mens heerser P man probeervermoord Pompeier Romein loyaalaan haat N 3 4 Marcus voorbeeld: I(man) = I(mens)= I(Romein) =“natuurlijk getal” I(probeervermoord) =“ > ” I(Pompeier) =“even getal” I(loyaalaan) =“deelt” I(heerser) =“priemgetal” I(haat) =“deelt niet”
JA ! Model ?? 1. Marcus was een man. 4 is een natuurlijk getal 2. Marcus was Pompeier. 4 is een even getal 4. Cesar was een heerser. 3 is een priemgetal 8. Marcus probeerde Cesar te vermoorden. 4 > 3 3. Alle Pompeiers waren Romeinen. Even getallen zijn natuurlijk. 5. Alle Romeinen waren ofwel loyaal aan Cesar of haatten hem. Een getal deelt 3 of deelt 3 niet. 6. Iedereen is loyaal aan iemand. Elk getal is deler van een getal. 7. Mensen proberen alleen heersers te vermoorden waar ze niet loyaal aan zijn. Een natuurlijk getal dat groter is dan een priemgetal deelt het priemgetal niet.
mens(x) sterfelijk(x) mens(Socrates) sterfelijk(Socrates) januari(x) koud(x) januari(21/1/01) koud(21/1/01) P(x) Q(x) P(A) Q(A) “Logic is all form, no content” Alleen de onderlinge structuur van een stel logische formules is bepalend voor de conclusies! (Op isomorfisme van de namen na) Maar vanuit een kennisrepresentatie-perspectief is ook de ‘content’ belangrijk.
Formele semantiek Beslisbaarheid Bewijzen maken met de hand Cursus logica (1e Kan Inf.) Propositie logica Eerste-orde predicaten logica
Programmeertalen gebasseerd op logica (Prolog/CLP) Formele semantiek Beslisbaarheid Bewijzen maken met de hand Cursus Declaratieve Talen (1e Lic. Inf./2 CW.) Propositie logica Eerste-orde predicaten logica
Programmeertalen gebasseerd op logica (Prolog/CLP) Formele semantiek Beslisbaarheid Bewijzen maken met de hand Propositie logica Eerste-orde predicaten logica Technieken voor automatisch redeneren Representeren van problemen in Logica Artificiele Intelligentie /Kennis-gebaseerde systemen Overwegend in oefeningen
Basis: Methodologie voor kennisrepresentatie? • Erg complex. Weinig eenvoudige richtlijnen. • Selecteer een alphabet dat toelaat alle objecten en relaties uit het probleemgebied voor te stellen: • Wat zijn de basis objecten, functies en relaties in je probleemdomein ? • Ontology: representeer alleen de RELEVANTE informatie • Kies constanten, functie- en predicaat symbolen om deze te representeren. • Vertaal elke natuurlijke taal zin in een (of meerdere) corresponderende logische formule.