Sztuczna inteligencja/SI Ćwiczenia 12

From Studia Informatyczne

Spis treści

Zadanie 1

Narysować trójwymiarowy wykres przedstawiający funkcję realizowaną przez aproksymator - sieć neuronową z rozdziału 12.

Rozwiązanie

Dla przykładowego zestawu wag otrzymano wykres odpowiedzi sieci jak na rysunku poniżej. Stąd pobrać można źródła programu napisanego w języku Octave. Zmieniając wagi (zapisane w zmiennych W, V i Y) modyfikuje się wygląd funkcji. Zachęcamy do eksperymentów!

Grafika:M12_Z1.png

Zadanie 2

Z czego wynika potrzeba rozdzielenia zbioru danych na dane uczące i testowe?

Rozwiązanie

Rozwiązując zadanie aproksymacji funkcji dobieramy parametry modelu w ten sposób, by minimalizować błąd przybliżenia. Najczęściej wartości poszukiwanej funkcji dane są w dość ograniczonej liczbie punktów należących do jej dziedziny. Oznacza to, że w tych punktach błąd będzie sukcesywnie malał, aż do osiągniecia minimum (lokalnego lub globalnego) funkcji błędu, natomiast o błędzie w punktach dziedziny nie reprezentowanych w zbiorze danych nie będziemy wiedzieć nic. Użycie takiego modelu do nowych danych da najpewniej bardzo zły wynik - w pobliżu punktów, na których "trenowany" był model, błąd będzie niewielki - poza nimi bardzo duży.

Z tego powodu posiadany zbiór danych dzieli się na części trenującą i testującą. Minimalizację funkcji błędu przeprowadza się na zbiorze trenującym, a ocenę klasyfikatora na zbiorze testującym. Pozwala to ocenić zachowanie modelu poza zbiorem trenującym - a więc daje próbkę zachowania dla danych rzeczywistych. Jeśli błąd klasyfikatora na zbiorze testującym będzie na akceptowalnie niskim poziomie oznacza to najpewniej, że także dla rzeczywistych danych będzie on działał poprawnie (lub raczej: zadowalająco poprawnie). W przeciwnym wypadku należy powtórzyć trening i test modelu, być może przy innym podziale danych.

Zadanie 3

Załóżmy, że mamy dwie różne sieci neuronowe, uczone niezależnie od siebie na tym samym zbiorze uczącym. Załóżmy też, że rozkład błędu obu sieci na zbiorze testowym jest rozkładem normalnym o zerowej wartości oczekiwanej i standardowych odchyleniach odpowiednio: \sigma_1 i \sigma_2. Jaki jest rozkład na zbiorze testowym wartości 0,5(y_1  + y_2)\, gdzie y_1\,, y_2\, oznaczają wyjścia obu sieci? Jak można wykorzystać ten wynik do poprawy jakości aproksymacji?

Rozwiązanie

Odchylenie standardowe funkcji błędu średniej arytmetycznej wyjść obu sieci będzie równe 0,5\sqrt{\sigma_1^2 + \sigma_2^2}\,, wartość średnia zaś równa będzie zero. Takie odchylenie standardowe jest na pewno mniejsze od max(\sigma_1,\sigma_2)\, (ponieważ jeśli \sigma_1 > \sigma_2 to \sigma_1^2 + \sigma_1^2 > \sigma_1^2 + \sigma_2^2 a zatem \sigma_1 > {\sqrt{2} \over 2} * \sigma_1 > \sqrt{\sigma_1^2 + \sigma_2^2}). Oznacza to, że korzystając ze średniej artytmetycznej wyjść dwóch sieci możemy otrzymać mniejsze odchylenie standardowe błędu, niż gdybyśmy korzystali z jednej tylko sieci. Jeśli nie wiemy, która sieć powoduje większy błąd aproksymacji, to w ten sposób możemy uniknąć ryzyka wybrania gorszej sieci kosztem niewybrania sieci lepszej.

Zadanie 4

Załóżmy, że mamy użyć sieci neuronowej do prognozowania przyszłej wartości pewnego procesu zmiennego w czasie, charakteryzującego się tym, że jego przyszłe wartości zależą od przeszłych zgodnie z równaniem:

y(t) = f(y(t-1), y(t-2), ... ,y(t-h))\,

gdzie t\, oznacza czas, f\, jest nieznaną funkcją, zaś h\, stałą, określającą najdalszą zależność między przeszłością a przyszłością (taki proces jest przykładem tzw. szeregu czasowego).

Zaproponować sposób użycia sieci neuronowej do wykonania prognozy. Jak stworzyć zbiór trenujący dla sieci?

Rozwiązanie

Użyta zostanie sieć neuronowa o h wejściach i jednym wyjściu. Komplikacja budowy wewnętrznej sieci (ilość i wielkość warstw ukrytych) pozostaje do zdefiniowania. Mając danych n\, kolejnych wartości funkcji możemy utworzyć n-h+1\, h\,-elementowych wektorów wejściowych, który to zbiór należy podzielić na dane trenujące oraz testujące i za ich pomocą dobrać parametry aproksymatora (wagi neuronów).

Zadanie 5

Czym skutkuje obecność w zbiorze trenującym elementów powtarzających się?

Rozwiązanie

Jest to zjawisko "nadreprezentacji" - nadmiernej reprezentacji pewnej części dziedziny aproksymowanej funkcji. Jest ono niepożądane, ponieważ algorytm doboru parametrów aproksymatora może mieć tendencję do "skupiania się" na tych punktach - ewentualny błąd aproksymacji funkcji w owych punktach będzie miał większą wagę i zostanie zminimalizowany w pierwszej kolejności. Wynik może być podobny, jak przy braku zbioru testującego - w części dziedziny aproksymator będzie miał mniejszy błąd, co zapewne spowoduje (dużo) większy błąd w innych jej częściach. Jeśli nie zależy nam na szczególnie dobrej aproksymacji w wybranych elementach (w wybranej części dziedziny aproksymowanej funkcji), powinniśmy usunąć wszystkie powtórzenia z danych.

Zadanie 6

Funkcja błędu minimalizowana w czasie uczenia sieci neuronowej ma minima lokalne i punkty siodłowe (w których gradient zeruje się), a także obszary płaskie o bardzo małych wartościach modułu gradientu. Z czego wynikają te zjawiska? Dla jakich wartości wag da się je zaobserwować?

Rozwiązanie

Zjawiska te wynikają z użytej funkcji aktywacji neuronu - tangensa hiperbolicznego. Sieć neuronowa jest aproksymatorem nieliniowym, dlatego dla pewnych zestawów wag występują lokalne minima funkcji błędu.

Obszary o małych wartościach modułu gradientu mogą być efektem wejścia funkcji aktywacji w obszar nasycenia. Dla wartości z tego obszaru funkcje aktywacji przyjumją wartość 1 lub -1 (są to asymptoty tanh). Dzieje się tak dla odpowiednio dużych lub małych wartości wag - gdy suma wejść wymnożonych przez odpowiednie wagi daje w wyniku wartość, w której otoczeniu funkcja aktywacji nieznacznie zbliża się lub oddaja od 1 lub -1.