Wnioskowanie w systemach sztucznych

Slides:



Advertisements
Podobne prezentacje
PRAM.
Advertisements

Inżynieria Wiedzy Część 2
Mechanizm wnioskowania rozmytego
Dynamiczne struktury danych Listy, Kolejki, Stosy
Grażyna Mirkowska PJWSTK 15 listopad 2000
S – student, P – przedmiot, W – wykładowca
REGUŁOWO-MODELOWE SKORUPOWE SYSTEMY EKSPERTOWE Część 1
Języki programowania C++
Inteligencja Obliczeniowa Indukcja reguł - modele.
27/09/ Języki programowania 1 Piotr Górczyński Pętle.
Logiki (nie)klasyczne
KNW- Wykład 8 Wnioskowanie rozmyte.
Matematyka Dyskretna, G.Mirkowska, PJWSTK
Zamiana GWIAZDA-TRÓJKĄT
1 RISC – nasze założenia Podstawowe cechy: Wszystkie operacje są realizowane na rejestrach, Tylko operacje typu load i store wymagają dostępu do pamięci,
Stanisław KOZIEJ BADANIA NAUKOWE 2007 r
27/09/ Języki programowania 1 Piotr Górczyński Instrukcje warunkowego wyboru.
Instrukcje warunkowe Zajęcia 5.
ALGORYTMY GEOMETRYCZNE.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Systemy rozmyte Systemami rozmytymi nazywamy systemy (statyczne lub dynamiczne) w których wykorzystujemy zbiory rozmyte i właściwy im aparat matematyczny.
Model lingwistyczny – wnioskowanie Mamdani’ego
Materiały pomocnicze do wykładu
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
SZTUCZNA INTELIGENCJA ARTIFICIAL INTELLIGENCE
PASCAL (2) dr Anna Kwiatkowska.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Zależności funkcyjne.
Programowanie parametryczne CNC SINUMERIK-810T
Pierwsze programy.
Algorytmy i struktury danych
PHP: warunki, pętle, switch, break, continue
Programowanie strukturalne i obiektowe
Metody reprezentacji wiedzy – cz. 2.
Systemy/modele rozmyte – podstawy i struktury
C# Platforma .NET CZ.3 Kuba Ostrowski.
Rachunki Gentzena Joanna Witoch.
Instrukcja warunkowa i wyboru
Wnioskowanie w stylu Takagi - Sugeno.
Przyczyny stresu w miejscach pracy
Wykład 7 Synchronizacja procesów i wątków
PRZYGOTOWALI Bartosz Pawlik Daniel Sawa Marcin Turbiński.
Metoda studium przypadku jako element XI Konkursu Wiedzy Ekonomicznej
Andrzej Bielecki AGH Wydział EAIiIB Katedra Informatyki Stosowanej
Wnioskowanie w systemach sztucznych
567.Jakie prądy płyną przez poszczególne opory na schemacie poniżej, jeśli R 1 =3 , R 2 =7 , R 3 =20 , U=20V, a galwanometr wskazuje i G =0? B R1R1.
Zagadnienia AI wykład 6.
Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł.
KNW- Wykład 3 Powtórzenie. PROGRAM WYKŁADU NR 3 Przykładowe zadania z logiki Modele możliwych światów.
Zagadnienia AI wykład 5.
Instrukcje wyboru.
PHP Instrukcja warunkowa if Damian Urbańczyk. Warunek? Instrukcję warunkową wykorzystujemy wtedy, gdy chcemy sprawdzić pewien fakt, który może być prawdziwy.
Systemy wspomagające dowodzenie twierdzeń
Pętle – instrukcje powtórzeń
Wstęp do programowania Wykład 10 Programowanie w logice.
PRAWA LOGIKI RACHUNKU ZDAŃ. 2 FUNKCJA LOGICZNA funkcja zdaniowa, która zbudowana jest jedynie z tałych logicznych i zmiennych (zdaniowych lub nazwowych).
KNW K Konwencjonalne oraz N Niekonwencjonalne metody W Wnioskowania.
Funktory zdaniotwórcze ekstensjonalneintensjonalne.
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Systemy rozmyte – wnioskowanie Mamdani’ego I © Kazimierz Duzinkiewicz, dr hab.
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Systemy rozmyte – wnioskowanie Mamdani’ego II © Kazimierz Duzinkiewicz, dr hab.
Nawracanie i odcięcie Jakub Czoboda, Jezierski Aleksander, Skierkowski Paweł, Bembenista Kamil, Martynowski Witold.
Listy.
Logika dla prawników Tautologia.
Rekonstrukcja argumentu
Metody sztucznej inteligencji
Dane, zmienne, instrukcje
Instrukcja warunkowa if
REKODOWANIE łączenie kategorii zmiennej
Zapis prezentacji:

Wnioskowanie w systemach sztucznych Wnioskowanie dedukcyjne lub niezawodne jest realizowane zgodnie z zasadami logiki formalnej Wnioskowanie redukcyjne zakładające, że przesłanka wynika z konkluzji nie jest realizowane zgodnie z zasadami logiki formalnej i w związku z tym jest zawodne

Wnioskowanie dedukcyjne reguła modus ponens (reguła odrywania): |— A  B |— A |— B

Wnioskowanie dedukcyjne |— Jeżeli „X jest studentem”, to „X zdał maturę”. |— „X jest studentem”. |— „X zdał maturę”. |— „X nie jest studentem”. |— „X nie zdał matury”.

Wnioskowanie dedukcyjne reguła modus tollens: |— A  B |— ¬B |— ¬A

Wnioskowanie dedukcyjne |— Jeżeli „X jest studentem”, to „X zdał maturę”. |— „X nie zdał matury”. |— „X nie jest studentem”.

Wnioskowanie redukcyjne schematy wnioskowania: |— A  B |— A  B |— ¬A |— B |— ¬B |— A

Wnioskowanie redukcyjne |— Jeżeli „X jest studentem”, to „X zdał maturę”. |— „X nie jest studentem”. |— „X nie zdał matury”. |— „X zdał maturę”. |— „X jest studentem”.

Metody wnioskowania Wnioskowanie progresywne („w przód”) Wnioskowanie regresywne („wstecz”) Wnioskowanie mieszane

Przykład – przewidywanie bankructwa Oceniamy zagrożenie pewnej firmy bankructwem Pod uwagę bierzemy jego sytuację ekonomiczną (zadłużenie, rentowność) oraz sytuację rynkową (atrakcyjność oferty, zagrożenie ze strony konkurencji)

Typy i zmienne TYPES Ocena = "zły" , "dobry" OcenaZagrozenia = "wysokie" , "niskie" , "brak" VARIABLES Zadluzenie: Ocena Rentownosc: Ocena OcenaEkonomiczna: Ocena AtrakcyjnoscOferty: Ocena SytuacjaKonkurencyjna: Ocena OcenaRynkowa: Ocena ZagrozenieBakructwem: OcenaZagrozenia

RULE R9 IF OcenaEkonomiczna = "zły" AND OcenaRynkowa = "zły" THEN ZagrozenieBakructwem = "wysokie" RULE R10 IF OcenaEkonomiczna = "zły" AND OcenaRynkowa = "dobry" THEN ZagrozenieBakructwem = "niskie" RULE R11 IF OcenaEkonomiczna = "dobry" AND OcenaRynkowa = "zły" THEN ZagrozenieBakructwem = "niskie" RULE R12 IF OcenaEkonomiczna = "dobry" AND OcenaRynkowa = "dobry" THEN ZagrozenieBakructwem = "brak"

RULE R1 IF Zadluzenie = "zły" AND Rentownosc = "zły" THEN OcenaEkonomiczna = "zły" RULE R2 IF Zadluzenie = "zły" AND Rentownosc = "dobry" THEN OcenaEkonomiczna = "zły" RULE R3 IF Zadluzenie = "dobry" AND Rentownosc = "zły" THEN OcenaEkonomiczna = "dobry" RULE R4 IF Zadluzenie = "dobry" AND Rentownosc = "dobry" THEN OcenaEkonomiczna = "dobry"

RULE R5 IF AtrakcyjnoscOferty = "zły" AND SytuacjaKonkurencyjna = "zły" THEN OcenaRynkowa = "zły" RULE R6 IF AtrakcyjnoscOferty = "zły" AND SytuacjaKonkurencyjna = "dobry" THEN OcenaRynkowa = "dobry" RULE R7 IF AtrakcyjnoscOferty = "dobry" AND SytuacjaKonkurencyjna = "zły" THEN OcenaRynkowa = "zły" RULE R8 IF AtrakcyjnoscOferty = "dobry" AND SytuacjaKonkurencyjna = "dobry" THEN OcenaRynkowa = "dobry"

Wnioskowanie wprzód

Wnioskowanie wprzód

Wnioskowanie wprzód

Wnioskowanie wprzód Zaczynamy od faktu ‘Zadłużenie = zły’ Szukamy odpowiednich reguł Sprawdzamy, czy fakt ‘Rentownosc = zły’ RULE R1 IF Zadluzenie = "zły" AND Rentownosc = "zły" THEN OcenaEkonomiczna = "zły"

Wnioskowanie wprzód Fakt nie jest prawdziwy regułę zaznaczamy jako wykorzystaną i szukamy kolejnej Fakt ‘Rentownosc = dobry’ jest prawdziwy RULE R2 IF Zadluzenie = "zły" AND Rentownosc = "dobry" THEN OcenaEkonomiczna = "zły"

Wnioskowanie wprzód „Odpalamy” regułę, rejestrujemy nowy fakt ‘OcenaEkonomiczna = zły’ i zapisujemy do stosu faktów Szukamy kolejnej reguły, w przesłankach której mamy fakt ‘Zadłużenie = zły’ Takiej reguły już nie ma – usuwamy fakt ze stosu faktów i pobieramy kolejny

Wnioskowanie wprzód Załóżmy, że jest to fakt ‘Rentowność = dobry’ Wśród „niewykorzystanych” reguł poszukujemy odpowiedniej: RULE R4 IF Zadluzenie = "dobry" AND Rentownosc = "dobry" THEN OcenaEkonomiczna = "dobry"

Wnioskowanie wprzód Sprawdzamy czy fakt ‘Zadłużenie = dobry’ jest prawdziwy Ponieważ nie jest, regułę zaznaczmy jako wykorzystaną i szukamy kolejnej odpowiedniej Nie ma już żadnej takiej reguły – niczego nowego już nie wydedukujemy Usuwamy fakt ze stosu i pobieramy kolejny

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz

Wnioskowanie wstecz Stawiamy hipotezę, np. ‘ZagrożenieBankructwem = brak’ Silnik szuka reguł, w których konkluzją jest taki fakt: RULE R12 IF OcenaEkonomiczna = "dobry" AND OcenaRynkowa = "dobry" THEN ZagrozenieBakructwem = "brak"

Wnioskowanie wstecz Sprawdzamy, czy prawdziwe są przesłanki Pierwsza to ‘OcenaRynkowa = dobry’ Szukamy reguły, w której występuje taka konkluzja: RULE R8 IF AtrakcyjnoscOferty = "dobry" AND SytuacjaKonkurencyjna = "dobry" THEN OcenaRynkowa = "dobry"

Wnioskowanie wstecz Sprawdzamy, czy prawdziwe są przesłanki Pierwsza to ‘SytuacjaKonkurencyjna = dobry’ Szukamy reguły, w której występuje taka konkluzja – nie ma takiej reguły Silnik pyta o wartość logiczną tego faktu Jeżeli fakt jest prawdziwy to weryfikujemy kolejną przesłankę, jeśli nie to szukamy kolejnej reguły, która mogłaby potwierdzić, że ‘OcenaRynkowa = dobry’

Wnioskowanie mieszane - przykład

Dane jeżeli InneCechyMateriału_są_dobre i Wytrzymałość_jest_dobra wtedy Materiał_jest_dobry

Dane

Dane

Dane

Dane

Start i pierwsze kroki Zakładamy, że wytrzymałość jest dobra Szukamy wszystkich reguł, dla których zdanie jest przesłanką

Kolejne kroki Analizujemy pierwszą regułę i ustalamy, że ustalenie jej wartości wymaga oceny zdania: InneCechyMateriału_są_dobre Sprawdzamy, czy znamy wartość zdania Jeżeli nie, przeszukujemy konkluzje wszystkich reguł poszukując zdania Jeżeli nie znajdujemy reguły to po prostu pytamy o zdanie

Kolejne kroki Załóżmy, że zdanie jest fałszywe Zaznaczamy regułę jako odpaloną i powtarzamy, kroki 4, 5 i 6 dla kolejnej reguły Jeżeli żadna reguła nie może być odpalona kończymy wnioskowanie Załóżmy jednak że zdanie InneCechyMateriału_są_złe jest prawdziwe

Kolejne kroki Odpalamy regułę: jeżeli InneCechyMateriału_są_złe i Wytrzymałość_jest_dobra wtedy Materiał_jest_średni i przyjmujemy, że zdanie Materiał_jest_średni jest prawdziwe

Kolejne kroki Szukamy wszystkich reguł, dla których zdanie jest przesłanką

Kolejne kroki Realizujemy kroki 3 do 9 dla zaznaczonych reguł Załóżmy, że zdanie Powtarzalność_jest_dobra jest prawdziwe Ustalamy, że zdanie Jakość_tak jest prawdziwe Wracamy do punktu 12

Kolejne kroki

Kolejne kroki Załóżmy, że ustalamy wartość zdania Ekonomia_jest_dobra

Kolejne kroki Musimy ustalić wartość zdań: Cena_jest_dobra i WarunkiPłatności_są_dobre Powtarzamy kroki 3 do 6 dla obu zdań

WybranyStart = wybierz zmienną startową() dodaj WybranyStart do StosZmiennychWprzod while nie pusty StosZmiennychWprzod { AktualnaZmienna = zdejmij ze StosZmiennychWprzod for each Wyrazenie in WyrazeniaZwiazaneZeZmienna(AktualnaZmienna) _wyrazenie = EwaluujWyrazenie(Wyrazenie) for each Przeslanka in PrzeslankiDlaKtorychWyrazenieJestLewaStrona(_wyrazenie)

{ WyrazenieZPrawejStrony = ZnajdzWyrazenieZPrawejStrony(Przeslanka) if (WartoscWyrazeniaZPrawejStrony == null) EwaluujWyrazenie(WyrazenieZPrawejStrony) } EwaluujPrzeslanke(Przeslanka) ZmienWartoscPrzeslanki(Przeslanka) if (WartoscLogicznaPrzeslanki == true) dodaj Przeslanka do StosPrzeslanek }

for each Przeslanka in PrzeslankiDlaKtorychWyrazenieJestPrawaStrona(Wyrazenie) { WyrazenieZLewejStrony = ZnajdzWyrazenieZLewejStrony(Przeslanka) if (WartoscWyrazeniaZLewejStrony == null) EwaluujWyrazenie(WyrazenieZLewejStrony) } EwaluujPrzeslanke(Przeslanka) ZmienWartoscPrzeslanki(Przeslanka) if (WartoscLogicznaPrzeslanki == true) dodaj Przeslanka do StosPrzeslanek

while nie pusty StosPrzeslanek { AktualnaPrzeslanka = zdejmij ze StosPrzeslanek for each Regula in RegulyZwiazaneZPrzeslanka(AktualnaPrzeslanka) if SprawdzRegule(Regula) EwaluujRegule(Regula) }

EwaluujWyrazenie(X) for each Zmienna in ZmienneZwiazaneZWyrazeniem(X) { if (WartoscZmiennej == null) // wartość zmiennej nie jest znana WartoscZmiennej = EwaluujZmienna(Zmienna) } dodaj do ListaZmiennych WartoscZmiennej return EwaluatorTekstuWyrazenia(X, ListaZmiennych)

EwaluujPrzeslanke(X) Przeslanka = SzukajPrzeslanke(X) // pełny opis przesłanki WartoscWyrazeniaZLewejStrony = EwaluujWyrazenie(LewaStronaPrzeslanki) WartoscWyrazeniaZPrawejStrony = EwaluujWyrazenie(PrawaStronaPrzeslanki) return EwaluatorLogiczny(WartoscWyrazeniaZLewejStrony, WartoscWyrazeniaZPrawejStrony, Operator)

EwaluujZmienna(X) Zmienna = SzukajZmienna(X) if (KategoriaZmiennej == intermediate) { return WnioskujWstecz(X) } else Wyrazenie = SzukajWyrazeniaKonkluzjiOkreslajacejZmienna(X) Akcja = SzukajAkcjiDlaWyrazenia(Wyrazenie) return EgzekutorAkcji(X, Akcja)

SprawdzRegule(X) RegulaPrawdziwa = true for each Przeslanka in PrzeslankiZwiazaneZRegula(X) { if (WartoscLogicznaPrzeslanka == null) EwaluujPrzeslanke(Przeslanka) } if (WartoscLogicznaPrzeslanka == false) return false) break i return true

EwaluujRegule(X) ZmienZmienna(ZmiennaOkreslanaPrzezRegule ,EwluujWyrazenie(WyrazenieWKonkluzjiReguly(X)) dodaj ZmiennaOkreslanaPrzezRegule do StosZmiennychWprzod

WnioskujWstecz(X) for each Reguly in WszystkieRegulyOkreslajaceWartoscZmiennejX { if SprawdzRegule(Regula) EwaluujRegule(Regula) } if (RegulaPrawdziwa == true)