Problem z ramą - Frame problem

W sztucznej inteligencji The Problem ramka opisuje problem z użyciem logiki pierwszego rzędu (FOL), aby wyrazić fakty robota na świecie. Reprezentowanie stanu robota za pomocą tradycyjnego FOL wymaga użycia wielu aksjomatów, które po prostu sugerują, że rzeczy w otoczeniu nie zmieniają się arbitralnie. Na przykład Hayes opisuje „ świat bloków ” z zasadami układania bloków razem. W systemie FOL wymagane są dodatkowe aksjomaty, aby wnioskować o środowisku (na przykład, że blok nie może zmienić pozycji, dopóki nie zostanie fizycznie przesunięty). Problem ramowy to problem znalezienia odpowiednich zbiorów aksjomatów dla realnego opisu środowiska robota.

John McCarthy i Patrick J. Hayes zdefiniowali ten problem w artykule z 1969 roku Some Philosophical Problems from the Standpoint of Artificial Intelligence . W tym artykule i wielu późniejszych formalny problem matematyczny był punktem wyjścia do bardziej ogólnych dyskusji na temat trudności reprezentacji wiedzy dla sztucznej inteligencji. Zagadnienia takie jak: jak zapewnić racjonalne domyślne założenia i co ludzie uważają za zdrowy rozsądek w środowisku wirtualnym. Później pojęcie to nabrało szerszego znaczenia w filozofii , gdzie sformułowano je jako problem ograniczania przekonań, które muszą być aktualizowane w odpowiedzi na działania. W kontekście logicznym akcje są zazwyczaj określane przez to, co się zmieniają, z domyślnym założeniem, że wszystko inne (ramka) pozostaje niezmienione.

Opis

Problem ramek występuje nawet w bardzo prostych domenach. Scenariusz z drzwiami, które można otworzyć lub zamknąć, oraz światłem, które można włączyć lub wyłączyć, jest statycznie reprezentowany przez dwie propozycje i . Jeżeli warunki te mogą ulec zmianie, są one lepiej reprezentowane przez dwa predykaty i że zależy od czasu; takie predykaty nazywane są biegły . Dziedzinę, w której o godzinie 0 drzwi są zamknięte, a światło wyłączone, a o godzinie 1 drzwi otwarte, można bezpośrednio przedstawić logicznie następującymi wzorami:

Pierwsze dwie formuły reprezentują sytuację początkową; trzecia formuła przedstawia efekt wykonania czynności otwarcia drzwi w czasie 1. Gdyby taka czynność miała warunki wstępne, takie jak otwarcie drzwi, byłaby reprezentowana przez . W praktyce istniałby predykat określający, kiedy akcja jest wykonywana oraz reguła określająca skutki działań. Więcej szczegółów zawiera artykuł o rachunku sytuacyjnym .

Chociaż powyższe trzy formuły są bezpośrednim wyrażeniem logiki tego, co jest znane, nie wystarczą one do prawidłowego wyciągnięcia konsekwencji. Chociaż poniższe warunki (reprezentujące oczekiwaną sytuację) są zgodne z trzema powyższymi wzorami, nie są one jedynymi.

   

Rzeczywiście, inny zestaw warunków zgodny z trzema powyższymi wzorami to:

   

Problem z ramą polega na tym, że określenie tylko, które warunki są zmieniane przez akcje, nie pociąga za sobą, że wszystkie inne warunki nie ulegają zmianie. Problem ten można rozwiązać, dodając tzw. aksjomaty ramowe, które jednoznacznie określają, że wszystkie warunki, na które nie mają wpływu akcje, nie ulegają zmianie podczas wykonywania tej akcji. Na przykład, ponieważ akcja wykonywana w czasie 0 to otwieranie drzwi, aksjomat ramy stwierdzałby, że stan światła nie zmienia się od czasu 0 do czasu 1:

Problem z ramą polega na tym, że jeden taki aksjomat ramki jest konieczny dla każdej pary akcji i warunku, tak że działanie nie wpływa na warunek. Innymi słowy, problemem jest sformalizowanie domeny dynamicznej bez wyraźnego określenia aksjomatów ramowych.

Rozwiązanie zaproponowane przez McCarthy'ego w celu rozwiązania tego problemu polega na założeniu, że nastąpiła minimalna liczba zmian stanu; rozwiązanie to jest sformalizowane w ramach okręgu okręgowego . Problemem strzelanie Yale pokazuje jednak, że takie rozwiązanie nie zawsze jest poprawne. Zaproponowano wówczas alternatywne rozwiązania, obejmujące dopełnienie predykatu, płynną okluzję, aksjomaty stanów następczych itp.; wyjaśniono je poniżej. Pod koniec lat 80. rozwiązano problem ramy zdefiniowany przez McCarthy'ego i Hayesa. Jednak nawet po tym, termin „problem ramowy” był nadal używany, częściowo w odniesieniu do tego samego problemu, ale w różnych warunkach (np. współbieżne działania), a częściowo w odniesieniu do ogólnego problemu reprezentowania i rozumowania za pomocą dynamicznych domeny.

Rozwiązania

Poniższe rozwiązania pokazują, jak problem ramy jest rozwiązywany w różnych formalizmach. Same formalizmy nie są przedstawione w całości: przedstawiono uproszczone wersje, które wystarczają do wyjaśnienia pełnego rozwiązania.

Płynny roztwór okluzji

Rozwiązanie to zaproponował Erik Sandewall , który zdefiniował również język formalny do specyfikacji domen dynamicznych; dlatego taka domena może być najpierw wyrażona w tym języku, a następnie automatycznie przetłumaczona na logikę. W tym artykule pokazano tylko wyrażenie w logice i tylko w uproszczonym języku bez nazw akcji.

Uzasadnieniem tego rozwiązania jest reprezentowanie nie tylko wartości warunków w czasie, ale także tego, czy może na nie wpływać ostatnia wykonana akcja. Ten ostatni jest reprezentowany przez inny stan, zwany okluzją. Mówi się, że warunek jest zablokowany w danym punkcie czasowym, jeśli właśnie wykonano działanie, które powoduje, że warunek jest prawdziwy lub fałszywy. Okluzja może być postrzegana jako „pozwolenie na zmianę”: jeśli stan jest okludowany, zwalnia się go z przestrzegania ograniczenia bezwładności.

W uproszczonym przykładzie drzwi i światła okluzja może być sformalizowana przez dwa predykaty i . Uzasadnieniem jest to, że warunek może zmienić wartość tylko wtedy, gdy odpowiedni predykat okluzji jest prawdziwy w następnym punkcie czasowym. Z kolei predykat okluzji jest prawdziwy tylko wtedy, gdy wykonywana jest akcja wpływająca na warunek.

Ogólnie rzecz biorąc, każde działanie powodujące, że warunek jest prawdziwy lub fałszywy, powoduje również, że odpowiedni predykat okluzji jest prawdziwy. W tym przypadku jest prawdą, czyniąc poprzednik czwartej formuły fałszem dla ; w związku z tym ograniczenie, które nie obowiązuje dla . W związku z tym może zmienić wartość, co również wymusza trzecia formuła.

Aby ten warunek zadziałał, predykaty okluzji muszą być prawdziwe tylko wtedy, gdy stają się prawdziwe w wyniku działania. Można to osiągnąć albo za pomocą okręgu lub uzupełnienia orzecznika. Warto zauważyć, że okluzja niekoniecznie oznacza zmianę: na przykład wykonanie czynności otwarcia drzwi, gdy były już otwarte (w powyższej formalizacji) czyni orzeczenie prawdą i czyni prawdziwy; jednak nie zmieniła wartości, jak to było już prawdą.

Rozwiązanie dotyczące uzupełniania predykatów

To kodowanie jest podobne do rozwiązania płynnej okluzji, ale dodatkowe predykaty oznaczają zmianę, a nie pozwolenie na zmianę. Na przykład reprezentuje fakt, że orzeczenie zmieni się od czasu do . W rezultacie predykat zmienia się wtedy i tylko wtedy, gdy odpowiedni predykat zmiany jest prawdziwy. Działanie powoduje zmianę wtedy i tylko wtedy, gdy spełniony jest warunek, który wcześniej był fałszywy lub odwrotnie.

Trzecia formuła to inaczej mówiąc, że otwarcie drzwi powoduje otwarcie drzwi. Dokładnie mówi, że otwarcie drzwi zmienia stan drzwi, jeśli były wcześniej zamknięte. Ostatnie dwa warunki określają, że warunek zmienia wartość w czasie wtedy i tylko wtedy, gdy odpowiedni predykat zmiany jest true w czasie . Aby zakończyć rozwiązanie, punkty czasowe, w których predykaty zmian są prawdziwe, muszą być jak najmniejsze, a można to zrobić, stosując uzupełnianie predykatów do reguł określających efekty działań.

Rozwiązanie aksjomatów stanu następcy

Wartość warunku po wykonaniu akcji może być określona przez fakt, że warunek jest prawdziwy wtedy i tylko wtedy, gdy:

  1. czynność sprawia, że ​​warunek jest prawdziwy; lub
  2. warunek był wcześniej spełniony, a akcja nie czyni go fałszywym.

Aksjomat następca stan jest formalizacja w logice tych dwóch faktów. Na przykład, jeśli i są dwoma warunkami używanymi do oznaczenia, że ​​działaniem wykonanym w czasie było odpowiednio otwarcie lub zamknięcie drzwi, uruchomiony przykład jest zakodowany w następujący sposób.

To rozwiązanie koncentruje się na wartości warunków, a nie na efektach działań. Innymi słowy, istnieje aksjomat dla każdego warunku, a nie formuła dla każdego działania. Warunki wstępne akcji (które nie występują w tym przykładzie) są sformalizowane przez inne formuły. Aksjomaty stanów następczych są stosowane w wariancie rachunku sytuacyjnego zaproponowanym przez Raya Reitera .

Płynne rozwiązanie rachunku różniczkowego

Biegle rachunek jest wariant rachunku sytuacji. Rozwiązuje problem ramek, używając terminów logicznych pierwszego rzędu zamiast predykatów do reprezentowania stanów. Konwersja predykatów na terminy w logice pierwszego rzędu nazywa się reifikacją ; rachunek płynny można postrzegać jako logikę, w której reifikowane są predykaty reprezentujące stan warunków.

Różnica między predykatem a terminem w logice pierwszego rzędu polega na tym, że termin jest reprezentacją obiektu (prawdopodobnie złożonego obiektu złożonego z innych obiektów), podczas gdy predykat reprezentuje warunek, który może być prawdziwy lub fałszywy, gdy jest oceniany na podstawie podany zestaw warunków.

W rachunku biegłym każdy możliwy stan jest reprezentowany przez wyraz uzyskany przez złożenie innych wyrazów, z których każdy reprezentuje warunki, które są prawdziwe w stanie. Na przykład stan, w którym drzwi są otwarte, a światło jest włączone, jest reprezentowany przez termin . Należy zauważyć, że termin sam w sobie nie jest prawdziwy lub fałszywy, ponieważ jest przedmiotem, a nie warunkiem. Innymi słowy, termin ten reprezentuje stan możliwy i sam w sobie nie oznacza, że ​​jest to stan obecny. Można podać osobny warunek, aby określić, że jest to faktycznie stan w danym czasie, np. oznacza, że ​​jest to stan w czasie .

Rozwiązaniem problemu ramowego podanego w rachunku biegłym jest określenie skutków działań poprzez określenie, jak zmienia się wyraz reprezentujący stan, gdy działanie jest wykonywane. Na przykład akcja otwarcia drzwi w czasie 0 jest reprezentowana przez wzór:

Czynność zamykania drzwi, która powoduje, że warunek jest fałszywy zamiast prawdziwy, jest reprezentowana w nieco inny sposób:

Formuła ta działa pod warunkiem podania odpowiednich aksjomatów o i , np. wyraz zawierający dwa razy ten sam warunek nie jest poprawnym stanem (na przykład zawsze jest fałszywe dla każdego i ).

Rozwiązanie rachunku zdarzeń

Rachunek zdarzenie wykorzystuje warunki do reprezentowania fluentów, jak płynnie rachunku, ale także ma aksjomatów powstrzymujących wartość fluentów, podobnie jak aksjomaty następca państwowych. W rachunku zdarzeń bezwładność jest wymuszana przez formuły stwierdzające, że biegły jest prawdziwy, jeśli był prawdziwy w danym poprzednim punkcie czasowym i nie wykonano w międzyczasie żadnej akcji zmieniającej ją na fałsz. Uzupełnianie predykatów jest nadal potrzebne w rachunku zdarzeń, aby stwierdzić, że biegłość płynna jest prawdziwa tylko wtedy, gdy została wykonana czynność urzeczywistniająca ją, ale także do uzyskania, że ​​czynność została wykonana tylko wtedy, gdy jest to wyraźnie stwierdzone.

Domyślne rozwiązanie logiczne

Problem ramowy można traktować jako problem sformalizowania zasady, że domyślnie „wszystko ma pozostać w stanie, w jakim jest” ( Leibniz , „An Introduction to a Secret Encyclopaedia”, ok . 1679). To domyślne, czasami nazywane zdroworozsądkowym prawem bezwładności , zostało wyrażone przez Raymonda Reitera w logice domyślnej :

(jeżeli jest prawdziwe w sytuacji i można założyć, że pozostaje prawdziwe po wykonaniu akcji , to możemy wywnioskować, że pozostaje prawdziwe).

Steve Hanks i Drew McDermott argumentowali na podstawie swojego przykładu ze strzelaniny w Yale , że takie rozwiązanie problemu kadrów jest niezadowalające. Hudson Turner pokazał jednak, że działa poprawnie w obecności odpowiednich dodatkowych postulatów.

Rozwiązanie do programowania zestawu odpowiedzi

Odpowiednikiem domyślnego rozwiązania logicznego w języku programowania zestawów odpowiedzi jest reguła z silną negacją :

(jeśli jest prawdziwe w czasie i można założyć, że pozostaje prawdziwe w czasie , to możemy wywnioskować, że pozostaje prawdziwe).

Rozwiązanie logiki separacji

Logika separacji to formalizm wnioskowania o programach komputerowych przy użyciu specyfikacji formularza przed/po . Logika separacji jest rozszerzeniem logiki Hoare'a zorientowanej na wnioskowanie o zmiennych strukturach danych w pamięci komputera i innych dynamicznych zasobach i ma specjalny spójnik *, wymawiany „i osobno”, aby wspierać niezależne wnioskowanie o rozłącznych obszarach pamięci.

Logika separacji wykorzystuje ścisłą interpretację specyfikacji przed/po, które mówią, że kod może uzyskać dostęp tylko do lokalizacji w pamięci, których istnienie gwarantuje warunek wstępny. Prowadzi to do słuszności najważniejszej reguły wnioskowania logiki, reguły ramowej

Reguła ramki pozwala na dodanie do specyfikacji opisów dowolnej pamięci poza footprintem (dostęp do pamięci) kodu: pozwala to początkowej specyfikacji skoncentrować się tylko na footprintach. Na przykład wnioskowanie

przechwytuje ten kod, który sortuje listę x , nie sortuje oddzielnej listy y i robi to bez wspominania o y w początkowej specyfikacji nad wierszem.

Automatyzacja reguły ramek doprowadziła do znacznego wzrostu skalowalności zautomatyzowanych technik wnioskowania dla kodu, ostatecznie wdrożonych przemysłowo w bazach kodu z dziesiątkami milionów wierszy.

Wydaje się, że istnieje pewne podobieństwo między rozwiązaniem logicznym separacji problemu ramowego a rozwiązaniem płynnego rachunku różniczkowego, o którym mowa powyżej.

Języki opisu akcji

Języki opisu akcji raczej wymykają się problemowi ramek niż go rozwiązują. Język opisu czynności to język formalny ze składnią, która jest specyficzna dla opisywania sytuacji i czynności. Na przykład, że akcja powoduje otwarcie drzwi, jeśli nie są zamknięte, wyraża się przez:

powoduje, jeśli

Semantyka języka opisu działań zależy od tego, co język może wyrazić (działania współbieżne, efekty opóźnione itp.) i zwykle opiera się na systemach przejściowych .

Ponieważ domeny są wyrażane w tych językach, a nie bezpośrednio w logice, problem ramy pojawia się tylko wtedy, gdy specyfikacja podana w logice opisu czynności ma zostać przetłumaczona na logikę. Zazwyczaj jednak tłumaczenie jest podawane z tych języków, aby odpowiedzieć na programowanie zestawów, a nie na logikę pierwszego rzędu.

Zobacz też

Uwagi

Bibliografia

Linki zewnętrzne