Laboratorium 06

Transkrypt

Laboratorium 06
Wstęp do sieci bayesowskich — Zadania lista 5
Piersa Jarosław
2010-04-14
Przypomnienie Zdarzenia X i Y nazywany niezależnymi jeżeli
P(X|Y ) = P(X)
równoważna definicja:
P(X ∧ Y ) = P(X)P(Y )
Zdarzenia X i Y nazywany warunkowo niezależnymi pod warunkiem wiedzy A jeżeli
P(X|AY ) = P(X|A)
można tę zależność przepisać w formie
P(X ∧ Y |A) = P(X|A)P(Y |A)
Zadanie 0
Uzasadnij równoważności obu form definicji.
Zadanie 1 Sieć bayesowska posiada węzły A, B i C, ale jej struktura nie jest znana. Uzyskano następujące wyniki:
• (ABC) = (ttt) × 3, (tnt) × 3, (ntt), (nnn) × 3, (tnn) × 9, (ttn) × 3, (nnt), (ntn)
• (ABC) = (tnt), (ttt), (nnt), (ttt), (nnn), (ttn), (nnn)(ttn)
• (ABC) = (tnt) × 9, (ttn) × 2, (tnn) × 1, (nnt) × 2, (ntn) × 4, (nnn) × 2
• (ABC) = (ttt), (ttn), (tnt) × 2, (tnn) × 4, (ntt), (nnt) × 2, (nnn)
Czy na podstawie powyższych list można stwierdzić, że A i B są niezależne? Czy A i B są niezależne
pod warunkiem C? Wykorzystaj listy do uczenia strukturalnego. Porównaj wyniki.
Zadanie 2 Niezależności strukturalne. D-separacja.
Rozważmy sieci:
• B → A → C.
• B ← A → C.
• B → A ← C.
Kiedy wprowadzenie wiedzy do węzła A powoduje niezależność węzłów B i C? Czy wprowadzenie
wiedzy do pewnego potomka A (zamiast do A) też powoduje niezależność?
Znajdź przykłady intuicyjnie wyjaśniające uzyskane przypadki. Przeanalizuj przykłady w pakietach
do pracy z sieciami bayesowskimi.
Zadanie 3 W poniższych sieciach bayesowskich wskaż węzły niezależne i niezależne warunkowo. Który
węzeł blokuje przepływ informacji po wprowadzeniu wiedzy? W których węzłach wprowadzenie wiedzy
otwiera przepływ informacji? Przeanalizuj podane przykłady w programie. Skonstruuj własne.
1
(a) Sieć 1
(b) Sieć 2
(c) Sieć 3
2
Uczenie przy niepełnych danych Dana jest architektura sieci bayesowskiej bez CPT (lub z nimi,
ale chcemy je uaktualnić) oraz próbka ucząca być może zawierająca braki danych. Jak dobrać CPT w
takim przypadku?
1. Poza konkretnym prawdopodobieństwem konieczne jest również przetrzymywać wartości licznika
i mianownika, tj. ilość próbek spełniających dany wpis w tabeli (licznik) oraz ilość wszystkich
(mianownik). Licznik jest intywidualny dla każdego wpisu, mianownik jest wspólny dla całego
wiersza.
P(X = xi |Z = zj ) =
lij
#{przykłady które spełniają X = xi ∧ Z = zj }
=
mj
#{przykłady które spełniają Z = zj }
2. Przypisz wpisom w tabelach początkowe wartości:
• Jednostajne: lij = 1, mj = długość wiersza, jeżeli nie mamy żadnej wiedzy o tabelach,
• Pochodzące z istniejącej tablicy, jeżeli takimi dysponujemy i chcemy je uaktualnić:
mj = (int)(P(Z = zj ) · c)
lij = (int)(P(X = xi |Z = zj ) · mj )
P
P
Przy czym dla każdego węzła j mj = const oraz i lij = mj
3. Powtarzaj wiele razy:
(a) Wybierz przykład uczący y z listy (losowo ale bez zwracania!)
(b) (krok E — expectation) Uzupełnij brakujące wartości y zgodnie z aktualnym stanem sieci
bayesowskiej. Krok można wykonać losując nieznaną wartość na podstawie rodziców (mniej
dokładne, niezalecane!), lub na podstawie rodziców i potomków, np. za pomocą próbnika
Gibbsa: po określonej liczbie iteracji uzupełnić braki wartościami na jakich próbnik Gibbsa
się zatrzymał.
(c) (krok M — maximalization) Na podstawie uzupełnionego y i wcześniejszych danych oblicz
najlepsze wartości CPT. Aby nie uruchamiać algorytmu Dirichleta za każdym razem można:
• Zwiększyć liczniki dla wpisach, które spełniają uzupełniony y, o 1 (jedna komórka na całą
tabelę).
• Zwiększyć mianowniki, które spełniają uzupełniony y, o 1 (cały wiesz tabeli).
• Nowe prawdopodobieństwa: jeżeli wpis spełnia warunki licznika i mianownika:
P(X = xi |Z = zj ) =
lij + 1
mj + 1
Dla wpisów, które spełniają tylko warunek mianownika będzie:
P(X = xk |Z = zj ) =
lkj
mj + 1
Dla pozostałych wierszy w tablicy pozostanie:
P(X = xp |Z = zq ) =
lpq
mq
Zadanie programistyczne Zaimplementuj algorytm uczenia sieci bayesowskiej przy znanej architekturze: EM (expectation maximization). Podejście do architektury wedle uznania (wczytana z pliku,
predefiniowana — w uzasadnionym przypadku, wybrana z listy kilku gotowych, uzyskana z algorytmu
PC — jedno z następnych zadań). Użytkownik podaje listę przykładów, w tym również zawierające braki
danych. Ciekawe funkcjonalności: douczanie sieci, prktyczne zastosowanie, ciekawa wizualizacja (jak się
zmienia jakość filtu, lub skuteczność działań robota, w trakcie procesu uczenia), podgląd tablel przed, po
(i w trakcie) uczenia.
Punktacja — 2p
3