Sieci neuronowe

Typowanie polega na prognozowaniu wystąpień lub przerwy w wystąpieniu, wybranych jedynek i dwójek na podstawie wcześniejszych wystąpień. Głównym przeznaczeniem typowania jest wspomaganie typowania dwójek w połączeniu z systemem stawkowym. Zasada typowania oraz sposób przedstawienia wyników jest bardzo podobny do typowania - regresja liniowa. Różnica polega na zastosowanym algorytmie do prognozowania. Tutaj użyto jednokierunkowej, kilkuwarstwowej sieci neuronowej. Zadaniem sieci jest przewidywanie następnej przerwy lub wystąpienia na podstawie wcześniejszych wystąpień danej kombinacji. Można powiedzieć, że chcemy nauczyć sieć zależności funkcyjnej pomiędzy kilkoma poprzednimi wynikami a wynikiem następnym (przyszłym).

 

Jak wygląda prognozowanie wystąpień kombinacji za pomocą sieci?

 

Przykład:

Załóżmy, że liczba 1 wystąpiła w następujących losowaniach:

1, 5, 7, 13, 14, 20, 21, 22, 24, 29, 30, 36, 40, 41, 42, 48, 55, 56, 61, 63

 

Na podstawie tych danych tworzony jest zbiór uczący.

(1, 5); (5, 7); (7, 13); (13, 14); (14, 20); (20, 21); (21, 22); (22, 24); (24, 29); (29, 30); (30, 36); (36, 40); (40, 41); (41, 42); (42, 48); (48, 55); (55, 56); (56, 61); (61, 63);

 

Każda para liczb (próbka zbioru uczącego) to indeks poprzedniego losowania - Wei i indeks następnego losowania - Wyi, czyli sygnał wejściowy i oczekiwany sygnał wyjściowy. Na podstawie tego zbioru sieć jest uczona, tzn. jej wagi są tak ustawiane, aby błąd sieci był jak najmniejszy. Błąd sieci to suma kwadratów różnic między wartością na wyjściu sieci a wartością oczekiwaną dla każdej próbki ze zbioru uczącego i dany jest wzorem:

 

gdzie n - liczba próbek, di - oczekiwany sygnał wyjściowy sieci w i-tej próbce, wi - wartość otrzymana na wyjściu sieci 

 

Przykładowa struktura sieci czterowarstwowej w naszym przykładzie mogłaby wyglądać następująco:

 

 

Kółka oznaczają neurony, natomiast strzałki połączenia między neuronami (wagi - parametry swobodne sieci). Sieć zawiera 1 neuron wejściowy ponieważ w naszym przykładzie przewidujemy na podstawie jednego poprzedniego wyniku (w przypadku 2 wyników byłyby 2 neurony wejściowe itd.), 3 neurony w pierwszej warstwie ukrytej,  2 neurony w drugiej warstwie ukrytej oraz jeden neuron wyjściowy ponieważ prognozujemy tylko jedną wartość (przerwę lub wystąpienie). Sygnały wejściowe przechodzą (są przetwarzane) poprzez  kolejne warstwy, aż do warstwy wyjściowej  Sygnał wyjściowy każdego neuronu jest funkcją jego sygnałów wejściowych. Zachowanie sieci określają przede wszystkim wagi połączeń miedzy neuronami należącymi do różnych warstw. Liczba parametrów swobodnych (wag) w naszej sieci wynosi:

L = Nu1 * (Nwe + 1) + Nu2 * (Nu1 + 1) + Nwy * ((Nu2 + 1)  = 3 * 2 + 2 * 4 + 1 * 3 = 17, gdzie

 

Nwe - liczba neuronów w warstwie wejściowej

Nu1 - liczba neuronów w pierwszej warstwie ukrytej

Nu2 - liczba neuronów w drugiej warstwie ukrytej

Nwy - liczba neuronów w warstwie wyjściowej

Jedynka w nawiasach oznacza dodatkową wagę zwaną obciążeniem, tzn. każdy neuron posiada jedno dodatkowe wejście, które ma zawsze wartość 1.0 (nie pokazane na rysunku).

 

Uczenie sieci (optymalne ustawianie wag sieci) zostaje przerwane, gdy osiągnięty zostanie zadany poziom błędu. Prognoza polega na podaniu na wejście nauczonej sieci indeksu ostatniego losowania lub ostatniej przerwy. Wartość na wyjściu sieci to indeks losowania, w którym powinna pojawić się kombinacja lub przerwa, która zostaje zamieniona na indeks przyszłego wystąpienia kombinacji..

 

 

Podobnie jak w regresji liniowej do prognozowania można (a nawet trzeba - dobrą wartością może być 3) użyć kilku poprzednich wyników. Sieć będzie miała wtedy tyle wejść, ile jest poprzednich indeksów losowań.  

 

 

Parametry typowania są następujące: 

  • Długość kombinacji – prognozować można jedynki lub dwójki

  • Rodzaj prognozy - prognozować można wystąpienia lub przerwy w wystąpieniach (zalecane)

  • Liczba poprzednich wyników – ile ostatnich losowań (w których wystąpiła kombinacja) zostanie użytych do prognozy następnego losowania.

  • Parametry sieci:

  • Błąd sieci - uczenie sieci zostaje przerwane, gdy osiągnięty zostanie zadany poziom błędu. Ustawienie wartości 0 spowoduje, że sieć będzie uczona tak długo, aż osiągnięty zostanie zerowy błąd lub też dalsze uczenie nie przyniesie już poprawy.

  • Ograniczenie czasowe - maksymalny czas uczenia w sekundach dla pojedynczej kombinacji

  • Struktura sieci:

  • Automatyczne ustawienia - program sam dobiera strukturę sieci, tak aby stosunek liczby parametrów swobodnych sieci (wag) do liczby próbek zbioru uczącego był nie większy od zadanej wartości procentowej. Dodatkowo można określić, czy sieć ma posiadać jedną lub dwie warstwy ukryte.

  • Ręczna - użytkownik sam określa liczbę neuronów w pierwszej i drugiej warstwie ukrytej. Wpisanie 0 oznacza brak danej warstwy ukrytej

 

Zasady uczenia

  • Wielkość sieci - liczba próbek nie powinna być zbyt mała w stosunku do liczby parametrów swobodnych sieci. Zbyt duża liczba parametrów może spowodować nadmierne dopasowanie sieci do danych uczących, tzn. sieć osiągnie bardzo mały błąd na zbiorze uczącym, ale najprawdopodobniej nie będzie w stanie poprawnie prognozować. Innymi słowy sieć zatraci zdolność generalizacji (uogólnienia). Z tego wynika taki wniosek, aby nie starać się osiągnąć za wszelką cenę błędu zerowego (poprzez ciągłe zwiększanie liczby neuronów). Starajmy się uczyć sieć zaczynając od bardzo ubogiej struktury (kilka neuronów i jedna warstwa ukryta), zwiększając liczbę neuronów, aż osiągniemy satysfakcjonujący poziom błędu (np. 1.0)

  • Liczba warstw - do aproksymacji (przybliżania) dowolnej funkcji ciągłej wystarczy sieć z jedną warstwą ukrytą. Do aproksymacji dowolnej funkcji, miejscami nieciągłej, wystarczy sieć z dwiema warstwami ukrytymi. A więc najpierw uczymy sieć z jedną warstwą. Jeśli wyniki są niezadowalające możemy dodać drugą warstwę. Zazwyczaj liczba neuronów w drugiej warstwie powinna być mniejsza od liczby neuronów w warstwie pierwszej. Duża liczba neuronów (zarówno w pierwszej i drugiej warstwie) znacznie wydłuża czas uczenia, a i osiągniecie minimum globalnego (minimalnego błędu) staje się coraz trudniejsze i dłuższe

  • Wielkość zbioru uczącego - trudno się spodziewać, aby za pomocą zbioru próbek o wielkości np. 10 sieć nauczyła się dobrze prognozować. Próbek tych powinno być co najmniej kilkadziesiąt co przy prognozowaniu jedynek daje liczbę losowań cztery razy większą (każda jedynka powinna występować raz na 4 losowania), przy prognozowaniu dwójek daje 16 razy większą liczbę losowań. Np. przy prognozowaniu dwójki i wielkości zbioru 50 liczba losowań średnio powinna wynosić 900. Oczywiście rozważania dotyczą ML.

 

Wyniki typowania są pokazywane w tabeli na zakładce Wyniki. Opis kolumn tabeli jest następujący:

 

Kolumna Opis
K Kombinacja
Cz

Częstotliwość kombinacji (liczba wystąpień)

Ostatnie wystąpienie Zawiera liczbę oznaczającą ile losowań wstecz pojawiła się dana kombinacja (jeśli pojawiła się w ostatnim losowaniu wówczas będzie 0) oraz datę ostatniego losowania (najnowszego) w którym znajduje się ta kombinacja
Następne wystąpienie Zawiera liczbę oznaczającą po ilu losowaniach (od końca zakresu losowań) pojawiła się dana kombinacja (jeśli pojawiła się w następnym losowaniu wówczas będzie 0) oraz datę pierwszego losowania w którym znajduje się ta kombinacja. Jeśli kombinacja nie pojawiła się jeszcze w przyszłości wtedy wyświetlany jest znak '–'
Prog. Zawiera prognozę. Pierwsza liczba oznacza za ile losowań od końca zakresu losowań powinna pojawić się kombinacja (czyli przyszła przerwa kombinacji). Druga liczba (w nawiasie) oznacza indeks losowania w którym powinna pojawić się kombinacja
Przedział Jest to wartość prognozy uwzględniająca błąd prognozy (sieci). W wyniku powstaje przedział w którym powinna pojawić się kombinacja. Przedział jest tworzony następująco: [prognoza - błąd, prognoza + błąd]
Błąd Błąd uczenia sieci (średni błąd kwadratowy)
Budowa Podaje strukturę sieci, która została użyta do prognozowania danej kombinacji. Pierwsza wartość oznacza liczbę neuronów w pierwszej warstwie ukrytej, a druga - liczbę neuronów w drugiej warstwie ukrytej

 

Obok tabeli znajdują się dwie zakładki - na pierwszej znajduje się wykres wystąpień (przyszłe wystąpienie w funkcji wystąpienia przeszłego) kombinacji a na drugiej informacja o przerwach kombinacji.

 

 

 

Tworzenie typowania Sieć neuronowa

 

Aby utworzyć typowanie:

  • Wybierz z listy Typowania pozycję Sieć neuronowa i kliknij przycisk obok listy

  • Wybierz z menu Typowania pozycję Sieć neuronowa

 Aby wygenerować statystykę:

  • Wybierz z menu Zadania pozycję Start

  • Kliknij na pasku operacji przycisk Start

  • Wybierz z menu kontekstowego pozycję Generuj

Zostaną policzone częstotliwości dla wszystkich kombinacji danej długości. Teraz w tabeli należy zaznaczyć jedną lub kilka kolejnych kombinacji i nacisnąć przycisk Oblicz. Naciśnięcie przycisku Oblicz wszystko powoduje uruchomienie typowania dla wszystkich kombinacji w tabeli. Zaznaczone kombinacje będą kolejno prognozowane przez sieć, a wyniki będą pokazywane na bieżąco w tabeli. W panelu statusowym (dół okna) pokazywany jest postęp całkowity, aktualnie typowana kombinacja oraz aktualny błąd sieci (na początku uczenia szybko zmniejszający się).

 

 

 

Zobacz także:

Zakres losowań | Optymalne kombinacje | Typowanie redukcyjne | Regresja liniowa