Modelowanie świata dynamicznego 25 maja 2009
Problem 1. Formalizacja świata zmieniającego się dynamicznie pod wpływem wykonywanych działań (akcji). 2. Wnioskowanie w takim świecie. Realizacja procesu wnioskowania o akcjach wymaga: 1. zdefiniowania języka, który umożliwiałby formalny opis zarówno dopuszczalnych działań, jak i stanów systemu. 2. skonstruowania mechanizmu wnioskowania o efektach działań. 3. zapewnienia pełności i poprawności skonstruowanego mechanizmu.
Problemy występujące w tej dziedzinie zostaną omówione w kontekście następujących formalizmów: 1. Rachunek sytuacyjny (McCarthy 1963). 2. STRIPS (STanford Research Institute Problem Solver, 1970). 3. SDPL (Simple Dijkstra s Programming Language, W. Łukaszewicz, E. Madalińska 1995).
Ogólne podejście do problemu reprezentacji akcji Opis działania: {warunek wstępny 1 } Nazwa {efekt 1 }. {warunek wstępny n } Nazwa {efekt n }
Problem tła (ang. Frame Problem) Efekty akcji opisują jedynie te elementy świata, których dotyczy wykonywana akcja. Nowy stan świata = efekty akcji + reszta ze stanu początkowego, która nie została zmieniona przez akcję. Tę resztę nazywamy tłem lub inercją
Problem tła (ang. Frame Problem) Efekty akcji opisują jedynie te elementy świata, których dotyczy wykonywana akcja. Nowy stan świata = efekty akcji + reszta ze stanu początkowego, która nie została zmieniona przez akcję. Tę resztę nazywamy tłem lub inercją Problem: Jak reprezentować tło Jak to zrobić efektywnie
Rachunek sytuacyjny Reprezentacja stanów i akcji - logika I rzędu Wnioskowanie - rezolucja Podejście: każda wykonana akcja generuje nową sytuację Stąd konieczność zrelatywizowania zdań do konkretnej sytuacji - dodatkowy argument relacji, np. On(book, table, s) oznacza: książka jest na stole w sytuacji s.
Problem Po wykonaniu akcji a w sytuacji s jedynie efekty akcji odnoszą się do nowej sytuacji s. Aby reprezentować tło w nowej sytuacji s potrzebne są odpowiednie aksjomaty (tzw.aksjomaty tła), które przeniosą niezmienione własności do nowej sytuacji, np. a, x, s Holding(x, s) (a Release) Holding(x, Result(a, s)). a, x, s Holding(x, s) [a Grab (Present(x, s) Portable(x))] Holding(x, Result(a, s)). Duża liczba aksjomatów tła: liczba akcji * liczba predykatów
Pomysł: Jedna reguła (niemonotoniczna), która mówi, że wszystko o czym nie wiemy, że się zmieniło, pozostało bez zmian. Istnieje wiele różnych notacji w Rachunku Sytuacyjnym. Najwygodniejsza jest konwencja zaproponowana przez R. Kowalskiego (1969).
Reprezentacja w stylu R. Kowalskiego Przyjmujemy konwencję, w której stany oraz zdania są reprezentowane jako termy. Będziemy używać specjalnych symboli predykatowych oraz funkcyjnych. Spełnione(x, y) oznacza, że zdanie x jest prawdziwe w sytuacji y Możliwe(x) oznacza, że sytuacja x jest możliwa do osiągnięcia wynik(a, s) oznacza sytuację uzyskaną w efekcie zastosowania akcji a do stanu s
Przykład 1 Asercje nie związane ze stanem 1. Ruchome(A) 2. Ruchome(B) 3. Ruchome(C)
Warunki wykonalności 4. Możliwe(wynik(przenies(x,y,z),s)) Możliwe(s), Ruchome(x), Różne(x,z), Spełnione(wolne(x),s), Spełnione(wolne(z),s), Spełnione(na(x,y),s)
Warunki wykonalności 4. Możliwe(wynik(przenies(x,y,z),s)) Możliwe(s), Ruchome(x), Różne(x,z), Spełnione(wolne(x),s), Spełnione(wolne(z),s), Spełnione(na(x,y),s) Efekty akcji 6. Spełnione(na(x,z),wynik(przenies(x,y,z),s)) 7. Spełnione(wolne(y),wynik(przenies(x,y,z),s))
Warunki wykonalności 4. Możliwe(wynik(przenies(x,y,z),s)) Możliwe(s), Ruchome(x), Różne(x,z), Spełnione(wolne(x),s), Spełnione(wolne(z),s), Spełnione(na(x,y),s) Efekty akcji 6. Spełnione(na(x,z),wynik(przenies(x,y,z),s)) 7. Spełnione(wolne(y),wynik(przenies(x,y,z),s)) Aksjomaty tła Chcemy wyrazić jako stwierdzenie, że wszystko co było prawdziwe w poprzednim stanie pozostaje prawdziwe w nowym stanie, z wyjątkiem pewnych zdań (wymienionych konkretnie), o których wiemy, że już nie zachodzą.
Warunki wykonalności 4. Możliwe(wynik(przenies(x,y,z),s)) Możliwe(s), Ruchome(x), Różne(x,z), Spełnione(wolne(x),s), Spełnione(wolne(z),s), Spełnione(na(x,y),s) Efekty akcji 6. Spełnione(na(x,z),wynik(przenies(x,y,z),s)) 7. Spełnione(wolne(y),wynik(przenies(x,y,z),s)) Aksjomaty tła Chcemy wyrazić jako stwierdzenie, że wszystko co było prawdziwe w poprzednim stanie pozostaje prawdziwe w nowym stanie, z wyjątkiem pewnych zdań (wymienionych konkretnie), o których wiemy, że już nie zachodzą. 8. Spełnione(u,wynik(przenies(x,y,z),s)) Spełnione(u,s), Różne(u,na(x,y)), Różne(u,wolne(z))
Stan początkowy 0 9. Możliwe(0) 10. Spełnione(na(A,B),0) 11. Spełnione(na(B,p),0) 12. Spełnione(na(C,r),0) 13. Spełnione(wolne(A),0) 14. Spełnione(wolne(q),0) 15. Spełnione(wolne(C),))
Scenariusz ciąg wykonanych działań 15. Spełnione(l,wynik(przenies(A,q,B),wynik(przenies(B,p,C), wynik(przenies(a,b,q),0)))
Scenariusz ciąg wykonanych działań 15. Spełnione(l,wynik(przenies(A,q,B),wynik(przenies(B,p,C), wynik(przenies(a,b,q),0)))
Scenariusz ciąg wykonanych działań 15. Spełnione(l,wynik(przenies(A,q,B),wynik(przenies(B,p,C), wynik(przenies(a,b,q),0)))
Pozostało zdefiniować predykat Różne. Możemy to zrobić pisząc klauzule postaci: Różne(s,t) dla każdej pary termów s i t, które nie pasują do siebie. Rozwiązanie takie jest jednak niepraktyczne. Zastosowane podejście sugeruje rozwiązanie niemonotoniczne, czyli użycie logiki domniemań predykat Różne definiujemy jako domniemanie: : (x = y) Różne(x, y)
Pozostało zdefiniować predykat Różne. Możemy to zrobić pisząc klauzule postaci: Różne(s,t) dla każdej pary termów s i t, które nie pasują do siebie. Rozwiązanie takie jest jednak niepraktyczne. Zastosowane podejście sugeruje rozwiązanie niemonotoniczne, czyli użycie logiki domniemań predykat Różne definiujemy jako domniemanie: : (x = y) Różne(x, y) lub negacji przez zawód dodajemy klauzule: 16. Różne(x,y) (x=y) 17. x=x
Problemy w zastosowaniu logik niemonotonicznych do reprezentacji tła Przykład 2 Rozważmy teorię składającą się z następujących aksjomatów: 1. Spełnione(ż,S0) Spełnione(n,S0) 2. s. Spełnione(n,s) Spełnione(m,wynik(shoot,s)) 3. s. Spełnione(n,s) Ab(shoot,ż,s) 4. a, f, s. Spełnione(f,s) Ab(a,f,s) Spełnione(f,wynik(a,s)) : Ab(a,f,s) 5. Ab(a,f,s)
ż - oznacza indyk jest żywy n - oznacza strzelba jest naładowana m - oznacza indyk jest martwy Interesuje nas czy indyk żyje po wykonaniu sekwencji działań: wait;shoot gdzie wait nic nie robi, a shoot powoduje zabicie indyka, jeśli strzelba była naładowana w sytuacji początkowej. Otrzymujemy następujący ciąg sytuacji: S0; S1=wynik(wait,S0); S2=wynik(shoot,S1) Po wygenerowaniu instancji domniemania dla sytuacji S0 i S1 oraz wait i shoot dostajemy
1. Spełnione(ż,S0) Spełnione(n,S0) 2. s. Spełnione(n,s) Spełnione(m,wynik(shoot,s)) 3. s. Spełnione(n,s) Ab(shoot,ż,s) 4. a, f, s. Spełnione(f,s) Ab(a,f,s) Spełnione(f,wynik(a,s)) 5a : Ab(wait,ż,S0) Ab(wait,ż,S0) 5b : Ab(wait,n,S0) Ab(wait,n,S0) 5c : Ab(shoot,ż,S1) Ab(shoot,ż,S1) Stosując 5a i 5b dostajemy Ab(wait,ż,S0) oraz Ab(wait,n,S0). Z 4 zastosowanego dwukrotnie dostajemy Spełnione(ż,S1) i Spełnione(n,S1). Stosując 3 wyprowadzamy Ab(shoot,ż,S1), a z 2 wynika Spełnione(m,S2). Jest to zgodne z oczekiwaniem.
1. Spełnione(ż,S0) Spełnione(n,S0) 2. s. Spełnione(n,s) Spełnione(m,wynik(shoot,s)) 3. s. Spełnione(n,s) Ab(shoot,ż,s) 4. a, f, s. Spełnione(f,s) Ab(a,f,s) Spełnione(f,wynik(a,s)) 5a : Ab(wait,ż,S0) Ab(wait,ż,S0) 5b : Ab(wait,n,S0) Ab(wait,n,S0) 5c : Ab(shoot,ż,S1) Ab(shoot,ż,S1) Ale... jeśli zaczniemy od domniemania 5a i 5c, dostajemy Ab(wait,ż,S0) co pozwala wyprowadzić, jak poprzednio, Spełnione(ż,S1) oraz Ab(shoot,ż,S1),
1. Spełnione(ż,S0) Spełnione(n,S0) 2. s. Spełnione(n,s) Spełnione(m,wynik(shoot,s)) 3. s. Spełnione(n,s) Ab(shoot,ż,s) 4. a, f, s. Spełnione(f,s) Ab(a,f,s) Spełnione(f,wynik(a,s)) 5a : Ab(wait,ż,S0) Ab(wait,ż,S0) 5b : Ab(wait,n,S0) Ab(wait,n,S0) 5c : Ab(shoot,ż,S1) Ab(shoot,ż,S1) z czego na mocy 3 wynika Spełnione(n,S1). Formuła ta blokuje wyprowadzenie Ab(wait,n,S0). Z kolei z Ab(shoot,ż,S1) i Spełnione(ż,S1) na mocy 4 dostajemy Spełnione(ż,S2).
1. Spełnione(ż,S0) Spełnione(n,S0) 2. s. Spełnione(n,s) Spełnione(m,wynik(shoot,s)) 3. s. Spełnione(n,s) Ab(shoot,ż,s) 4. a, f, s. Spełnione(f,s) Ab(a,f,s) Spełnione(f,wynik(a,s)) 5a : Ab(wait,ż,S0) Ab(wait,ż,S0) 5b : Ab(wait,n,S0) Ab(wait,n,S0) 5c : Ab(shoot,ż,S1) Ab(shoot,ż,S1) Tak więc, teoria ta ma 2 rozszerzenia. W jednym zachodzi Spełnione(m,S2), a w drugim Spełnione(ż,S2). Nie możemy więc stwierdzić jednoznacznie, że indyk nie żyje w sytuacji S2.
Rozwiązanie: minimalizacja chronologiczna poitwise circumscription priorytety logika domniemań z priorytetami
Reprezentacja stanów, celu i akcji w systemach typu STRIPS Stany reprezentowane są jako koniunkcja literałów dodatnich nie zawierających zmiennych: Opis akcji Nazwa akcji. Warunek wstępny (precondition) koniunkcja literałów dodatnich, które muszą zachodzić, aby akcja była wykonywalna. Efekty akcji Koniunkcja literałów opisujących zmiany stanu w wyniku wykonania akcji.
Formalnie przykład: Op(ACTION : Go(there), PRECOND : At(here) Path(here, there), EFFECT : At(there) At(here)). Uwaga: Powyższy opis definiuje całą klasę akcji. Stany są reprezentowane jako zbiory literałów. Akcja jest stosowalna w stanie s jeśli wszystkie warunki wstępne tej akcji są zawarte w s. W wyniku wykonania akcji A w stanie s otrzymujemy stan, który: (1) Zawiera wszystkie literały występujące w koniunkcji efektów akcji. (2) Zawiera wszystkie literały występujące w s, za wyjątkiem tych, których negacje występują w koniunkcji efektów akcji.
Jeśli stan s = {At(Home), Path(Home, Supermarket),...} to akcja Go(Supermarket) jest stosowalna i w wyniku wykonania tej akcji otrzymamy: s = s {At(Supermarket)} {At(Home)} = {At(Supermarket), Path(Home, Supermarket),...} Reprezentacja tła w takim podejściu nie wymaga żadnych aksjomatów; realizowana jest poprzez operacje na zbiorach.
SDPL Język opisu stanów - logika zdań
SDPL Język opisu stanów - logika zdań Język opisu akcji - prosty język programowania Dijkstry: zmienne typu logicznego (Boolean); Lista instrukcji: skip, przypisanie, sekwencyjne złożenie, alternatywa (niedeterministyczna) - if B 1 S 1 [] B 2 S 2 [] [] B n S n fi
SDPL Język opisu stanów - logika zdań Język opisu akcji - prosty język programowania Dijkstry: zmienne typu logicznego (Boolean); Lista instrukcji: skip, przypisanie, sekwencyjne złożenie, alternatywa (niedeterministyczna) - if B 1 S 1 [] B 2 S 2 [] [] B n S n fi Semantyka akcji najsłabszy warunek wstępny wlp i najmocniejszy warunek końcowy - sp, np. wlp(x := e, α) = α[x e]. sp(x := e, α) = y.((x e[x y]) α[x y]), gdzie y jest nową zmienną.
SDPL Język opisu stanów - logika zdań Język opisu akcji - prosty język programowania Dijkstry: zmienne typu logicznego (Boolean); Lista instrukcji: skip, przypisanie, sekwencyjne złożenie, alternatywa (niedeterministyczna) - if B 1 S 1 [] B 2 S 2 [] [] B n S n fi Semantyka akcji najsłabszy warunek wstępny wlp i najmocniejszy warunek końcowy - sp, np. wlp(x := e, α) = α[x e]. sp(x := e, α) = y.((x e[x y]) α[x y]), gdzie y jest nową zmienną. Wnioskowanie - klasyczna logika
Przykład 3 1. Fluenty: a (oznacza, że indyk żyje); l (strzelba jest naładowana) 2. Działania: load: l := T ; wait: skip; spin: if T l := T [] T l := F fi; shoot: if l a := F ; l := F [] l skip fi;
Semantyka działań wlp(load, α) = α[l T ]; sp(load, α) = l (α[l T ] α[l F ]); wlp(wait, α) = sp(wait, α) = α; wlp(spin, α) = α[l T ] α[l F ]; sp(spin, α) = α[l T ] α[l F ]; wlp(shoot, α) = (l α[a F, l F ]) ( l α); sp(shoot, α) = ( a l α[a T, l T ]) ( a l α[a F, l T ]) ( l α);
Semantyka działań wlp(load, α) = α[l T ]; sp(load, α) = l (α[l T ] α[l F ]); wlp(wait, α) = sp(wait, α) = α; wlp(spin, α) = α[l T ] α[l F ]; sp(spin, α) = α[l T ] α[l F ]; wlp(shoot, α) = (l α[a F, l F ]) ( l α); sp(shoot, α) = ( a l α[a T, l T ]) ( a l α[a F, l T ]) ( l α); Rozważmy wykonanie akcji shoot w stanie początkowym s a l Stan końcowy s sp(shoot, a l) a l
Repezentacja tła nie wymaga żadnych dodatkowych działań ani aksjomatów; realizowana jest poprzez język programowania.
Akcje z nietypowymi efektami (ang. Action with abnormal effects) Zakładaliśmy dotychczas, że akcje wykonują się z powodzeniem. Teraz rozważymy także przypadki, gdy wykonanie akcji się nie powiedzie. Nazwiemy to wykonaniem nietypowym. Zakładamy, że 1. akcje mają dwa rodzaje wykonań: pierwsze typowe, które zdarza się na ogół oraz drugie nietypowe, które zdarza się wyjątkowo. 2. Oba wykonania są wyspecyfikowane, tzn. są dwie specyfikacje: S 1 opisująca typowe wykonanie działania i S 2 opisująca nietypowe wykonanie działania. 3. Preferowane są wykonania typowe. Modelowanie tego typu działań wymaga mechanizmów niemonotonicznych.
Reprezentacja działań o nietypowych efektach w SDPL Wprowadzamy zbiór pomocniczych zmiennych logicznych Ab = {ab 1, ab 2,...}, które będą reprezentować nietypowe wykonanie działania. Zmienne te zostaną przyporządkowane poszczególnym wystąpieniom działań w scenariuszu, a ich wartości będą ustalane drogą wnioskowania na podstawie obserwacji z wykorzystaniem zasady preferowania wykonań typowych.
Przykłady Fluenty a i l znaczenie jak dotychczas, s oznacza, że samochód został skradziony. Działania load, shoot, leave - zostawienie samochodu na parkingu na godzinę. Typowe wykonanie brak efektu, nietypowe samochód zostaje skradziony. S(load) : if ab l := T [] ab skip fi; S(shoot) : if ab if l a := F ; l := F [] l skip fi [] ab l := F fi; S(leave) : if ab skip [] ab s := T fi.
Semantyka wlp(s(load), α) = ( ab α[l T ]) (ab α); sp(s(load), α) = ab l (α[l T ] α[l F ]) ab α; wlp(s(shoot), α) = ( ab (l α[a F, l F ]) ( l α)) (ab α[l F ]); sp(s(shoot), α) = ab (( a l α[a T, l T ]) ( a l α[a F, l T ]) ( l α)) ab l (α[l T ] α[l F ]); wlp(s(leave), α) = ( ab α) (ab α[s T ]); sp(s(leave), α) = ab α ab (α[s T ] α[s F ]).
Przykład 4 Rozważmy scenariusz YSS: a l load; shoot a. Interesuje nas, czy strzelba była naładowana w stanie końcowym. Obliczamy D 2 (YSS) = SP2 YSS = a sp(s 2 (shoot), sp(s 1 (load), a l)) ab 2 ab 1 a l ab 2 l a.
Dla ustalenia wartości zmiennych ab i możemy zastosować logikę domniemań lub logikę ograniczania. Podamy rozwiązanie w logice domniemań. Teoria domniemań T(YSS) = {D 2 (YSS)}, {: ab 1 / ab 1, : ab 2 / ab 2 }. Teoria ta ma dwa rozszerzenia, E 1 = Th({D 2 (YSS), ab 1 }) i E 2 = Th({D 2 (YSS), ab 2 }). Ponieważ l należy zarówno do E 1 jak i do E 2, wnioskujemy, że strzelba była nienaładowana w stanie końcowym.
Przykład 5 (Stolen Car Scenario) Scenariusz przedstawia się następująco: samochód został pozostawiony na parkingu na dwie godziny (tzn. dwukrotne wykonanie akcji leave), a następnie okazało się, że został ukradziony. SCS = s leave; leave s Oczekiwaną konkluzją jest, że nie możemy wywnioskować czy samochód został skradziony w czasie pierwszej czy drugiej godziny.
Obliczamy najpierw D 1 (SCS) = SP (SCS) 1 WLP (SCS) 1 = sp(s 1 (leave), s) wlp(s 2 (leave), s) Teoria domniemań ( ab 1 s ab 2 ) ( ab 2 s ab 1 ) (ab 1 ab 2 ). T 1 = {D 1 (SCS)}, {: ab 1 / ab 1, : ab 2 / ab 2 } ma dwa rozszerzenia E 1 = Th({D 1 (C(SCS)), ab 1 }) i E 2 = Th({D 1 (C(SCS)), ab 2 }). Ponieważ s E 1 a s E 2, nie możemy wywnioskować, czy samochód został ukradziony w czasie pierwszej godziny parkowania.
Problem kwalifikacji (ang. Qualification Problem) Problem dotyczy warunków wykonalności akcji. Nie zawsze możliwe jest wyspecyfikowanie wszystkich warunków wstępnych akcji.
Problem kwalifikacji (ang. Qualification Problem) Problem dotyczy warunków wykonalności akcji. Nie zawsze możliwe jest wyspecyfikowanie wszystkich warunków wstępnych akcji. Czasami wręcz stanowią one przeszkodę, ponieważ musiałyby być sprawdzone. Nie zawsze mamy kompletną informację o stanie początkowym.
Problem kwalifikacji (ang. Qualification Problem) Problem dotyczy warunków wykonalności akcji. Nie zawsze możliwe jest wyspecyfikowanie wszystkich warunków wstępnych akcji. Czasami wręcz stanowią one przeszkodę, ponieważ musiałyby być sprawdzone. Nie zawsze mamy kompletną informację o stanie początkowym. Odkrywanie nowych warunków wykonalności akcji powoduje konieczność modyfikacji opisu problemu. Chcemy to zrobić łatwo.
Pomysł: Warunki wstępne zapisujemy jako osobne formuły. Zakładamy, że są one spełnione chyba, że obserwacja stanu końcowego jest niezgodna z oczekiwanym wynikiem. 1. Rachunek Sytuacyjny G. Neelakantan Kartha Go RS 2. STRIPS Michael Thielscher Go ST 3. SDPL Go D
Przykład 6 (Rachunek Sytuacyjny) Spełnione(EngineRunning, s) Ab(StartCar, s) Spełnione(EngineRunning, wynik(startcar, s)) Spełnione(PotatoInTailPipe, s) Ab(PutPotato, s) Spełnione(PotatoInTailPipe, wynik(putpotato, s)) Spełnione(PotatoInTailPipe) Ab(StartCar, s) Spełnione(HeavyPotato, s) Ab(PutPotato, s) Spełnione(EngineRunning, S 0 )
Rozwiazanie: Wymaga minimalizacji predykatu Ab, a tym samym połączenia rozwiązania problemu tła z rozwiązaniem problemu kwalifikacji. Zastosowanie formalizmu zagnieżdżonego ograniczania (NAT - nested abnormality theories) pozwala rozwiązać problem sekwencyjnie, tj. najpierw tło, potem kwalifikacja, bez wzajemnego przeplatania. Rozwiązanie wymaga rozszerzenia teorii o U(T ) i D(T ) oraz inne dodatkowe aksjomaty. Go powrót
Schemat rozwiązania w STRIPSie: 1. Rozszerzenie zbioru fluentów o zbiór F ab negacje warunków wstępnych 2. Zakładamy, że są one przez domniemanie fałszywe 3. Dodajemy aksjomaty dziedziny (domain constraints) postaci disq(a) i I a f i Dla przykładu zapalania samochodu mamy disq(startcar) PotatoInTailPipe disq(putpotato) HeavyPotato 4. Rozwiązanie semantyczne w terminach modeli minimalnych dla ciągów akcji. Go powrót
Schemat rozwiązania w SDPL Formalizacja problemu kwalifikacji może być tu zrealizowana jako szczególny przypadek akcji z nietypowymi efektami, tj. schemat wygląda następująco: Q(action) : if ab action action [] ab action skip fi; Należy jeszcze dodać aksjomaty dziedziny opisujące dyskwalifikujące warunki wstępne. ab action i I action f i