Ramproblem - Frame problem

I artificiell intelligens , den ram problem beskriver ett problem med att använda första ordningens logik (FOL) för att uttrycka fakta om en robot i världen. Att representera en robots tillstånd med traditionell FOL kräver användning av många axiom som helt enkelt innebär att saker i miljön inte förändras godtyckligt. Hayes beskriver till exempel en " blockvärld " med regler om att stapla ihop block. I ett FOL -system krävs ytterligare axiom för att dra slutsatser om miljön (till exempel att ett block inte kan ändra position om det inte flyttas fysiskt). Ramproblemet är problemet med att hitta adekvata samlingar av axiom för en livskraftig beskrivning av en robotmiljö.

John McCarthy och Patrick J. Hayes definierade detta problem i sin artikel från 1969, Some Philosophical Problems from the Standpoint of Artificial Intelligence . I detta dokument, och många som kom efter, var det formella matematiska problemet en utgångspunkt för mer allmänna diskussioner om svårigheten med kunskapsrepresentation för artificiell intelligens. Frågor som hur man ger rationella standardantaganden och vad människor anser vara sunt förnuft i en virtuell miljö. Senare fick termen en bredare mening i filosofin , där den formuleras som problemet med att begränsa de övertygelser som måste uppdateras som svar på handlingar. I det logiska sammanhanget specificeras åtgärder typiskt av vad de ändrar, med det implicita antagandet att allt annat (ramen) förblir oförändrat.

Beskrivning

Ramproblemet uppstår även i mycket enkla domäner. Ett scenario med en dörr, som kan vara öppen eller stängd, och ett ljus, som kan vara på eller av, representeras statiskt av två propositioner och . Om dessa förhållanden kan förändras, representeras de bättre av två predikat och det beror på tiden; sådana predikat kallas flytande . En domän där dörren är stängd och ljuset släckt vid tid 0, och dörren öppnas vid tidpunkt 1, kan direkt representeras i logik av följande formler:

De två första formlerna representerar utgångsläget; den tredje formeln representerar effekten av att genomföra åtgärden att öppna dörren vid tidpunkten 1. Om en sådan åtgärd hade förutsättningar, till exempel att dörren skulle låsas upp, skulle den ha representerats av . I praktiken skulle man ha ett predikat för att ange när en åtgärd utförs och en regel för att specificera effekterna av åtgärder. Artikeln om situationskalkylen ger mer detaljer.

Även om de tre formlerna ovan är ett direkt uttryck i logiken för det som är känt, räcker det inte med att dra konsekvenser korrekt. Även om följande villkor (som representerar den förväntade situationen) överensstämmer med de tre formlerna ovan, är de inte de enda.

   

En annan uppsättning villkor som överensstämmer med de tre formlerna ovan är faktiskt:

   

Ramproblemet är att det bara att specificera vilka villkor som ändras av åtgärderna inte innebär att alla andra villkor inte ändras. Detta problem kan lösas genom att lägga till de så kallade "ramaxiomen", som uttryckligen anger att alla villkor som inte påverkas av åtgärder inte ändras när åtgärden utförs. Till exempel, eftersom den åtgärd som utförs vid tid 0 är att öppna dörren, skulle ett ramaxiom säga att ljusets status inte ändras från tid 0 till tid 1:

Ramproblemet är att ett sådant ramaxiom är nödvändigt för varje par av handlingar och tillstånd så att åtgärden inte påverkar tillståndet. Med andra ord är problemet att formalisera en dynamisk domän utan att uttryckligen specificera ramaxiomen.

Den lösning som McCarthy föreslog för att lösa detta problem innebär att man antar att en minimal mängd tillståndsförändringar har inträffat; denna lösning formaliseras med hjälp av ramarna för omskrivning . Den Yale skytte problem , visar dock att denna lösning är inte alltid korrekt. Alternativa lösningar föreslogs sedan, innefattande predikatfyllnad, flytande ocklusion, axiom för efterföljande tillstånd , etc .; de förklaras nedan. I slutet av 1980 -talet löstes ramproblemet enligt McCarthy och Hayes definition. Även efter det användes dock termen "ramproblem" fortfarande, delvis för att hänvisa till samma problem men under olika inställningar (t.ex. samtidiga åtgärder), och delvis för att hänvisa till det allmänna problemet med att representera och resonera med dynamisk domäner.

Lösningar

Följande lösningar visar hur ramproblemet löses i olika formalismer. Formerna i sig presenteras inte i sin helhet: det som presenteras är förenklade versioner som är tillräckliga för att förklara hela lösningen.

Flytande ocklusionslösning

Denna lösning föreslogs av Erik Sandewall , som också definierade ett formellt språk för specifikationen av dynamiska domäner; därför kan en sådan domän först uttryckas på detta språk och sedan automatiskt översättas till logik. I den här artikeln visas bara uttrycket i logik och endast på det förenklade språket utan åtgärdsnamn.

Motivet för denna lösning är att inte bara representera värdet av förhållanden över tid, utan också om de kan påverkas av den senast genomförda åtgärden. Det senare representeras av ett annat tillstånd, kallat ocklusion. Ett tillstånd sägs vara ockluderat vid en given tidpunkt om en åtgärd just har utförts som gör villkoret sant eller falskt som en effekt. Ocklusion kan ses som "tillstånd att ändra": om ett villkor är ockluderat befrias det från att lyda tröghetsbegränsningen.

I det förenklade exemplet på dörren och ljuset kan ocklusion formaliseras av två predikat och . Motiveringen är att ett villkor endast kan ändra värde om motsvarande ocklusionspredikat är sant vid nästa tidpunkt. I sin tur är ocklusionspredikatet sant endast när en åtgärd som påverkar tillståndet utförs.

I allmänhet gör varje handling som gör ett villkor sant eller falskt också motsvarande ocklusionspredikat sant. I detta fall är det sant, vilket gör föregångaren till den fjärde formeln ovan falsk för ; därför den begränsning som inte håller för . Därför kan ändra värde, vilket också är det som tillämpas av den tredje formeln.

För att detta villkor ska fungera måste ocklusionspredikat vara sanna endast när de görs sanna som en effekt av en handling. Detta kan uppnås antingen genom omskrivning eller genom att predikatet slutförs. Det är värt att notera att ocklusion inte nödvändigtvis innebär en förändring: till exempel att genomföra åtgärden att öppna dörren när den redan var öppen (i formaliseringen ovan) gör predikatet sant och gör sant; Men har inte förändrats värde, eftersom det var sant redan.

Predikat färdigställande lösning

Denna kodning liknar den flytande ocklusionslösningen, men de ytterligare predikaten anger förändring, inte tillstånd att ändra. Till exempel representerar det faktum att predikatet ändras från tid till . Som ett resultat ändras ett predikat om och endast om motsvarande förändringspredikat är sant. En handling resulterar i en förändring om och bara om den gör ett villkor som tidigare var falskt eller vice versa.

Den tredje formeln är ett annat sätt att säga att dörren öppnas genom att öppna dörren. Just det står att öppning av dörren ändrar dörrens tillstånd om den tidigare stängts. De två sista villkoren anger att ett villkor ändrar värde vid tidpunkten om och endast om motsvarande förändringspredikat är sant vid tidpunkten . För att slutföra lösningen måste de tidpunkter då förändringspredikaten är sanna vara så få som möjligt, och detta kan göras genom att tillämpa predikatavslutning på reglerna som specificerar effekterna av åtgärder.

Efterträdare tillstånd axiom lösning

Värdet av ett villkor efter genomförandet av en åtgärd kan bestämmas av att villkoret är sant om och endast om:

  1. handlingen gör villkoret sant; eller
  2. villkoret var tidigare sant och åtgärden gör det inte falskt.

Ett efterföljande statligt axiom är en formalisering i logiken för dessa två fakta. Till exempel, om och är två villkor som används för att markera att åtgärden som utfördes vid tidpunkten var att öppna respektive stänga dörren, kodas det löpande exemplet enligt följande.

Denna lösning är centrerad kring värdet av förhållanden, snarare än effekterna av handlingar. Med andra ord finns det ett axiom för varje tillstånd, snarare än en formel för varje handling. Förutsättningar för handlingar (som inte finns i detta exempel) formaliseras av andra formler. De efterföljande tillståndsaxiomen används i varianten till lägesberäkningen som föreslås av Ray Reiter .

Flytande kalkylösning

Den flytande kalkylen är en variant av lägesberäkningen. Det löser ramproblemet genom att använda första ordningens logiska termer , snarare än predikat, för att representera staterna. Att omvandla predikat till termer i första ordningens logik kallas reification ; den flytande kalkylen kan ses som en logik där predikat som representerar tillståndets tillstånd reifieras.

Skillnaden mellan ett predikat och en term i första ordningens logik är att en term är en representation av ett objekt (möjligen ett komplext objekt som består av andra objekt), medan ett predikat representerar ett villkor som kan vara sant eller falskt när det utvärderas över ett given uppsättning villkor.

I den flytande kalkylen representeras varje möjligt tillstånd av en term som erhålls genom sammansättning av andra termer, var och en representerar de villkor som är sanna i tillstånd. Till exempel representeras det tillstånd där dörren är öppen och lampan är tänd med termen . Det är viktigt att lägga märke till att ett begrepp inte är sant eller falskt i sig, eftersom det är ett objekt och inte ett villkor. Med andra ord, termen representerar ett möjligt tillstånd, och betyder inte i sig att detta är det nuvarande tillståndet. Ett separat villkor kan anges för att specificera att detta faktiskt är staten vid en given tidpunkt, t.ex. betyder att detta är staten vid en tidpunkt .

Lösningen på ramproblemet som ges i den flytande kalkylen är att specificera effekterna av åtgärder genom att ange hur en term som representerar staten ändras när åtgärden utförs. Till exempel representeras åtgärden att öppna dörren vid tidpunkt 0 genom formeln:

Åtgärden att stänga dörren, vilket gör ett villkor falskt istället för sant, representeras på ett något annorlunda sätt:

Denna formel fungerar förutsatt att lämpliga axiom ges om och t.ex. att en term som innehåller samma villkor två gånger inte är ett giltigt tillstånd (är till exempel alltid falskt för varje och ).

Händelseberäkningslösning

Den händelse kalkyl använder termer för att representera fluents, liksom flytande kalkyl, men har också axiom begränsar värdet av fluents, som successionsstat axiom. I händelseberäkningen verkställs tröghet med formler som anger att ett flytande är sant om det har varit sant vid en given tidigare tidpunkt och ingen åtgärd som ändrat det till falskt har utförts under tiden. Predikatfyllnad krävs fortfarande i händelseberäkningen för att erhålla att en flytande görs sann endast om en handling som gör den sann har utförts, men också för att erhålla att en åtgärd hade utförts endast om det uttryckligen anges.

Standardlogiklösning

Ramproblemet kan betraktas som problemet med att formalisera principen om att "allt som standard antas förbli i det tillstånd där det är" ( Leibniz , "En introduktion till ett hemligt encyklopedi", c . 1679). Denna standard, ibland kallad commonsense law of tröghet , uttrycktes av Raymond Reiter i standardlogik :

(om det är sant i situationen , och det kan antas att det förblir sant efter att åtgärden har utförts , kan vi dra slutsatsen att det förblir sant).

Steve Hanks och Drew McDermott hävdade, på grundval av deras Yale -skyttexempel , att denna lösning på ramproblemet är otillfredsställande. Hudson Turner visade dock att det fungerar korrekt i närvaro av lämpliga ytterligare postulat.

Svarsset programmeringslösning

Motparten till standardlogiklösningen på språket i svarssetprogrammering är en regel med stark negation :

(om det är sant vid tidpunkten , och det kan antas att det förblir sant i tid , då kan vi dra slutsatsen att det förblir sant).

Separationslogiklösning

Separationslogik är en formalism för att resonera kring datorprogram med hjälp av formulärets specifikationer före/efter . Separationslogik är en förlängning av Hoare -logik som är inriktad på resonemang om mutabla datastrukturer i datorminne och andra dynamiska resurser, och den har en speciell koppling *, uttalad "och separat", för att stödja oberoende resonemang om osammanhängande minnesregioner.

Separationslogiken använder en tät tolkning av pre/post -specifikationer, som säger att koden endast kan komma åt minnesplatser som garanteras existera av förutsättningen. Detta leder till att den viktigaste slutsatsregeln för logiken, ramregeln, är sund

Ramregeln gör att beskrivningar av godtyckligt minne utanför kodens fotavtryck (åtkomst till minne) kan läggas till i en specifikation: detta gör att den ursprungliga specifikationen endast kan koncentrera sig på fotavtrycket. Till exempel slutsatsen

fångar den koden som sorterar en lista x avsorterar inte en separat lista y, och den gör detta utan att nämna y alls i den första specifikationen ovanför raden.

Automatisering av ramregeln har lett till betydande ökningar av skalbarheten för automatiserade resonemangstekniker för kod, som så småningom distribuerades industriellt till kodbaser med tio miljoner rader.

Det verkar finnas en viss likhet mellan separationslogiklösningen för ramproblemet och den för den flytande kalkylen som nämns ovan.

Handlingsbeskrivningsspråk

Handlingsbeskrivningsspråk undviker ramproblemet snarare än att lösa det. Ett handlingsbeskrivningsspråk är ett formellt språk med en syntax som är specifik för att beskriva situationer och handlingar. Till exempel att åtgärden gör att dörren öppnas om den inte är låst uttrycks av:

orsakar om

Semantiken i ett handlingsbeskrivningsspråk beror på vad språket kan uttrycka (samtidiga handlingar, fördröjda effekter, etc.) och är vanligtvis baserat på övergångssystem .

Eftersom domäner uttrycks på dessa språk snarare än direkt i logik, uppstår ramproblemet bara när en specifikation som ges i en åtgärdsbeskrivningslogik ska översättas till logik. Vanligtvis ges dock en översättning från dessa språk för att besvara uppsättningsprogrammering snarare än första ordningens logik.

Se även

Anteckningar

Referenser

externa länkar