729G43 Artificiell intelligens Kunskapsrepresentation Arne Jönsson HCS/IDA
Kunskapsrepresentation Introduktion Wumpus-världen Logik Satslogik Predikatlogik FOPL, Inferens Resolution, Unifiering Representation av kunskap Ontologi Strukturerad representation/semantiska nät
Kunskapsbaserade agenter Generell kunskap om världen Deklarativ beskrivning (jfr agent med procedurell kunskap) Resonemang Flexibla explicita mål ny kunskap Partiellt observerbara världar (jfr sökning)
Kunskapsbaserad agent Har en kunskapsbas som innehåller fakta och resonemangmekanismer för att dra slutsatser baserat på dessa fakta Agenten tolkar percept vid en tid t uppdaterar KB med perceptet väljer handling baserat på KB uppdaterar KB med handling vid t Utför handling och uppdaterar tiden
Kunskapsbaserad agent KB = [ ] t = 0 def KBagent(percept): tell(kb, makeperceptsentence(percept, t)) action = ask(kb, makeactionquery(t)) tell(kb, makeactionsentence(action, t)) t = t + 1 return action
Modelleringsparadigm Tillståndsbaserade modeller Tillstånd, handlingar, kostnader Sökning Variabelbaserade modeller Variabler, tilldelningar CSP Logikbaserade modeller Satslogik, predikatlogik Logiska formler och inferensregler
Wumpus-världen Stank Stank Bris Bris HÅL HÅL Bris Stank Bris Bris HÅL Bris
Wumpus-världen Percept (Stank, Bris, Glitter, Bump, Skrik) Wumpusen stinker en ruta vertikalt och horsiontellt Hål ger bris en ruta vertikalt och horisontellt Guld glittrar Bump i vägg Döende Wumpus skriker
Wumpus-världen Handlingar (framåt, (sväng höger), (sväng vänster), ta, skjut, klättra) Om agenten är vid skatten innebär ta att agenten har guldet Om agenten står riktad mot wumpusen och skjuter dör wumpusen Om agenten är vid startplatsen och klättrar kommer den ut Om agenten hamnar i hål eller hos wumpusen dör den
Wumpus-världen resonemang Om det blåser på ruta x och ruta a, b, c och d är angränsande rutor så kan det finnas hål på a, b, c och d Om det inte blåser på ruta x och a, b, c och d är angränsande rutor så kan det inte finnas hål på a, b, c eller d Om det finns ett hål på ruta x eller y och det inte finns ett hål på x så finns det ett hål på y
Wumpus-världen Stank Stank Bris Bris HÅL HÅL Bris Stank Bris Bris HÅL Bris
Logik Syntax Uttryck som beskriver världen Semantik Uttryckens betydelse En mängd modeller Inferensregler Ger nya beskrivningar av världen
Syntax vs semantik Syntax Vilka formler (uttryck) är tillåtna Ex matematik: x+y=4 x4y=+ Semantik Vad betyder formlerna. När är de sanna? Ex matematik x+y=4 är sann för x=1 och y=3 eller x=2 och y=2 etc Flera olika modeller
Syntax för satslogik Atomära satser. Kan vara sanna eller falska Ofta representerade med bokstäver, t.ex. AI är kul kan representeras med K Logiska konnektiv Negation (inte) Konjunktion (och) Disjunktion (eller) Implikation Ekvivalens Parenteser ( )
Syntaxexempel Formler: A A B A A B A B (A B) (A B) A Inte formler: A A B
Konjunktion Syntax, exempel K: AI är kul L: Folk är lyckliga K L - Det är så att AI är kul och folk är lyckliga Semantik K L är sant om både K och L är sanna
Disjunktion Syntax, exempel K: AI är kul L: Folk är lyckliga K L - Antingen är AI är kul eller så är folk är lyckliga. Semantik K L är sant om någon av K eller L är sann, eller båda
Negation Syntax, exempel K: AI är kul K - Det är inte så att AI är kul Semantik K är falsk när K är sann. Annars sann.
Implikation Syntax, exempel K: AI är kul L: Folk är lyckliga K L Om AI är kul så är folk lyckliga. OBS! Inget om vad som händer om AI inte är kul. Semantik K L är enbart falsk om K är sann och L är falsk. Annars sann.
Ekvivalens Syntax, exempel K: AI är kul L: Folk är lyckliga K L Folk är lyckliga om och endast om (omm) AI är kul. Är AI kul är folk lyckliga. Är folk lyckliga är AI kul. Semantik K L är sann om L och K har samma sanningsvärde. Annars falsk.
Sanningstabell Kan lista alla sanningsvärden A B A A B A B A B A B F F S F F S S F S S F S S F S F F F S F F S S F S S S S
Implikation A B om båda sanna måste satsen vara sann och om A är sann och B falsk måste satsen vara falsk A B A B Alt 1 A B Alt 2 A B Alt 3 Dessutom måste A B (A B) (B A) betyder logisk ekvivalens, sanna i samma modeller (metaspråk) A B Alt 4 F F F F S S F S F S F S S F F F F F S S S S S S B OK
XOR Exklusivt eller (antingen eller), dvs bara sant då en av satserna sann A B (A B) (A B) A B A B F F F F S S S F S S S F
Sanningstabell, exempel P Q R P Q R P Q P Q R F F F F S F F S F S F S F F S F S S F S S F F S F S F S S S S S F F S S S S F S
Syntax byggs rekursivt Låt satser betecknas med stora bokstäver och formler (som består av satser) med små grekiska Om! och " är formler så är följande också formler:!! "! "! "! " Ex. Om! = A B, " = C D då är! " = A B C D
Prioritesordning och parenteser! # % kan tolkas som (! #) % eller! (# %) Formellt krävs parenteser men ofta skippar man dem, ex! # % tolkas som (! #) %! # % tolkas som (! #) %! # tolkas som (!) # Prioritetsordning
Några viktiga logiska ekvivalenser 1.! # #! kommutativ lag 2.! # #! kommutativ lag 3.! (# %) (! #) % associativ lag 4.! (# %) (! #) % associativ lag 5.!! dubbelnegationseliminering 6.! # #! kontraposition 7.! #! # eliminering av implikation 8.! (# %) (! #) (! %) distributiv lag 9.! (# %) (! #) (! %) distributiv lag 10. (! #)! # De Morgan 11. (! #)! # De Morgan
Sanningstabellsbevis Eliminering av implikation De Morgan De Morgan A B A B A B (A B) A B (A B) A B F F S S S S S S F S S S S S F F S F F F S S F F S S S S F F F F
Översättningar, 1 Per och Pål är starka egentligen Per är stark och Pål är stark E: Per är stark Å: Pål är stark E Å
Översättningar, 2 Steken skall kryddas med svartpeppar och vitpeppar eller kryddpeppar S: Steken skall kryddas med svartpeppar V: Steken skall kryddas med vitpeppar K: Steken skall kryddas med kryddpeppar (S V) K S (V K) Två olika tolkningar
Översättningar, 3 Du skall ha registrerat dig annars får du inte tenta annars signalerar att det är nödvändigt att registrera sig för att få tenta Om du inte registrerat dig får du inte tenta T: Du får tenta R: Du har registrerat dig R T
Konjunktiv normalform Standardiserat sätt att skriva formler En literal är en sats eller negerad sats En formel består bara av en itererad konjunktion av disjunktiva literaler! 1! 2! 3! n där! i är # i % i och # eller % är literaler, eller tomma T.ex. (A B) (C D) E Alla uttryck går att skrivas om till konjunktiv normalform (eller disjunktiv normalform)
Konvertering till konjunktiv normalform För satslogik i princip tre enkla samband 1. Eliminera implikation! #! # 2. Reducera negationernas räckvidd de Morgan (! #)! # och (! #)! # 3. Konvertera till konjunktion av disjunktioner Distributiva lagen! (# &) (! #) (! &)! (# &) (! #) (! &)
Exempel A (B (C D)) 1. A (B (C D)) 2. A (B ( C D)) 3. ( A B) ( A C D)
Modell Formlerna är bara symboler, syntax Semantiken ger mening En modell w är en tilldelning av sanningsvärden till symbolerna Exempel, symbolerna A och B ger 4 möjliga modeller A w1 Falsk Falsk w2 Falsk Sann w3 Sann Falsk w4 Sann Sann B
Egenskaper hos en formel Tautologi Sann för alla möjliga tilldelningar, A A Kontradiktion Falsk för alla möjliga tilldelningar, A A Kontingent Varken tautologi eller kontradiktion. Sann för vissa tilldelningar falsk för andra A B
Exempel A B B C är en tautologi Sanningstabell eller Motsägelsebevis Antag kontradiktion, dvs A B B C är falsk A B är bara falsk om A är sann och B är falsk B C är bara falsk om B är sann och C är falsk disjunktionen är bara falsk om båda falska, dvs B både sann och falsk, vilket inte är möjligt, alltså
Tolkningsfunktion Antag att! är en formel och w en modell Tolkningsfunktionen I(!, w) avgör om det finns en modell som gör formeln satisfierbar (SAT) Sant om w satisfierar! Falskt om w inte satisfierar! Ex. antag att! = A B I(!, w1) = Falskt I(!, w3) = Sant etc A B w1 Falsk Falsk w2 Falsk Sann w3 Sann Falsk w4 Sann Sann
Logisk konsekvens (entailment) Slutsatserna en logisk konsekvens av premisserna Skrivs! # dvs # är en logisk konsekvens av!, varje modell av! är också en modell av # Exempel A B A A sann i varje tolkning av A B Tautologi om man inte har vänsterled, t.ex. A A Kan använda sanningstabeller för att testa logisk konsekvens, men NP-komplett, 2 n där n antal satser
Sanningstabell, exempel {P R, R Q} P Q P Q sann när P R sann OCH R Q sann P R Q P R R Q P Q F F F S S S F F S S S S F S F S S S F S S S S S S F F F S F S F S F S S S S F S F F S S S S S S
Inferens Syntaktiska härledningar Opererar direkt på syntaxen, ingen semantik, Olika typer: Naturlig deduktion Framåtinferens Söker från reglerna framåt Bakåtinferens Söker från reglerna bakifrån Resolution
Naturlig deduktion Förutsätter sundhet och fullständighet Inför premisser Använd härledningsregler (deduktionsregler) för att komma fram till slutsatsen Säkerställ att slutsatsen bara beror av premisserna Kan göra antaganden, t.ex. reductio ad absurdum
Reductio ad absurdum Används för motsägelsebevis Om mängden teorem! har en modell men inte! # så! # Ex.! = { A, B C} har en modell då A falsk och B och C båda sanna. Lägg till B! = { A, B C, B} nu finns ingen modell eftersom B inte kan vara både sann och falsk och således! B
Inferensregler Exempel Modus Ponens!! # # dvs om! # och! är givna så kan man sluta sig till # (!! # #) Premisser ovan strecket och slutsatser under
Inferens, Exempel Visa att {R, R W, W S} S Modus ponens {R, R W} W Modus ponens igen {W S, W} S dvs ny kunskapsbas {R, R W, W S, W, S} W kom med på köpet
Bevisregler i naturlig deduktion Introduktionssregler!! #! %! %!! %! #!! %! %! % %!! % I I I I I I Eliminationssregler! %!! %! * % * *! %!! #! %! %! % E E E E E
Exempel 1 Ingen rök utan eld, såvida ingen röker 2 Det finns alltid någon som feströker 3 Det är fest 4 Visa att det ryker 1 Eld Röker Rök 2 Fest Röker 3 Fest 4 Rök 2, 3 och E ger 3b Röker 3b och I ger 3c Eld Röker 3c, 1 och E ger Rök {Eld Röker Rök, Fest Röker, Fest} Rök
Bevisschema Premissmängd Radummer Formel Regel {1} 1 A 1 Premiss {Beror av regel*} i A i Radnummer, regel {Bara premisser} x B Slutsats *Premissmängderna räknas som: Unionen av radernas premissmängder för reglerna I, I, E, I, E, E, I, E Differensen för reglerna I, E, I (ordnade premisser)
Exempel, 1 Visa att A, (A B) B Premissmängd Radummer Formel Regel {1} 1 A Premiss {2} 2 (A B) Premiss {3} 3 B Antagande* {1, 3} 4 A B 1, 3 I {1, 2, 3} 5 2, 4, I {1, 2} 6 B 3, 5, E * Provisorisk premiss för E
Exempel, 2 Visa att A C (C B) (A B) Premissmängd Radummer Formel Regel {1} 1 A C Premiss {2} 2 A Antagande {3} 3 B Antagande {1, 2} 4 C 1, 2, E {1, 2, 3} 5 C B 3, 4, I {2, 3} 6 A B 2, 3, I {1} 7 (C B) (A B) 5, 6, I
Några strategier 1. Härledning av! Antag!, härled och använd I 2. Härledning av! $ Härled! och $ var för sig och använd I 3. Härledning av! $ Reductio ad absurdum, antag (! $), använd de Morgan! $, generera och avsluta med E 4. Härledning av! $ Antag!, härled $ och använd I 5. Härledning av! $ Härled! $ och $! och använd I
Framåt- och bakåtinferens Exempel 1. Rökning Eld Rök 2. Rök Rökdetektor Larm 3. Larm Brandkåren kommer 4. Rökning Larm Falsklarm 5. Brandkåren kommer Falsklarm Arga brandmän 6. Rökning 7. Rökdetektor 8. Arga brandmän?
Framåtinferens Börja i någon premiss 1. Rökning Eld Rök 2. Rök Rökdetektor Larm 3. Larm Brandkåren kommer 4. Rökning Larm Falsklarm 5. Brandkåren kommer Falsklarm Arga brandmän 6. Rökning 7. Rökdetektor 8. Arga brandmän? Falsklarm Rökning Rök Larm Brandkåren Arga brandmän Rökdetektor
Bakåtinferens Börja i slutsatsen 1. Rökning Eld Rök 2. Rök Rökdetektor Larm 3. Larm Brandkåren kommer 4. Rökning Larm Falsklarm 5. Brandkåren kommer Falsklarm Arga brandmän 6. Rökning 7. Rökdetektor 8. Arga brandmän? Rökdetektor Arga brandmän Brandkåren Larm Rök Falsklarm Rökning
Resolution Mekanisk bevismetod Ex, satslogik Rökning Rök Rök Brandvarnarlarm Implikation transitiv, dvs Rökning Brandvarnarlarm α β kan skrivas som α β Rökning Rök Rök Brandvarnarlarm Dvs Rökning Brandvarnarlarm Kallas resolvent
Resolution Antag att! och B är mängder med teorem och att # är ett teorem Resolution Exempel! # # B! B & ( ( ) & )
Resolution 1. Konvertera alla satser till konjunktiv normalform 2. Negera vad som skall visas, konvertera till konjunktiv normalform och lägg till kunskapsbasen 3. Upprepa till kontradiktion eller ingen förbättring eller annat stoppvillkor a. Välj två klausuler b. Resolvera dessa. Resolventen är disjunktionen av alla termer med lämpliga substitutioner. c. Om resolventen tomma mängden så returnera kontradiktion, annars lägg resolventen till KB
Exempel 1. Rökning Eld Rök 2. Rök Rökdetektor Larm 3. Larm Brandkåren kommer 4. Rökning Larm Falsklarm 5. Brandkåren kommer Falsklarm Arga brandmän 6. Rökning 7. Rökdetektor 8. Arga brandmän?
Gör om till konjunktiv form, 1 1. (Rökning Eld) Rök 2. (Rök Rökdetektor) Larm 3. Larm Brandkåren kommer 4. (Rökning Larm) Falsklarm 5. (Brandkåren kommer Falsklarm) Arga brandmän 6. Rökning 7. Rökdetektor 8. Arga brandmän
Gör om till konjunktiv form, 2 1. (Rökning Eld) Rök ( Rökning Eld) Rök 1. Rökning Rök 2. Eld Rök 2. (Rök Rökdetektor) Larm ( Rök Rökdetektor) Larm 1. Rök Rökdetektor Larm 3. Larm Brandkåren kommer 4. (Rökning Larm) Falsklarm ( Rökning Larm) Falsklarm 1. Rökning Larm Falsklarm 5. (Brandkåren kommer Falsklarm) Arga brandmän 1. Brandkåren kommer Falsklarm Arga brandmän 6. Rökning 7. Rökdetektor 8. Arga brandmän
Konjunktiv form 1. Rökning Rök 2. Eld Rök 3. Rök Rökdetektor Larm 4. Larm Brandkåren kommer 5. Rökning Larm Falsklarm 6. Brandkåren kommer Falsklarm Arga brandmän 7. Rökning 8. Rökdetektor 9. Arga brandmän
Härled en motsägelse Plocka två satser, t.ex. 1+2 och lägg till KB 10. Rökning Eld Rök Eller 3+8 11. Rök Larm 10+11 ger 12. Rökning Eld Larm 6+9 ger 13. Brandkåren kommer Falsklarm 4+13 ger 14. Larm Falsklarm 14+5 ger 15. Rökning Larm 15+7 ger 16. Larm 3+16 ger 17. Rök Rökdetektor 1+17 ger 18. Rökning Rökdetektor 18 + 7 ger 19. Rökdetektor 19 + 8 ger en motsägelse 1. Rökning Rök 2. Eld Rök 3. Rök Rökdetektor Larm 4. Larm Brandkåren kommer 5. Rökning Larm Falsklarm 6. Brandkåren kommer Falsklarm Arga brandmän 7. Rökning 8. Rökdetektor 9. Arga brandmän
Metaspråk Satslogiken kallas objektspråk med operatorer som t.ex. Alternativa symboler eller för Metaspråk beskriver egenskaper om objektspråket Två objektspråksformler är lika, ex. A B A B En formel är en logisk konsekvens av en annan, ex. A B A beror av satsernas sanningsvärden En formel kan härledas ur andra beror bara av satsernas form
Sundhet och fullständighet Vi vill att vårt logiska system skall kunna bevisa allt som är sant och inget annat Ett logiskt system KB är sunt om KB " KB " dvs alla formler är logiskt sanna, inga ogiltiga formler kan härledas Ett logiskt system är fullständigt om KB " KB " dvs alla logiska sanningar är formler, alla giltiga formler kan härledas Satslogiken är sund och fullständig
Sundhet, exempel 1 Gå igenom varje regel. T.ex. är Modus ponens sund? Ex K, K L L och K, K L L? Kan vi hitta logiska konsekvenser som inte är sanna? K L K L F F S F S S S F F S S S L sann på varje rad där K och K L är sanna (K: AI är kul och L: Folk är lyckliga, dvs OM K och K L så L, dvs folk är lyckliga)
Sundhet, exempel 2 Hur är det med L, K L K och L, K L K? K L K L F F S F S S S F F S S S Inte sund. Det finns rader då L, K L är sann med K falsk L, K L K (Folk kan vara lyckliga utan att AI är kul) Detta är inte en regel i satslogiken
Fullständighet Alla logiska konsekvenser är härledda formler Besvärligare att visa, hur vet vi att allt kan härledas Räcker t.ex. inte med Modus ponens K, K M L L, dvs om K sann så är L en logisk konsekvens men inte K, K M L L eftersom modus ponens inte räcker för att härleda L, lägg till I så går det Fler inferensregler kan ge ett fullständigt system, eller andra. Resolution är t.ex. fullständig
Predikatlogik Problem med satslogik Världen är mer än ett antal atomiska fakta Arne gillar AI, Per gillar AI, Pål gillar AI.. Istället objekt och relationer mellan objekt GillarAI(Arne) eller Gillar(AI, Arne) Gillar(x, y) där x kan AI och y kan vara Arne, Per, Pål etc
Syntaktiska element Termer, refererar till objekt Konstanter (A, B, S0, Per ) Variabler (x, y, z ) Funktioner av termer (f(x), g(x, S0, z), addera(1, 2, 3) ) Formler Atomära formler Atomära satser, Q Predikat applicerade på termer, P(x, y), R(Per, z), Gillar(Per, Pål). Formler med konnektiv (,,,, ) samt identitet (=) Kvantifierade formler (, alla;, minst en)
Syntaxexempel, 1 Per gillar AI GillarAI(Per) Per är en konstant Per och Pål är bröder Bröder(Per, Pål) alt. Bror(Per, Pål), BrorTill(Per, Pål) Glad(x), Glad(x, t), Glad(x, l, t) x, l och t variabler Glad(Pål), Glad(Pål, 1999-12-31), Glad(Pål, 1999-12-31, Malmö) Inte trivialt att välja rätt predikat störreän(1,2) returnerar ett sanningsvärde x Glad(x) Alla är glada x Glad(x) Någon är glad x, y Bror(x, y) Bror(y, x)
Bundna och fria variabler P(x), x kallas fri variabel x P(x) variabeln x bunden av x P(x) variabeln x bunden av Kvantifierare har räckvidd x P(x) Q(x) tolkas av vissa författare som att andra x fritt, använd då parenteser x (Glad(x) Ledsen(x)) vi kommer inte att göra den tolkningen x,y P(x, y) z S(z) Q(x, y, z)
Syntaxexmpel, 2 och x P(x) Q(x) Den som gillar AI är glad x GillarAI(x) Glad(x) x GillarAI(x) Glad(x) Alla gillar AI och alla är glada x P(x) Q(x) Någon gillar AI och är glad x GillarAI(x) Glad(x) x GillarAI(x) Glad(x) x GillarAI(x) Glad(x) Någon gillar inte AI eller är glad
Syntaxexmpel, 3 x, y Bror(x, Pia) Bror(y, Pia) (x=y) Pia har två bröder Likhet Far(Per) = Gert x y Gillar(x, y) x y Gillar(x,y) x P(x) y Q(y) H(x, y) Älgar har horn x Älg(x) HarHorn(x) x Älg(x) y Horn(y) Har(x, y)
Syntaxexempel, 4 Alla kogvetare är snälla x Kogvetare(x) Snäll(x) Några kogvetare är inte snälla x Kogvetare(x) Snäll(x) En kogvetare är en kogvetare x Kogvetare(x) Kogvetare(x) Alla som känner Pål är kända av Per x Känner(x, Pål) Känner(Per, x) Alla människor tycker om någon (människa) x Människa(x) y Människa(y) TyckerOm(x,y) Någon människa tycker om alla (människor) x Människa(x) y Människa(y) TyckerOm(x, y)
Semantik Semantiken för satslogik oproblematisk Antag att Arne gillar AI då är satsen G: ArneGillarAI sann I(G) = sant Predikatlogik har objekt i världen GillarAI(Arne) I(GillarAI(Arne)) = sant Variabler refererar till olika objekt i en domän GillarAI(x) I(GillarAI(x)) sant för de individer, x, där GillarAI är sant
Domän Mängden objekt i en specifik värld Exempel, Blocks world Objekt i världen: A, B, C, Golv Relationer i världen: On, Clear givna genom On = {<A, B>, <B, C>, <C, Golv>}, Clear={<A>} För att beskriva Blocks world i predikatlogik behövs: (använder mnemomiska symboler, men kunde varit t.ex. G0046, R45, etc) Predikatlogiska objektkonstanter, A, B, C, Golv Binär relationskonstant On Unär relationskonstant Clear A B C
Modeller och Tolkning Relationer i Blocks world On = {<A, B>, <B, C>, <C, Golv>}, Clear={<A>} Modeller i Blocks world, olika tolkningar I(On(A,B)) = sant I(On(B,A)) = falskt I(Clear(A)) = sant I(Clear(B)) = falskt I(On(A,B) On(A,Golv)) = sant etc A B C
Semantik för kvantifierare x P(x) är sann om P(x) är sann för alla tilldelningar av variabeln x till objekt i domänen Oftast är domänen alla objekt i hela världen, men kan också vara begränsad Ex. Blocks world x On(A, x) Clear(x), x kan tilldelas A, B, C eller Golv. OBS: t.ex. x = A ger On(A, A) Clear(A) eller x = Golv x P(x) är sann om det finns något objekt som gör P(x) sann Ex x Clear(x) A B C
Samband mellan kvanitifierare x GillarAI(x) innebär x GillarAI(x) x GillarAI(x) innebär x GillarAI(x) Mer generellt (jämför DeMorgan) x P(x) x P(x) x P(x) x P(x) x P(x) x P(x) x P(x) x P(x)
Sundhet och fullständighet Predikatlogiken är sund, dvs KB " KB " dvs alla formler är logiskt sanna Predikatlogiken är inte fullständig Däremot kan man visa att något inte är satisfierbart
Skapa en kunskapsbas 1. Iterativ process 2. Identifiera uppgiften 3. Hämta relevant domänkunskap 4. Definiera en vokabulär Ontologi 5. Skriv axiom som beskriver domänen 6. Gör en problemkodning 7. Testa och använd 8. Debug
Wumpus-världen Stank Stank Bris Bris HÅL HÅL Bris Stank Bris Bris HÅL Bris
Wumpus-världen Percept = [Stench, Breeze, Glitter, Bump, Scream] Action = [Forward, Right, Left, Grab, Shoot, Climb] Representera tid och välja handling Ex Antag Percept([s, b, Glitter, m, c], 5) ask( a bestaction(a, 5)) bör ge Grab tell(grab, 5)
Representation av världen Rutor [x, y] Närliggande rutor x, y, z, w Adjacent([x, y],[z, w]) [z, w] {[x+1,y], [x-1,y], [x, y+1], [x, y-1]} Lagra utforskning, ex s,t At(Agent, s, t) Breeze(t) Breezy(s) Diagnosregler (diagnosticerar från effekter till fakta) s Breezy(s) r Adjacent(r, s) Pit(r) Kausalregler (modellbaserade resonemang) r Pit(r) [ s Adjacent(r, s) Breezy(s)]
Hantera föränding Vill uttrycka hur en handling påverkar världen i FOPL Inför situationsvariabel för fluents dvs sådant som ändrar sig Ex At(Agent, [1, 1], S0), At(Agent, [1, 2], S1) Saker som inte ändrar sig behöver ingen sitiationsvariabel, ex Wall([0, 1]) Uppdatera världen. Inför Result(action, situation) Result(Forward, S0) = S1 Result(Grab, S1) = S2
Situationskalkyl Världen består av en sekvens situationer Handlingar resulterar i nya situationer Fluents är predikat som beskriver relationer eller egenskaper som kan påverkas av handlingar, dessa tar ett extra situationsargument Funktionen Result(action, situation) används för hantera övergången mellan två situationer
Situationskalkyl Exempel Beskrivning av wumpusvärldens initialtillstånd At(Agent, [1 1], s0) Direction(Agent, North, s0) At(Wumpus, [1 3]) At(Pit1, [3 1]) At(Pit2, [3 3]) At(Pit3, [4 4]) At(Gold, [2 3])
Effektaxiom Wumpusvärldens handlingar "x,y,s At(Agent, [x, y], s) Ù Direction(Agent, North, s) Þ At(Agent, [x, y+1], Result(Forward, s)) "s Direction(Agent, East, s) Þ Direction(Agent, North, Result(Left, s)) "x,y,s At(Agent, [x, y], s) Ù At(Gold, [x, y], s) Þ Holding(Agent, Gold, Result(Grab, s)) Kallas effekt-axiom, beskriver det som förändras
Förändringar i världen Antag At(Agent, [2,3], S0), At(Gold, [2, 3], S0) Grab ger Holding(Gold, S1) Antag att agenten går framåt At(Agent, [2, 3], S1) Ù Direction(Agent, North, S1) Þ At(Agent, [2, 4], Result(Forward, S1)) Ger At(Agent, [2,4], S2) Men agenten har också guldet med sig, dvs a,x,s Holding(x, s) (a Release) Holding(x, Result(a, s)) och a,x,s Holding(x, s) (a Grab) (At(Agent, y, s) At(x, y, s)) Holding(x, Result(a,s)) Kallas frameaxiom
Frameproblemet Hur representera vad som påverkas och vad som inte påverkas av en handling. Representationsproblemet: representation av handlingar Inferensproblemet: representation av sekvenser av handlingar Relaterade problem: Qualification problem Hur räknar vi upp under vilka omständigheter en handling lyckas Ramification problem Hur räknar vi upp alla implicita konsekvenser av en handling
Succesor-state-axiom Successor-state axiom beskriver hur fluentsförändras över tid Kombinera effekt-och frameaxiom Handling som gör något sant redan sant och ingen handling som gör falskt "x,y,a,s At(Agent, [x+1 y], Result(a, s)) Û [(a = Forward Ù At(Agent, [x y], s) Ù Direction(Agent, East, s))] Ú (a ¹Forward Ù At(Agent, [x+1 y], s))
Resolution för predikatlogik Variabler och kvantifierare Ex 1. At(Wumpus, [1,2], 5) 2. At(Wumpus, [1, 3], 6) Ger resolventen At(Wumpus, [1, 3], 6) At(Wumpus, [1,2], 5) medan 3. At(Wumpus, l, t) och 1. med {l/[1,2], t/5} (l substitueras med [1,2] och t substitueras med 5) ger At(Wumpus, [1,2], 5) och en motsägelse, dvs en tom klausul
Unifiering För att lyckas med resolution i FOPL behöver man hitta allalämpligasubstitutioner, kallas unifiering Variabler byts mot andra variabler eller konstanter, en substitution Ofta söker man den mest generella unifieringen, MGU
Unifiering Exempel Gillar(Olga, x) Gillar(y, mask) x/mask y/olga Gillar(Olga, mask) Gillar(Olga, x) och Gillar(y, mask) kan alltså unifieras med hjälp av substitutionen {x/mask, y/olga)
Substitutioner propageras Ex x Hund(x) Skäller(x) kan konverteras till 1. Hund(x) Skäller(x) om vi antar att variabler alltid är allkvantifierade 2. Hund(Pluto) 1+2 med [x/pluto] ger Skäller(Pluto), dvs x har substituerats i båda predikaten
Unifieringsalgoritmen, 1 def unify(x, y, subst): if subst=="fail": return "Fail" elif x==y: return subst elif variable(x): unifyvar(x, y, subst) elif variable(y): unifyvar(y, x, subst) elif isinstance(x, list) and isinstance(y, list): unify(rest(x), rest(y), unify(first(x), first(y), subst)) else: return "Fail"
Unifieringsalgoritmen, 2 def unifyvar(var, x, subst): if getsubst(var, subst): unify(lookup(var, subst), x, subst) elif variable(x) and getsubst(x, subst): unify(var, lookup(x, subst), subst) elif occursin(var, x, subst): return "Fail" else: extendsubst(var, x, subst)
Exempel Unifiera Smelly([1,2]) och Smelly(k) unify([ Smelly, [1,2] ], [ Smelly,k],[]) x = [ Smelly, [1,2] ], y = [ Smelly,k] 1. subst Fail 2. x y 3. x eller y inte variabler 4. x och y listor 5. unify( [1,2], k, unify([ Smelly ], [ Smelly ],[])) 6. x==y alltså inga nya substitutioner 7. k variabel så unify ger anrop till unifyvar(k, [1,2],[]) 8. unifyvar hittar inga substitutioner så 9. extendsubst(k, [1,2], []) returnerar {k/ [1,2] }
Större exempel (med förenklingar) unify([ F,[ G, A, m], [ F, k, m]], [ F, l, [ F, l, [ G, A, B ]]], [ ]) unify([[ G, A, m], [ F, k, m]], [l, [ F, l, [ G, A, B ]]], unify( F, F, [ ])) [ ] unify([[ G, A, m], [ F, k, m]], [l, [ F, l, [ G, A, B ]]], [ ]) unify([ F, k, m], [ F, l, [ G, A, B ]], unify([ G, A, m], l, [ ])) unify-var(l, [ G, A, m], [ ]) [l/[g, A, m]] unify([k, m], [l, [ G, A, B ]], unify( F, F, [l/[g, A, m]] )) [l/[g A m]] unify([k, m], [l, [ G, A, B ]], [l/[g, A, m]] )) unify(m, [ G, A, B ], unify(k, l, [l/[g, A, m]] )) unify-var(k, l, {l/[g, A, m]}) unify(k, [ G, A, m], [l/[g, A, m]] ) unify-var(k, [ G, A, m], [l/[g, A, m]]) [k/[g A m]] unify(m, [ G, A, B ], [k/[g, A, m], l/[g, A, m]] ) unify-var(m, [ G, A, B ], [k/[g, A, m], l/[g, A, m]] ) [m/[g A B]] [m/[g A B], k/[g A m], l/[g A m]]
Konvertering till konjunktiv normalform 1. Eliminera implikation 2. Reducera negationernas räckvidd xp(x) x P(x), xp(x) x P(x), x P(x) xp(x), x P(x) xp(x) 3. Standardisera variabler 4. Eliminera existenskvantifierare, skolemisering 5. Konvertera till prenex form 6. Skippa prefix Allt är allkvantifierat 7. Konvertera till konjunktion av disjunktioner 8. Bilda klausuler Implicit konjuktion mellan klausuler 9. Döp om variabler
Skolemisering Ersätter existenskvanifierade variabler med konstant, eller funktion som vid behov tar fram den individ för vilken uttrycket gäller Ex. xp(x) P(S) där S är en skolemkonstant och står för den individ S för vilken P(x) Ex. Alla har ett hjärta x Person(x) y Hjärta(y) Har(x,y) Skolemkonstant ger x Person(x) Hjärta(S) Har(x,S), dvs alla har samma hjärta vilket är fel Inför skolemfunktion, g(x), som beror av allkvantifierade variabeln x ger x Person(x) Hjärta(g(x)) Har(x,g(x))
Exempel, 1 x {P(x) ( y[p(y) P(f(x, y))] y[q(x, y) P(y)])} 1 Eliminera implikation x { P(x) ( y[ P(y) P(f(x, y))] y[ Q(x, y) P(y)])} 2 Reducera negationernas räckvidd x { P(x) ( y[ P(y) P(f(x, y))] y[q(x, y) P(y)])} 3 Standardisera variabler x { P(x) ( y[ P(y) P(f(x, y))] z[q(x, z) P(z)])} 4 Eliminera existenskvantifierare x { P(x) ( y[ P(y) P(f(x, y))] [Q(x, g(x)) P(g(x))])} 5 Konvertera till prenex form x y{ P(x) ([ P(y) P(f(x, y))] [Q(x, g(x)) P(g(x))])}
Exempel, 2 6 Skippa prefix { P(x) ([ P(y) P(f(x, y))] [Q(x, g(x)) P(g(x))])} 7 Konvertera till konjunktion av disjunktioner [ P(x) P(y) P(f(x, y))] [ P(x) Q(x, g(x))] [ P(x) P(g(x))] 8 Bilda klausuler P(x) P(y) P(f(x, y)) P(x) Q(x, g(x)) P(x) P(g(x)) 9 Döp om variabler P(x) P(y) P(f(x, y)) P(z) Q(z, g(z)) P(w) P(g(w))
Exempel 1. Bertil var pudel 2. Bertil föddes 1955 3. Ingen hund lever längre än 50 år 4. Pudlar är hundar 5. Alla hundar är däggdjur 6. Nu är det 2018 7. Visa att det finns döda pudlar nu
Exempel, översätt 1. Bertil var pudel Pudel(Bertil) 2. Bertil föddes 1955 Född(Bertil, 1955) 3. Ingen hund lever längre än 50 år x,s,t Hund(x) Född(x, s) störreän(t-s, 50) Död(x, t) 4. Pudlar är hundar x Pudel(x) Hund(x) 5. Alla hundar är däggdjur x Hund(x) Däggdjur(x) 6. Nu är det 2018 Nu = 2018 7. Det finns döda pudlar nu x Pudel(x) Död(x, Nu)
Exempel, konvertera 1 1. Pudel(Bertil) 2. Född(Bertil, 1955) 3. x,s,t Hund(x) Född(x, s) störreän(t-s, 50) Död(x, t) (Hund(x) Född(x, s) störreän(t-s, 50)) Död(x,t) Hund(x) Född(x, s) störreän(t-s, 50) Död(x,t) 4. s Pudel(x) Hund(x) Pudel(x) Hund(x) 5. s Hund(x) Däggdjur(x) Hund(x) Däggdjur(x) 6. Nu = 2018 7. x Pudel(x) Död(x, Nu) Negera och konvertera x Pudel(x) Död(x, Nu) x (Pudel(x) Död(x, Nu)) Pudel(x) Död(x, Nu)
Exempel, konvertera 2 1. Standardisera variabler 2. Pudel(Bertil) 3. Född(Bertil, 1955) 4. Hund(x) Född(x, s) störreän(t-s, 50) Död(x,t) 5. Pudel(p) Hund(p) 6. Hund(h) Däggdjur(h) 7. Nu = 2018 8. Pudel(w) Död(w, Nu)
Resolutionsstrategier Ta bara satser med komplement Föredra små resolventer Unit preference Set of support Behåll en bra delmängd. Börja med slutsatsen Eliminera satser som subsumeras av andra
Resolutionsexempel (7) (1) {w/bertil} 8. Död(Bertil, Nu) 1. Pudel(Bertil) 2. Född(Bertil, 1955) 3. Hund(x) Född(x, s) störreän(t-s, 50) Död(x,t) 4. Pudel(p) Hund(p) 5. Hund(h) Däggdjur(h) 6. Nu = 2018 7. Pudel(w) Död(w, Nu) (6) {Nu/2018} 9. Död(Bertil, 2018) (3) {x/bertil, t/2018} 10. Hund(Bertil) Född(Bertil, s) störreän(2018-s, 50)
Resolutionsexempel, 2 10. Hund(Bertil) Född(Bertil, s) störreän(2018-s, 50) 1. Pudel(Bertil) 2. Född(Bertil, 1955) 3. Hund(x) Född(x, s) störreän(t-s, 50) Död(x,t) 4. Pudel(p) Hund(p) 5. Hund(h) Däggdjur(h) 6. Nu = 2018 7. Pudel(w) Död(w, Nu) (2) {s/1955} (4) 11. Hund(Bertil) störreän(2018-1955, 50) (1) {p/bertil} 12. Pudel(Bertil) störreän(2018-1955, 50) störreän(60,50) T F Motsägelse, alltså Det finns en död pudel nu
Ontologi Kategorier och objekt Fysiska objekt Sammansatta objekt Mått och enheter Handlingar, situationer och händelser Situationskalkyl, Frameproblemet Tid, rum och förändring Händelser och processer Tidsintervall Mentala objekt och uppfattningar
Toppontologi Allt Abstrakta Objekt Generaliserade händelser Mängder Tal Repr. Objekt Intervall Platser Fysiska objekt Processer Kategorier Meningar Mått Händelser Saker Materia Tider Vikter Djur Agenter Fast Flytande Gas Människor
Exempel på generella ontologier CYC Stort (239000 koncept) AI-KR projekt Logikbaserat representationsspråk CycL WORDNET Stor (117000 synsets) lexikal taxonomi Baserat på psykolingvistiska studier
CYC Thing IndividualObject Intangible RepresentedThing Event Stuff IntangibleObject Collection Process IntangibleStuff AtributeValue Relationship Slot
WORDNET {thing, entity} {living thing, organism} {non-living thing, object} {plant, flora} {animal, fauna} {artifact} {food} {person, human being} {natural object} {substance}
Kategorier Resonerar inte om objekt utan om koncept, kategorier Ex Guld, inte Guld32 Gör predikat till objekt i språket Ex Guld refererar till kategorin Guld, x Guld betyder att x är guld. Kallas reification kan skriva t.ex. Färg(Guld) = gul Kategorier ärver egenskaper Ex Guld Ädelmetall betyder att Guld är en subklass av Ädelmetall och ärver alla dess egenskaper, t.ex. att vara värdefull Ex x, x Guld Glittrar(x) Dyrt(x)
Händelser Situationskalkyl är diskret. Behöver en kontinuerlig variant Ex. At(Wumpus, Gold) säger inget om när det är sant T(At(Wumpus, Gold), t) säger att det är sant vid tidpunkten t Andra predikat: Happens(e, i) säger att e händer under intervallet i Initiates(e, f, t) säger att e får f att starta vid tiden t Terminates(e, f, t) säger att e får f att avslutas vid tiden t Clipped(f, i) säger att f slutar att vara sant i intervallet i Restored(f, i) säger att f blir sant nångång under intervallet i
Tid, intervall och handlingar Allens temporala logik Definierar ett intervall i Intervall(i) Duration(i) = (Time(End(i))-Time(Start(i))) Huvudsakligen fyra olika relationer
Temporala relationer Meet(i, j) i,j Meet(i,j) Time(End(i)) = Time(Start(j)) i j Before(i,j) After(j,i) i,j Before(i,j) Time(End(i)) < Time(Start(j)) i j During(i,j) i,j During(i,j) Time(Start(j)) Time(Start(i)) Time(End(j)) Time(End(i)) i j Overlap(i,j) i,j Overlap(i,j) k During(k,i) During (k,j) i j
Strukturerad representation Frames och semantiska nät Egenskapsärvning Default och undantag Multipel ärvning Förändring, ickemonotonicitet
Strukturerad representation Baserat på associationsteorier, t.ex. Quillian & Collins 1969 Experiment. Ställer olika frågor, t.ex.: Är undulaten en fågel? Kan undulater flyga? Kan undulater sjunga? Resultat Kan undulater flyga? tar längre tid att besvara än Kan undulater sjunga? Hypotes Människor lagrar information så abstrakt som möjligt Alla fåglar flyger men inte alla fåglar sjunger
Semantiska nät Djur har Skinn Vingar har är ett är ett Fjädrar har Fågel kan flyga sant Fisk är en är en Undulat kan sjunga sant Struts kan flyga falskt
Ärvningshierarki ISA Levande varelse Lever: T ISA Djur RörSig: T ISA ISA Fågel Flyger: T Ben: 2 ISA ISA Däggdjur Ben: 4 ISA ISA Undulat Sjunger: T Emu Flyger: F Elefant Färg: grå Vikt: 3500 Hund Vikt: 5 Delfin Ben: 0 Vikt: 500 Instans Instans Instans Instans Instans Putte Vän: Vän Olga Clyde Färg: vit Bertil Vikt: 10 Typ: Pudel Flipper
Attribut-värdestrukturer Semantiska nät och frames lagrar kunskapen i attributvärdestrukturer Attributen kan också ha egenskaper, t.ex.: Tillåtna klasser, ex attributet Inkomst är inte intressant för objekt av typen Emu Värdebegränsningar, ex Vikt(Hund) < 500 kg Default Regler för ärvning Procedurer för att räkna ut värden, ex för att räkna ut åldern Kopplar procedurer (demoner) till attributen. Kallas också procedural attachements
Multipel ärvning Fågel Flyger: T Ben: 2 ISA ISA Fågel Flyger: T Ben: 2 ISA ISA Emu Flyger: F ISA Australisk Emu Sällskapsfågel Emu Flyger: F Sällskapsfågel ISA Västkust Emu Instans Instans Olga Instans Olga Instans Väljer den mest specifika Inferensavståndet, dvs undersöker om det finns på vägen
Semantiska webben Ge mening (semantik) åt webbelement Mer än bara formattaggar Dela data mellan datorer Betydelsen av data begripligt för datorer Metadataannoteringar som beskriver webbelement Behöver enas om semantiska kategorier och format Ontologier OWL (Web Ontology Language) W3C standard
Formalismer Beskriva något istället för att bara namnge En hierarki XML, syntax <namn attribut= värde >innehåll</namn> RDF, beskriver tripler (subjekt predikat objekt) RDF(S), RDF med klasser OWL, formell semantik Verktyg döljer XML-detaljerna Protege T.ex.: Person vs <http://www.semanticweb.org/arnjo/ontologies/2018/11/personer#person>
OWL Objektorienterat Instanser/objekt/individer Klasser/typer/koncept Egenskaper/relationer/roller Person Pia Gert Per Pål bor harhusdjur harhusdjur bor harhusdjur bor Sverige bor Putte Clyde Flipper Danmark Kina bor Land Djur Olga
OWL Fördefinierade klasskonstruktorer intersectionof, unionof, complementof, oneof, somevaluesfrom, allvaluesfrom, mincardinality, maxcardinality Fördefinierade axiom subclassof, equivalentclass, disjointwith, sameindividualas, differentfrom, subpropertyof, equivalentproperty, inverseof, transitiveproperty, functionalproperty, inversefunctionalproperty
Hantering av osäker kunskap Icke-standardlogik. Inte en teori utan många Rivaler: tar bort teorem, t.ex. A v A Utvidgningar: lägger till teorem som ofta är oformulerbara i FOPL
Icke-standardlogik Rivaler Probabilistisk logik logik baserad på sannolikhet Flervärd logik inför fler sanningsvärden Fuzzy logic sannolikhet att höra till en mängd Utvidgningar Modal logik L: nödvändigt sann M: möjligen sann Temporal logik tidslogik Icke-monoton logik tillåter satser som inte bevisats
Sammanfattning, 1 Introduktion Kunskapsbaserade agenter Modelleringsparadigm Wumpus-världen Satslogik Syntax Uttryck som beskriver världen Logiska konnektiv Logiska ekvivalenser Semantik Uttryckens betydelse En mängd modeller Översättning till logik Modeller och tolkning Inferensregler Ger nya beskrivningar av världen Naturlig deduktion Framåtinferens Bakåtinferens Resolution Metaspråk Sundhet och fullständighet
Sammanfattning, 2 Predikatlogik, FOPL Syntax Översättning till FOPL Semantik Modeller Inferens Situationskalkyl Frameproblemet Succesor-state-axiom Konvertering till konjunktiv normalform Resolution, Unifiering Ontologi Kategorier Tid, temporala relationer Händelser Strukturerad representation/semantiska nät Ärvning Icke-standardlogik