Sieci neuronowe i uczenie maszynowe – laboratorium


Ćwiczenie
Uczenie warstwowych sieci neuronowych I
Zagadnienia

Wpływ parametrów i architektury sieci na przebieg uczenia, liniowe i nieliniowe warstwowe sieci neuronowe, zagadnienie separowalności liniowej, algorytm wstecznej propagacji błędu, prędkość uczenia, warunki stopu

Narzędzie
Statistica NN
Zbiory danych AND, XOR, PIMA, BUPA


Zadanie 1: Różnice funkcjonalne pomiędzy sieciami jedno- i wielowarstwowymi oraz pomiędzy sieciami liniowymi a nieliniowymi (uczenie sieci warstwowych funkcji logicznej AND i funkcji różnicy symetrycznej XOR)

  1. Skonstruuj zbiór przykładów definiujący dwuargumentową funkcję ("bramkę") AND (File|New|Data set) i zachowaj go. Wszystkie 4 przykłady mają stanowić zbiór uczący. Jakie są klasy decyzyjne w tym zbiorze przykładów i jakie są ich liczności ?
  2. Wyobraź sobie (narysuj) pożądaną funkcję odpowiedzi sieci (trójwymiarowy wykres zależności wyjścia od dwóch wejść).
  3. Skonstruuj liniową sieć jednowarstwową o architekturze 2-1 (File|New|Network, Type=Linear, przycisk Advise). Uaktywnij okno wykresu błędu średniokwadratowego (Statistics|Training graph). Naucz sieć na problemie AND (Train|Multilayer perceptron|Back propagation). Obejrzyj funkcję odpowiedzi sieci (Run|Responce surface) i błędy dla poszczególnych przypadków (Statistics|Case errors).
  4. Spróbuj utworzyć sieć liniową dla problemu AND o liczbie warstw większej niż 2.
  5. Przerób sieć na
  6. nieliniową sieć jednowarstwową (ustawiając Act fn w Edit|Network na Logistic) i naucz na tym samym problemie.
  7. Wejdź do edytora sieci (Network|Edit) i przypatrz się wagom neuronu wyjściowego. Wykreśl w przestrzeni wejść prostą, którą definiuje neuron wyjściowy i oceń, czy i jak realizuje ona separację klas decyzyjnych.
  8. Wyobraź sobie (narysuj) pożądaną funkcję odpowiedzi sieci.
  9. Skonstruuj liniową sieć jednowarstwową o architekturze 2-1 i naucz na problemie XOR. Obejrzyj funkcję odpowiedzi sieci i błędy dla poszczególnych przypadków.
  10. Przerób sieć na
  11. nieliniową sieć jednowarstwową i naucz na tym samym problemie (zwróć uwagę, jak sieć stara się minimalizować błąd). Obejrzyj, jak zmienia się rozkład wag podczas procesu uczenia (Statistics|Weight distribution).
  12. Skonstruuj nieliniową sieć dwuwarstwową o architekturze 2-2-1 (File|New|Network, Type=Multilayer perceptron) i naucz na problemie XOR. Obejrzyj funkcję odpowiedzi.
  13. Obejrzyj wagi sieci w edytorze sieci (Edit|Network). Jakie proste definiują neurony w warstwie ukrytej (spróbuj je narysować w przestrzeni wejść) ? Jak można interpretować działanie neuronu wyjściowego ?
  14. Obejrzyj, jak zmienia się rozkład wag podcza
  15. s procesu uczenia. Jaka jest przyczyna takiego zachowania wag i jakie to może mieć konsekwencje (z "informatycznego" punktu widzenia) ?


Zadanie 2: Obserwacja zjawiska przeuczenia na przykładzie zbioru PIMA.

  1. Wczytaj zbiór PIMA i skonstruuj dla niego dwuwarstwową sieć nieliniową o architekturze 8-4-1.
  2. Wyłącz "inkrementacyjne" warunki stopu (ustawiając np. dużą wartość parametru Window w oknie warunków stopu)
  3. Przeprowadź uczenie algorytmem wstecznej propagacji błędu; obserwuj przebieg błędu dla zbioru uczącego i weryfikującego.


Zadanie 3: Dobór liczby neuronów w warstwie ukrytej na przykładzie zbioru IRIS.

  1. Dla zbioru IRIS przeprowadź co najmniej 5 eksperymentów uczenia nieliniowych sieci dwuwarstwowych o architekturach 4-n-3, dla n zmieniającego się w przedziale [2,10], przy wyłączonym kryterium warunku stopu na zbiorze weryfikacyjnym. Po każdym eksperymencie kopiuj przebieg błędu przez schowek do Excela.
  2. Przedstaw w Excelu na jednym wykresie przebieg błędu uczenia dla kolejnych wartości n.
  3. Czy istnieje jednoznaczna zależność pomiędzy n a przebiegiem błędu średniokwadratowego ? Czy biorąc pod uwagętylko przebeg błędu dla zbioru uczącego można ustalić optymalną liczbę neuronów w warstwie ukrytej ? Jeśli tak, to ile ona wynosi dla tego zbioru przykładów?