460 likes | 615 Views
Agententechnologie Les 3: deductief redeneren. dr. Patrick De Causmaecker. Logisch programmeren. Eerste orde logica Voorbeeld: Prolog Voorbeeld: Regelbanken Voorbeeld: Constraint Satisfaction. Eerste orde logica. Bevat enkel predicaten over individuen (atomen) en niet over predicaten.
E N D
AgententechnologieLes 3: deductief redeneren dr. Patrick De Causmaecker
Logisch programmeren • Eerste orde logica • Voorbeeld: Prolog • Voorbeeld: Regelbanken • Voorbeeld: Constraint Satisfaction
Eerste orde logica • Bevat enkel predicaten over individuen (atomen) en niet over predicaten. • Quantoren verbinden enkel individuen • Paradox van Grelling • Deze paradox kan niet uitgedrukt worden in eerste orde logica, maar is moeilijk te vermijden in hogere orde logica’s. • If an adjective truly describes itself, call it “autological", otherwise call it "heterological". For example, "polysyllabic" and "English" are autological, while "monosyllabic" and "pulchritudinous" are heterological. Is "heterological" heterological? If it is, then it isn't; if it isn't, then it is.”
Voorbeeld: Prolog • http://www.ugosweb.com/jiprolog/
father(terach,abraham). father(terach,nachor). father(terach,haran). father(abraham,isaac). father(haran,lot):-!. father(haran,milcah). mother(sara,isaac). male(terach). male(abraham). male(nachor). male(haran). male(isaac). male(lot). female(sarah). female(milcah). female(yiscah). likes(X,pome). son(X,Y):-father(Y,X),male(X). daughter(X,Z):-father(Z,X),female(X). granfather(X,Z):-father(X,Y),father(Y,Z).
/******************************************* Hanoi's Towers * hanoi(height, tower1, tower2, tower3, moves) * * Example: * hanoi(3, a,b,c, X). * *******************************************/ hanoi(1, A,B,C,[[A,B]]):-!. hanoi(N, A,B,C,Moves):- N1 is N - 1, hanoi(N1, A,C,B,Ms1), hanoi(N1, C,B,A,Ms2), append(Ms1, [[A,B]|Ms2], Moves), !.
% generate a list of random numbers genlist(0, []):- !. genlist(N, [X|Rest]):- N1 is N - 1, xcall("RandomNumberGen3", [0, 100, X]), genlist(N1, Rest), !.
Voorbeeld: Regelbanken http://www.expertise2go.com/download/demo.html
REM Test knowledge base RULE [Is the battery dead?] If [the result of switching on the headlights] = "nothing happens" or [the result of trying the starter] = "nothing happens" Then [the recommended action] = "recharge or replace the battery" RULE [Is the car out of gas?] If [the gas tank] = "empty" Then [the recommended action] = "refuel the car"
RULE [Is the battery weak?] If [the result of trying the starter] : "the car cranks slowly" "the car cranks normally" and [the headlights dim when trying the starter] = true and [the amount you are willing to spend on repairs] > 24.99 Then [the recommended action] = "recharge or replace the battery"
RULE [Is the car flooded?] If [the result of trying the starter] = "the car cranks normally" and [a gas smell] = "present when trying the starter" Then [the recommended action] = "wait 10 minutes, then restart flooded car" RULE [Is the gas tank empty?] If [the result of trying the starter] = "the car cranks normally" and [a gas smell] = "not present when trying the starter" Then [the gas tank] = "empty" @ 90
PROMPT [the result of trying the starter] Choice CF "What happens when you turn the key to try to start the car?" "the car cranks normally" "the car cranks slowly" "nothing happens" PROMPT [a gas smell] MultChoice CF "The smell of gasoline is:" "present when trying the starter" "not present when trying the starter"
PROMPT [the result of switching on the headlights] MultChoice CF "The result of switching on the headlights is:" "they light up" "nothing happens" PROMPT [the headlights dim when trying the starter] YesNo CF "Do the headlights dim when you try the starter with the lights on?" x
PROMPT [the gas tank] MultChoice CF "According to the fuel gauge, the gas tank is:" "empty" "not empty" PROMPT [the amount you are willing to spend on repairs] Numeric CF "How much are you willing to spend on repairs? (enter value 0->500)" "0" "500.0" GOAL [the recommended action] MINCF 80
Voorbeeld: Constraint Satisfaction http://kti.ms.mff.cuni.cz/~bartak/constraints/index.html
Deductief redeneren • “Intelligent gedrag kan bereikt worden door het systeem een symbolische voorstelling van zijn omgeving en zijn gewenst gedrag te geven en het deze voorstelling syntactisch te laten manipuleren” • De symbolische voorstelling is hier een verzameling logische formules, en de manipulatie b estaat uit afleiding, of het bewijzen van stellingen.
Interp: Pixel manipulatie • Kennisbank: geloof: • afst(mij,d1) = 90 cm • deur(d1) D020 Plan STOP Actie REMMEN!
Twee problemen • Transductie • Het voldoende snel omzetten van de waarneming van de wereld in een gepaste symbolische beschrijving • Representatie/redeneren • Het symbolisch voorstellen van de informatie en de agenten deze laten manipuleren en erover laten redeneren, opnieuw voldoende snel.
AI benadering • Waarneming: • Visie, spraak, natuurlijke taal begrijpen, leren,… • Representatie • Kennisrepresentatietalen, automatisch redeneren, automatisch plannen,… • Er is veel werk verricht, maar men staat nog niet echt ver
Agenten • Stel dat we een theorie van agenten hebben, hoe die zich gedragen, hoe ze hun doelen bepalen, hoe ze hun gedrag optimaliseren… • Normaal beschouwen we een dergelijke theorie als een uitgangspunt, dat we gaandeweg verfijnen om tot een software-oplossing te komen. • Kunnen we het zo ver drijven dat de theorie eigenlijk samenvalt met het programma?
Agenten als stellingbewijzers • De inwendige toestand van een agent bestaat uit een databank van eerste orde predikaten: • Deze databank bevat alle feiten die de agent gelooft in zijn omgeving (beliefs) Open(valve221) Temperature(reactor4726,321) Pressure(tank776,28)
Agenten als stellingbewijzers • Het feit dat we van een geloof spreken duidt erop dat we geen exacte, volledige kennis van de werkelijkheid kunnen onderstellen. De sensoren kunnen fouten maken, de gegevens kunnen te laat geregistreerd zijn,… • Bovendien kan de interpretatie van de formule Open(valve221) iets totaal anders betekenen dan wij erin zien.
Agenten als stellingbewijzers • Formeel • L = {alle eerste-orde predikaten} • D = (L) = {alle L databanken} • , 1, 2,… D • = {de afleidingsregels van de agent} betekent dat de formule uit L kan bewezen worden vanuit de databank met behulp van de afleidingsregels .
Agenten als stellingbewijzers • De agent bestaat nu uit • De perceptie functie: • see : S -> Per • De aanpassingsfunctie voor de interne toestand: • next : D Per -> D • En een meer bepaalde actiefunctie: • action : D -> Ac • De actiefunctie kunnen we nu beter definiëren
Functie: Actieselectie door bewijsvoering • Function action( :D) return een actie Ac • begin • voor elke Ac • indien Do() dan return • einde voor • voor elke Ac • indien Do() dan return • einde voor • return null • einde
Stofzuiger: domein en de oude wereld • De wereld wordt beschreven door: • De oude informatie in de wereld (kan gewijzigd worden): In(x,y) Dirt(x,y) Facing(d) old() = {P(t1,…,tn}|P {In,Dirt,Facing} en P(t1,…,tn) }}
Stofzuiger: het genereren van nieuwe kennis • Een functie new genereert nieuwe kennis: • new : D Per -> D (oefening) • Hiermee is het mogelijk om next tedefiniëren • next(,p) = ( \old()) new(,p)
Stofzuiger: de regels • De afleidingsregels hebben de vorm • (…) (…) • “Als overeenkomt met de databank van de agent, dan kan besloten worden.” • Regel 1:werken • In(x,y) Dirt(x,y) Do(suck) • Regel 2:bewegen • In(0,0) Facing(north) Dirt(0,0) Do(forward) • In(0,1) Facing(north) Dirt(0,0) Do(forward) • In(0,2) Facing(north) Dirt(0,0) Do(turn) • In(0,2) Facing(east) Do(forward)
Conclusies • Dit is eerder onpraktisch… • Stel dat de agent zijn optimale actie probeert te bepalen. • Dit kost hem een zekere tijd. • In dit tussentijd kan de wereld veranderd zijn… • “calculative rationality”: de agent kiest een actie die optimaal zou geweest zijn toen de berekening begon. • Dit is niet steeds aanvaardbaar.
Verder problemen • De logische benadering is elegant, handig, maar resulteert in trage uitvoering. • De see functie bevindt zich in een slecht begrepen gebied van AI. • Het beschrijven van dit eenvoudige procedurale probleem is reeds ingewikkeld.
Agent georiënteerd programmeren: Agent0 (Shoham 1993) • Gebruik van de “mentalistische” begrippen geloof, wens en intentie (Desire, Belief, Intention, DBI) als abstractie mechanismen om de eigenschappen van complexe systemen te beschrijven. • In Agent0 is een agent gedefinieerd in termen van een verzameling vaardigheden (capabilities), een initiële verzameling geloofspunten (beliefs) en een initiële verzameling verbintenissen (commitments), samen met een verzameling regels om verbintenissen af te leiden (commitment rules).
Agent0 • Een commitment rule bestaat uit • Een boodschap voorwaarde • Een mentale voorwaarde • Een actie • De boodschapvoorwaarde wordt vergeleken met de boodschappen die de agent gekregen heeft en mentale voorwaarde wordt vergeleken met de geloofspunten van de agent. Indien ze overeenkomen, dan verbindt de agent zich tot de actie.
Agent0 • Er zijn twee soorten acties: • Communicatieve, die resulteren in uitgezonden boodschappen • Private die overeenkomen met intern uitgevoerde subroutines. • Er zijn drie soorten boodschappen: • Requests om een actie uit te laten voeren • Unrequests om een actie te stoppen • Inform om informatie over te brengen
COMMIT( (agent, REQUEST, DO(time, action)) ;;; boodschapvoorwaarde (B,[now, Friend agent] AND CAN(self, action) AND NOT [time, CMT(self, anyaction)]), ;;; mentale voorwaarde self, DO(time,action) )
messages in Initialize Beliefs Update beliefs Commitments Update commitments Abilities Execute messages out internal actions
Concurrent MetateM (Michael Fisher 1994) • Directe uitvoering van logische formules • Een systeem bestaat uit een aantal gelijktijdig uitvoerende agenten die met hun collega’s kunnen communiceren door asynchronische broadcasting. • Ze worden geprogrammeerd met behulp van een temporale logica • Men kan aantonen dat de procedure die een agent uitvoert correct is en dat, indien mogelijk, de agent aan zijn specificatie zal voldoen.
Agenten in MetateM • bestaan uit: • Een interface (interactie met de andere agenten) • Een engine die definiëert hoe een agent zich zal gedragen. • De interface bevat: • Een agent-id, de unieke naam van de agent • Een verzameling symbolen die vastleggen welke boodschappen er kunnen aanvaard worden (environment propositions) • Een verzameling symbolen die gebruikt worden om boodschappen te verzenden (component propositions)
Voorbeeld • De stack agent: • Stack(pop, push) [popped, full] • Agent id: stack • Environment propositions: {pop,push} • Component propositions: {popped, full} • Als een boodschap verstuurd wordt die niet met de interface van de agent overeenkomt negeert hij deze.
De engine van MetateM • Algemene vorm: • Antecedent over het verleden -> consequent over heden en toekomst • De tijdelijke connectieven zijn: • (morgen),(gisteren)(ooit in de toekomst),(ooit in het verleden),(altijd vanaf nu), (altijd in het verleden), U( tot ), S( vanaf ), Z( vanaf of altijd al) • En dan is er nog start.
Het proces • Pas de geschiedenis van de agent aan op basis van de ontvangen boodschappen • Zoek regels die nu vuren • Voer deze regels uit, samen met de verbintenissen uit vorige cycli. (er zijn meerdere mogelijkheden, dit houdt een keuze in) • Ga naar 1
rp(ask1,ask2)[give1,give2]: • ask1 => give1; • ask2 =>give2; Start => (give1 give2) rc1(give1)[ask1]: start => ask1; • ask1 => ask1; rc2(ask1,give2)[ask2]: • (ask1 ask2) => ask2;