Sieci neuronowe i uczenie maszynowe – laboratorium



Ćwiczenie
Uczenie warstwowych sieci neuronowych II
Zagadnienia Wykorzystanie zbioru weryfikującego, pre- i post-processing danych, interpretacja stanów wyjść sieci, odporność sieci na uszkodzenia, dobór parametrów sieci i algorytmu uczenia pod kątem maksymalizacji trafności klasyfikowania.
Narzędzie
Statistica NN
Zbiory danych IRIS, PIMA, BUPA

Uwagi ogólne:
  1. Celem ćwiczenia jest zaobserwowanie pewnych zależności pomiędzy wybranymi aspektami architektury i parametrami sieci a przebiegiem procesu uczenia.
  2. Ponieważ proces uczenia startuje z losowej konfiguracji wag i jest od niej zależny, w niektórych z poniższych ćwiczeń wskazane jest przeprowadzenie wiecej niż jednego procesu uczenia i uśrednienie wyników.
  3. Inne parametry nie wymienione w treści zadania można ustawić dowolnie, o ile nie zakłóca to przebiegu eksperymentu.


Zadanie 1. Sterowanie rozmiarem obszaru niepewnych odpowiedzi (braku odpowiedzi) sieci na granicach klas decyzyjnych (podczas testowania sieci)

  1. Utwórz i naucz sieć na zbiorze PIMA (architektura 8-4-1).

  2. Przeprowadź klasyfikowanie przykładów ze zbioru testującego (okno Statistics|Classification). Znajdź w tym oknie macierz pomyłek (ang. confusion matrix).

  3. Otwórz okno Edit|Pre-Post Processing. Pola Accept i Reject definiują, jakie wartości muszą mieć neurony w warstwie wyjściowej, aby móc zinterpretować ich stan jako decyzję o przypisaniu przykładu do odpowiedniej klasy decyzyjnej. Choć nie jest to kontrolowane przez program, powinno zachodzić Accept >= Reject

  4. Przy użyciu Excela sporządź wykres (trzy przebiegi na jednym wykresie) zależności PROCENTU przypadków z JEDNEGO ze zbiorów (uczącego, weryfikującego, lub testującego):
    – poprawnie zaklasyfikowanych (do wszystkich klas decyzyjnych razem),
    – niepoprawnie zaklasyfikowanych,
    – niezaklasyfikowanych
    w funkcji progu Accept., dla następujących wartości Accept i Reject:

    Accept

    Reject

    0.5

    0.5

    0.6

    0.4

    0.7

    0.3

    0.8

    0.2

    0.9

    0.1

    1.0

    0.0

  5. Czy na podstawie otrzymanego wykresu można zasugerować jakąś optymalną wartość obu progów dla tego zbioru przykładów i tej sieci?

 

Zadanie 2. Badanie odporności sieci na uszkodzenia

  1. Skonstruuj sieć dwuwarstwową o architekturze 4-3-3 dla problemu IRIS i naucz ją.

  2. Przeprowadź testowanie i zapisz trafność klasyfikowania.

  3. Otwórz edytor sieci (Edit|Network). Wyszukaj (w obu warstwach: ukrytej i wyjściowej!) i usuń z sieci (tj. wyzeruj) wagę najmniejszą co do wartości bezwzględnej (pomiń wiersz Threshold, zawierający progi neuronów). Przeprowadź ponownie testowanie sieci i zapisz wynik.

  4. Kroki z punku 3 powtórz ok. 10 razy, kolejno usuwając coraz większe wagi i notując trafność klasyfikowania. Sporządź wykres zależności trafności klasyfikowania w funkcji ilości usuniętych (najmniejszych) wag.

  5. Czy odporność sieci na uszkodzenia (usunięcia wag) jest wysoka?

  6. Czy jesteś w stanie na podstawie tak “zredukowanej” sieci powiedzieć małe-co-nieco (â Winnie-the-Pooh) o ważności poszczególnych atrybutów opisujących przykłady?

  7. Czy w konsekwencji “przerzedzenia” sieci można usunąć niektóre neurony? Jak należy to zrobić ? (jest tu mały kruczek)


Zadanie 3. Eksperymentalny dobór rozmiaru zbioru weryfikującego

Dla zbioru PIMA przeprowadź eksperyment uczenia i testowania, zmieniając proporcje pomiędzy zbiorem uczącym i weryfikującym.

  1. Wystartuj od następujących proporcji zbioru uczącego, weryfikującego i testującego 8:1:1.

  2. Przeprowadź uczenie (liczba epok >=300). Przetestuj sieć, zapisz trafność klasyfikowania, błąd klasyfikowania i procent przykładów niezaklasyfikowanych.

  3. Sukcesywnie zwiększaj rozmiar zbioru weryfikującego, zmniejszając rozmiar uczącego (pole Training w oknie (Edit|Data set), do proporcji 1:8:1 włącznie.

  4. Sporządź wykres zależności trafności klasyfikowania, błędu klasyfikowania i procentu przykładów niezaklasyfikowanych w funkcji proporcji rozmiaru zbioru weryfikującego do liczby przykładów, jakie mamy do dyspozycji podczas uczenia (czyli rozmiar zbioru uczącego + rozmiar zbioru weryfikującego). Czy można znaleźć jakąś wartość optymalną?


Zadanie 4. Porównanie ‘vanilla’ backpropagation z bardziej wyrafinowanymi algorytmami uczenia nadzorowanego sieci warstwowych

Dla zbioru PIMA przeprowadź eksperyment uczenia i testowania, używając poza standardowym (vanilla) algorytmem backpropagation innych algorytmów uczenia (np. QuickPropagation, Delta-bar-Delta). Dla zapewnienia porównywalności wyników, w poszczególnych eksperymentach zachowaj tą samą konfigurację sieci i warunki stopu. Czy któryś z algorytmów jest wyraźnie lepszy? Porównaj liczbę epok uczenia.

Opis metody DeltaBarDelta znaleźć można na stronach Statsoftu i tutaj. Metoda ta jest bardzo zbliżona do algorytmu RPROP (zazwyczaj krótko omawianego na wykładzie), a dokładniej:

Opis metody Quick Propagation, która stosuje tzw. batch updating, tj. uśrednia gradient i modyfikuje wagi sieci po całej epoce, można znaleźć tu.

UWAGA! Algorytmy QuickProp i DeltaBarDelta są dość trudne do parametryzacji. Poza tym jest chyba jakaś pluskwa w programie, bo po uruchomieniu QuickProp’a zdarzyło mi się, że przestał działać zwykły Bprop.

Jeżeli dobór parametrów algorytmów QuickProp i DeltaBarDelta okaże się zbyt trudny, alternatywnie wykonaj badanie wpływu członu bezwładności (momentum) na przebieg procesu uczenia algorytmem wstecznej propagacji błędu, zmieniając odpowiedni parametr np. w zakresie 0.0 - 0.5.


Zadanie 5. Inne sieci warstwowe – sieci z jednostkami o symetrii kołowej (RBF)

  1. Zbuduj sieć RBF dla problemu IRIS.

  2. Otwórz edytor sieci (Edit|Network). Zwróć uwagę na różnice w polach Act fn i PSP in w porównaniu z perceptronami.

  3. Naucz sieć. Uczenie składa się z trzech etapów: ustalania centrów poszczególnych neuronów, ustalenia promieni (deviation), które decydują o stopniu “spłaszczenia” funkcji Gaussowskich, oraz obliczenia wag neuronu wyjściowego. Zwróć uwagę na czas uczenia.

  4. Obejrzyj funkcję odpowiedzi wybranych neuronów w warstwie ukrytej i neuronów w warstwie wyjściowej (Run|Response Surface). Możesz zmieniać też zmienne niezależne (atrybuty). Zauważ różnice w stosunku do sieci z jednostkami logistycznymi.

  5. Zastanów się, jakie konsekwencje ma niewłaściwy dobór promieni. Co będzie się działo, gdy promienie będą za duże? Co, gdy za małe? (związek z generalizacją).

  6. Przetestuj sieć dla różnych metod uczenia, tj. dla różnych inicjalizacji centrów (Sample, K-means) i różnych sposobów ustalania odchyleń (Explicit, Isotropic, K-nearest). Najlepiej miej otwarty edytor sieci; obserwuj jakie konsekwencje ma wybranie poszczególnych sposobów uczenia.

  7. Porównaj sieć RBF z siecią typu Multilayer Perceptron na trudniejszym zbiorze przykładów (PIMA lub BUPA).


Zadanie 6. Konkurs na wyciskanie

Manipulując:

spróbuj “wycisnąć” jak największą trafność klasyfikowania na zbiorze testującym dla problemu PIMA.

OPCJA: W miarę możliwości porównaj uzyskany wynik z trafnością otrzymaną przy użyciu drzew decyzyjnych.

UWAGA! Aby zapewnić porównywalność wyników pomiędzy poszczególnymi grupami (powtarzalność eksperymentu), nie zmieniaj oryginalnego przyporządkowania przykładów do zbioru testującego!