470 likes | 695 Views
Metody wnioskowania. Tomasz Kaczmarek. Schematy formalne wnioskowań. Schemat: Przykład: Każdy student jest młodym człowiekiem Jan jest studentem Jan jest młodym człowiekiem. Sposoby wnioskowania. Dedukcja (sound) – wnioski muszą wypływać z przesłanek; metoda wnioskowania w logice
E N D
Metody wnioskowania Tomasz Kaczmarek
Schematy formalne wnioskowań • Schemat: Przykład: Każdy student jest młodym człowiekiem Jan jest studentem Jan jest młodym człowiekiem
Sposoby wnioskowania • Dedukcja (sound) – wnioski muszą wypływać z przesłanek; metoda wnioskowania w logice • Indukcja (unsound) – wyciąganie ogólnych wniosków na podstawie jednostkowych przypadków • Abdukcja (unsound) – od prawdziwych wniosków dochodzimy do przesłanek które mogły je spowodować • Rezolucja (sound) - ... • Metoda prób i błędów (unsound) – wygeneruj przypuszczalne rozwiązanie i sprawdź je • Wnioskowanie z wartościami domyślnymi (unsound) – wartości domyślne (wiedza ogólna) są zakładane gdy brak szczególowej wiedzy • Analogia (unsound) – wniosek na podstawie podobieństwa do poprzednich sytuacji • Heurystyki (unsound) – reguły oparte na doświadczeniu • Wnioskowanie niemonotoniczne (unsound) – nowe fakty mogą uczynić poprzednie nieprawdziwymi
Metoda założeniowa • Poprzednik przyjmuje się jako założenie i Wyprowadza się z niego następnik • Cały System może Być zbudowany metodą założeniową bez przyjmowania jakichkolwiek aksjomatów • Budując system logiczny metodą założeniową przyjmujemy 2 rodzaje reguł pierwotnych: • Dołączania nowych wierszy do dowodu • Tworzenia dowodów
Problemy z wnioskowaniem • Można posługiwać się tablicami prawdy • Niestety złożoność wykładnicza (2n) • Jednak kiedy dowód jakiegoś zdania wymaga odwołania się do niewielkiej części bazy wiedzy może być wykonany szybko • Reguła odrywania wymaga odwołania się tylko do niewielkiej części bazy wiedzy i pozostała część nie wpływa na poprawność wnioskowania • Wnioskowanie tylko z regułą odrywania byłoby szybsze • Gdyby tak móc zapisać wszystkie zdania tak żeby pasowały do reguły odrywania...
Klauzule Horna Jeżeli bazę wiedzy można zapisać w postaci klauzul Horna To wnioskowanie polega na zastosowaniu reguły odrywania tyle razy ile to konieczne / możliwe Niestety nie każdą bazę wiedzy można zapisać w postaci klauzul Horna Prolog pozwala zapisać bazę wiedzy tylko przy pomocy klauzul Horna.
Przykład • Prawo amerykańskie mówi że sprzedawanie broni nieprzyjaznemu państwu jest przestępstwem • państwo Irak jest (był? ;) wrogiem USA, posiada rakiety, które zostały sprzedane przez pułkownika Westa, który jest Amerykaninem • Czy West jest przestępcą?
Przykład • ... sprzedawanie broni nieprzyjaznemu państwu jest przestępstwem X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) • wróg USA jest nieprzyjacielem X wróg(X,ameryka)=>nieprzyjaciel(X) • Irak posiada rakiety X posiada(irak,X) rakieta(X) • Rakiety zostały sprzedane przez pułkownika Westa X posiada(irak,X) rakieta(X) =>sprzedaż(west,X,irak) • West jest Amerykaninem amerykanin(west) • Rakiety są bronią X rakieta(X)=>broń(X) • Irak jest państwem państwo(irak) • Ameryka jest państwem państwo(ameryka) • Irak jest wrogiem Ameryki wróg(irak,ameryka)
Baza wiedzy X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) X posiada(irak,X) rakieta(X) X posiada(irak,X) rakieta(X) =>sprzedaż(west,X,irak) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka)
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) X posiada(irak,X) rakieta(X) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(Irak,ameryka) Opuszczenie kwantyfikatora szczegółowego
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) X posiada(irak,X) rakieta(X) X posiada(irak,X) rakieta(X) =>sprzedaż(West,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Opuszczenie koniunkcji
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Opuszczenie kwantyfikatora ogólnego
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) X rakieta(X)=>broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) rakieta(m1)=>broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzY
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) rakieta(m1)=>broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Reguła odrywania
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) rakieta(m1)=>broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Opuszczenie kwantyfikatora ogólnego
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) X posiada(irak,X) rakieta(X) =>sprzedaż(west,irak,X) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) posiada(irak,m1) rakieta(m1) =>sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) posiada(irak,m1) rakieta(m1) =>sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Reguła odrywania
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) posiada(irak,m1) rakieta(m1) =>sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Opuszczenie kwantyfikatora ogólnego
X,Y,Z amerykanin(X) broń(Y) państwo(Z) nieprzyjaciel(Z) sprzedaż(X,Y,Z) =>przestępca(X) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Opuszczenie kwantyfikatora ogólnego
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) X wróg(X,ameryka)=>nieprzyjaciel(X) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) wróg(irak,ameryka)=>nieprzyjaciel(irak) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) wróg(irak,ameryka) =>nieprzyjaciel(irak) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Reguła odrywania
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) wróg(irak,ameryka) =>nieprzyjaciel(irak) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) rakieta(X) broń(X) państwo(irak) państwo(ameryka) wróg(irak,ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) nieprzyjaciel(irak) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Baza wiedzy
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) nieprzyjaciel(irak) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) wróg(irak,ameryka) Dołączenie koniunkcji
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) wróg(irak,ameryka) nieprzyjaciel(irak) posiada(irak,m1) rakieta(m1) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) państwo(ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) wróg(irak,ameryka) posiada(irak,m1) rakieta(m1) państwo(ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,irak,m1) Baza wiedzy
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) wróg(irak,ameryka) posiada(irak,m1) rakieta(m1) państwo(ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,irak,m1) Reguła odrywania
amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) =>przestępca(west) wróg(irak,ameryka) posiada(irak,m1) rakieta(m1) państwo(ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,irak,m1) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,m1,irak) przestępca(west) wróg(irak,ameryka) posiada(irak,m1) rakieta(m1) państwo(ameryka) amerykanin(west) broń(m1) państwo(irak) nieprzyjaciel(irak) sprzedaż(west,irak,m1) Baza wiedzy Uwaga! W rzeczywistości do bazy wiedzy są dołączane nowe fakty Niczego się nie usuwa!
Zadanie • Zapisać bazę wiedzy z początku wnioskowania w Prologu i sprawdzić czy West jest przestępcą • 10 faktów i reguł • Prolog nie używa kwantyfikatorów: • Każdy fakt ze zmiennymi ma kwantyfikator ogólny • Kwantyfikatory szczegółowe usunąć używając reguły opuszczania (zamienić zmienne na nazwy) • Implikacja jest odwrócona (konkluzja :- przesłanki)
Kłopotów z wnioskowaniem c.d. • Baza wiedzy rośnie po każdym kroku • Więc trzeba szukać wśród większej ilości faktów • Opuszczanie kwantyfikatora ogólnego dodatkowo problematyczne -> można podstawić dowolne Symbole podstawowe (skąd wiedzieć jakie?) • Skąd wiedzieć jakie fakty powiązać przy pomocy koniunkcji?
posiada(irak,m1) rakieta(m1) X posiada(irak,X)rakieta(X) =>sprzedaż(west,irak,X) sprzedaż(west,irak,m1) Istnieje takie podstawienie zmiennych do faktów i implikacji które pozwala Wywnioskować konkluzję z odpowiednim podstawieniem Uogólniona reguła odrywania
Wnioskowanie z URO • Uogólniona reguła odrywania jest bardziej efektywna – robi kilka kroków wnioskowania za jednym razem • Podstawienie za zmienne jest „rozsądne” tzn. gwarantuje dodanie istotnych faktów, nie jest losowe – tak jak opuszczenie kwantyfikatora ogólnego • Wykorzystuje prekompilowaną postać kanoniczną zdań (klauzule Horna) – dzięki temu nie trzeba dokonywać konwersji w trakcie dowodzenia • Kwantyfikator ogólny jest pomijany • Koniunkcja jest usuwana przy pomocy reguły opuszczania koniunkcji • Kwantyfikator szczegółowy jest zamieniany na nazwy obiektów
Przykład • X posiada(irak,X)rakieta(X) • posiada(irak,m1)rakieta(m1) • posiada(irak,m1) • rakieta(m1)
Wnioskowanie wprzód(Forward chaining) • U. R. Odrywania na początkowej bazie wiedzy pozwala dołożyć do niej kolejne fakty (wywnioskowane) • Te z kolei pozwalają na dalsze wnioskowanie P Q PQ=>Z P Q PQ=>Z P Q PQ=>Z
Wnioskowanie wstecz(Backward chaining) • Zaczynamy od tego co chcemy udowodnić • Szukamy implikacji, które pozwalają to wywnioskować • Próbujemy odszukać w bazie wiedzy lub wywnioskować przesłanki tych implikacji • Wnioskowanie wstecz jest używane kiedy znamy cel P Q PQ=>Z P Q PQ=>Z P Q PQ=>Z
Kompletność wnioskowania • Baza wiedzy X P(X)=>Q(X) X ~P(X)=>R(X) X Q(X)=>S(X) X R(X)=>S(X) • Chcemy wywnioskować S(X) ponieważ albo P(X) albo ~P(X) jest prawdą
Kompletność wnioskowania • X ~P(X)=>R(X) – nie da się przedstawić w postaci klauzuli Horna • Zatem: • Wnioskowanie przy pomocy U.R. odrywania jest niekompletne • Istnieją takie bazy wiedzy które nie pozwalają udowodnić prawdziwych twierdzeń przy pomocy wnioskowania wprzód czy wstecz
Rezolucja • wnioskowanie przez przypadki • wnioskowanie przez „przechodniość” implikacji • Rezolucja pozwala tworzyć nowe implikacje więc jest „silniejsza” niż reguła odrywania • Wykorzystanie rezolucji we wnioskowaniu wprzód i wstecz nie daje kompletności ...
Rezolucja a reguła odrywania • Rezolucja jest uogólnioną regułą odrywania jest równoważne
Dowód nie wprost (przez zaprzeczenie, reductio ad absurdum) • Wnioskowanie wprzód i wstecz nie daje kompletności nawet z użyciem rezolucji, np. nie można z pustej bazy wiedzy udowodnić p~p • Aby udowodnić p uznajemy że ~p jest prawdą (dodajemy ~p do bazy wiedzy) i próbujemy osiągnąć sprzeczność. Wtedy p jest udowodnione • W ten sposób otrzymujemy pewną formę kompletności (refutation completeness)