6. SIECI NEURONOWE
Neuron:
Do wejść doprowadzane są sygnały dochodzące z neuronów warstwy poprzedniej. Każdy sygnał mnożony jest przez odpowiadającą mu wartość liczbową zwaną wagą. Wpływa ona na percepcję danego sygnału wejściowego i jego udział w tworzeniu sygnału wyjściowego przez neuron. Waga może być pobudzająca - dodatnia lub opóźniająca – ujemna; jeżeli nie ma połączenia między neuronami to waga jest równa zero. Zsumowane iloczyny sygnałów i wag stanowią argument funkcji aktywacji neuronu.
Sztuczny neuron - prosty system przetwarzający wartości sygnałów wprowadzanych na jego wejścia w pojedynczą wartość wyjściową, wysyłaną na jego jedynym wyjściu (dokładny sposób funkcjonowania określony jest przez przyjęty model neuronu). Jest to podstawowy element sieci neuronowych, jednej z metod sztucznej inteligencji, pierwowzorem zbudowania sztucznego neuronu był biologiczny neuron.
biologiczna budowa neuronu,
Neuron McCullocha-Pittsa (ang. McCulloch-Pitts neuron, threshold neuron) to podstawowy blok budulcowy sztucznych sieci neuronowych. Jest on wybitnie uproszczonym matematycznym modelem biologicznego neuronu. Neuron McCullocha-Pittsa posiada wiele wejść i jedno wyjście. Każdemu z wejść przyporządkowana jest liczba rzeczywista - tak zwana waga wejścia. Wartość na wyjściu neuronu obliczana jest w następujący sposób:
1. obliczana jest suma iloczynów wartości xi podanych na wejścia i wag wi wejść:
2. na wyjście podawana jest wartość funkcji aktywacji f(s) dla obliczonej sumy
Reguła Hebba
Opierając się na zasadzie tworzenia się odruchów warunkowych, Hebb wprowadził następującą zasadę. Jeśli aktywny neuron A jest cyklicznie pobudzany przez neuron B, to staje się on jeszcze bardziej czuły na pobudzenie tego neuronu. Jeśli przez xA i xB oznaczymy stany aktywacji neuronów A i B, a przez wAB - wagę ich połączenia synaptycznego, to powyższą regułę można zapisać w postaci następującego równania:
gdzie oznacza pewną stałą dodatnią, sterującą procesem uczenia.
Reguła Hebba posiada istotną wadę, mianowicie prowadzi do procesu rozbieżnego. Aby to udowodnić, rozważmy liniowy element przetwarzający. Jego stan aktywacji x w chwili k jest równy:
gdzie w(k) oznacza wektor wag wejściowych połączeń synaptycznych elementu, u(k) - wektor wejściowy należący do pewnego zbioru wektorów uczących, wzięty z tego zbioru zgodnie z rozkładem prawdopodobieństwa, oraz podany na wejście elementu w chwili k-tej.
Zgodnie z ogólną regułą kolejne prezentacje wzorców ze zbioru zmieniają wektor wag o przyrost W(k) określony zależnością:
Dalej będziemy zakładać, że elementy ciągu u(k) są niezależne (tzn. wynik losowania wzorca ze zbioru w danej chwili nie zależy od wyników losowań w innych chwilach). Warunkiem zbieżności procesu uczenia jest zerowanie się (od pewnego momentu) średniej zmiany wag:
gdzie:
jest macierzą korelacji obrazów wejściowych, a E. operatorem wartości oczekiwanej.
Zgodnie z definicją macierz A jest macierzą symetryczną. Ponadto można wykazać, że jest dodatnio półokreślona, gdyż:
Wynika stąd, że wszystkie jej wartości własne są rzeczywiste i nieujemne. Wektory własne odpowiadające różnym wartościom własnym są ortogonalne. Z warunku zbieżności procesu uczenia wynika, że potencjalny stan równowagi wr jest wektorem własnym a0 macierzy Aodpowiadającym zerowej wartości własnej, tzn. wr = a0, gdzie Aa0 = 0. Aby przekonać się, czy stan a0 jest stanem stabilnym, wystarczy sprawdzić, czy po niewielkim zaburzeniu układ kierujący się regułą Hebba do niego powróci.
Niech wektor w(0) będzie wektorem bliskim a0, tzn. w(0) = a0 + e0, przy czym e(0) jest niewielkim zaburzeniem a0. Wartość oczekiwana wektora wag w (k + 1)-ym kroku wyraża się zależnością:
Definiując e(k) = w(k) - a0 otrzymujemy:
Wynika stąd zależność:
Korzystając z ortogonalności wektorów własnych macierzy A, można ją przekształcić do postaci diagonalnej Z-1AZ = D, przy czym Z jest macierzą, której kolumny są kolejnymi wektorami własnymi macierzy A, D - macierzą diagonalną, której diagonala zawiera odpowiednie wartości własne macierzy A.
Definiując:
otrzymujemy zależność:
czyli:
Zauważmy, że macierz występująca po prawej stronie powyższego wzoru jest diagonalna. Dla stabilności potrzeba, aby limk Ee(k) = 0 lub równoważnie limk e~(k) = 0. Stąd i z ostatniej zależności otrzymujemy warunek:
gdzie j oznacza j-tą wartość własną macierzy A. Oczywiście warunek ten jest spełniony tylko wtedy, gdy:
Ponieważ jednak > 0, w konsekwencji otrzymujemy warunek:
Przeczy to jednak dodatniej półokreśloności macierzy korelacji A. Z przeprowadzonego rozumowania wynika więc rozbieżność procesu uczenia według reguły Hebba.
Funkcja aktywacji to pojęcie używane w sztucznej inteligencji do określenia funkcji, według której obliczana jest wartość wyjścia neuronów sieci neuronowej. Do najczęściej używanych funkcji aktywacji należą:
y(x) = ax + b
Uwagi:
Z reguły b = 0.
'obcięta' funkcja liniowa
funkcja progowa unipolarna
a - zadana wartość progowa
Uwagi:
Z reguły a = 0.
Taką funkcję aktywacji (a = 0) zastosowali w swojej pracy jako matematyczny model neuronu Warren McCulloch i Walter Pitts.
funkcja progowa bipolarna
a - zadana wartość progowa
Uwagi:
Z reguły a = 0.
funkcja sigmoidalna unipolarna
Uwagi:
Z reguły
.
Gdy
, funkcja przechodzi w progową unipolarną funkcję aktywacji.
funkcja sigmoidalna bipolarna (tangens hiperboliczny)
Uwagi:
Z reguły
.
Gdy
, funkcja przechodzi w progową bipolarną funkcję aktywacji.
perceptron wielowarstwowy
Perceptron wielowarstwowy
Ograniczenie liniowej separowalności perceptronu prostego można usunąć poprzez wprowadzenie warstw ukrytych. Oto struktura perceptronu wielowarstwowego:
przy czym i = 1, 2, ..., m; m - liczba elementów w warstwie wejściowej; j = 1, 2, ..., n; n - liczba elementów w warstwie wyjściowej; h = 1, 2, ..., H; H - liczba warstw ukrytych; kh - 1, 2, ..., KH; KH - liczba elementów w h-tej warstwie ukrytej; whkh-1, kh - waga połączenia pomiędzy elementami kh-1-tym oraz kh-tym odpowiednio w warstwach (h-1)-szej i h-tej.
zastosowanie sieci neuronowych -
Współcześnie nie ma wątpliwości, że sztuczne sieci neuronowe nie stanowią dobrego modelu mózgu[potrzebne źródło], choć różne ich postaci wykazują cechy charakterystyczne dla biologicznych układów neuronowych: zdolność do uogólniania wiedzy, uaktualniania kosztem wcześniej poznanych wzorców, dawanie mylnych odpowiedzi po przepełnieniu[potrzebne źródło]. Mimo uproszczonej budowy sztuczne sieci neuronowe stosuje się czasem do modelowania schorzeń mózgu[potrzebne źródło].
Sztuczne sieci neuronowe znajdują zastosowanie w rozpoznawaniu i klasyfikacji wzorców (przydzielaniu wzorcom kategorii), predykcji szeregów czasowych, analizie danych statystycznych, odszumianiu i kompresji obrazu i dźwięku oraz w zagadnieniach sterowania i automatyzacji.
Magazyn BYTE wymienia między innymi następujące zastosowania tych sieci:
diagnostyka układów elektronicznych
badania psychiatryczne
prognozy giełdowe
prognozowanie sprzedaży
poszukiwania ropy naftowej
interpretacja badań biologicznych
prognozy cen
analiza badań medycznych
planowanie remontów maszyn
planowanie postępów w nauce
analiza problemów produkcyjnych
optymalizacja działalności handlowej
analiza spektralna
optymalizacja utylizacji odpadów
dobór surowców
selekcja celów śledztwa w kryminalistyce
dobór pracowników
sterowanie procesów przemysłowych.
Najpopularniejsze obecnie zastosowanie sieci neuronowych[potrzebne źródło]:
w programach do rozpoznawania pisma (OCR)
na lotniskach do sprawdzania, czy prześwietlony bagaż zawiera niebezpieczne ładunki
do syntezy mowy.
Uczenie sieci neuronowych bez nauczyciela
Podczas uczenia bez nauczyciela pożądana odpowiedz nie jest znana. Ze względu na brak informacji o poprawności, czy niepoprawności odpowiedzi sieć musi się uczyć poprzez analizę reakcji na pobudzenia, o których naturze wie mało lub nic. W trakcie analizy parametry sieci podlegają zmianom, co nazywamy samoorganizacją.
Rys. Uczenie bez nauczycielem
Uczenie sieci neuronowych z nauczycielem
W trybie uczenia z nauczycielem (nazywanym również uczeniem pod nadzorem) oprócz danych wejściowych posiadamy również sygnały wyjściowe, jakie chcemy uzyskać. Dobór wag musi być przeprowadzony w taki sposób, aby aktualny sygnał wyjściowy y był najbliższy wartości zadanej d.
Rys. Uczenie z nauczycielem
Inaczej mówiąc, celem uczenia pod nadzorem jest minimalizacja odpowiednio zdefiniowanej funkcji celu, która umożliwi dopasowanie wartości aktualnych odpowiedzi neuronów wyjściowych do wartości żądanych.
, błąd średniokwadratowy ???
przeuczenie sieci - Ilu naukowców tyle metod budowy i uczenia sieci. Podstawy są wszystkim znane, jednak pomimo tego nie ma jednego wzoru, który jednoznacznie określałby jak budować sieć. Z własnych obserwacji [dotyczących predykcji rynków giełdowych] mogę powiedzieć, że najczęściej wychodzi się od wzoru – NN = pierwiastek z h*a+b… gdzie NN to liczba neuronów, h to liczba warstw ukrytych a to liczba wejść, b to liczba wyjść [o wejściach i wyjściach później]. W dziedzinie nauki istnieje kilka metod uczenia zarówno jednoprzebiegowych jak i wieloprzebiegowych. Takie podejście ma na celu zapobieżenia tzw. przeuczenia sieci. Przeuczenie sieci to jest najzwyklejsze „wyrycie na blachę” przykładów jakimi uczymy sieć.
Sieci rekurencyjne
Kolejnym typem sieci neuronowych, z jakimi możemy się spotkać są sieci rekurencyjne. Dotychczas opisywane sieci charakteryzowały się jednokierunkowym przepływem sygnałów od wejścia do wyjścia. W sieciach rekurencyjnych istnieją sprzężenia zwrotne między wejściem, a wyjściem. Zależności dynamiczne jakie panują w sieci są widoczne na każdym etapie działania. Zmiana stanu jednego neuronu przenosi się przez masowe sprzężenie zwrotne na całą sieć, wywołując stan przejściowy, kończący się określonym stanem ustalonym, na ogół innym niż stan poprzedni. Przy oznaczeniu aktywacji neuronu jako f(s), gdzie u jest sumą wagową pobudzeń (sygnałem aktywacji) to sygnał wyjściowy neuronu
oznacza jego stan. Przy masowym sprzężeniu zwrotnym pobudzeniami dla neuronów są sygnały wejściowe innych neuronów. Zmiana stanu neuronów jest opisana układem równań różniczkowych nieliniowych, które ma postać (Hopfield, 1984)
dla i=1, 2, ..., N, przy czym bi jest wartością progową, wynikającą z zewnętrznego śródła. Współczynnik ti jest pewną stałą wartością liczbową. Stan neuronu uzyskuje się z rozwiązania równania różniczkowego jako yi=f(si). Przy określonym stanie pobudzenia neuronów, opisanym za pomocą wartości ich sygnałów wyjściowych yi, sieciom rekurencyjnym można przyporządkować funkcję energetyczną Lagunowa. Jest ona powiązana z każdym stanem pobudzenia sieci, ma charakter malejący w czasie. Zmiana stanu jakiegokolwiek neuronu zapoczątkowuje zmianę stanu energetycznego całej sieci, w kierunku minimum tej energii ,aż do jego osiągnięcia.
Algorytm wstecznej propagacji błędu (backpropagation) jest obecnie podstawowym (i jednym z najskuteczniejszych) algorytmem nadzorowanego uczenia wielowarstwowych jednokierunkowych sieci neuronowych.
Nazwa tego algorytmu wynika z kolejności obliczania sygnałów błędu d, która przebiega w kierunku odwrotnym niż przechodzenie sygnałów przez sieć, to znaczy od warstwy wyjściowej poprzez warstwy ukryte w kierunku warstwy wejściowej.
Ogólnie algorytm propagacji wstecznej wymaga dla każdego wzorca uczącego wykonania następujących czynności:
Założenia: dana jest sieć o M warstwach, oraz zestaw danych uczącychE = {E1, E2...EN}, gdzie każdy z przykładów składa się z wektora danych wejściowych X i z wektora wyjść D.
¨ Przypisz wszystkim wagom wartości losowe bliskie 0. Wybierz wzorzec uczący EK.
¨ Podaj wektor uczący EK na wejście sieci
¨ Wyznacz wartości wyjść każdego elementu dla kolejnych warstw przetwarzania, od pierwszej warstwy ukrytej do warstwy wyjściowej
¨ Oblicz wartość dMi błędów dla warstwy wyjściowej
dMi = f (xil-1 (t)) [di - yiM(t)]
¨ Wyznacz kolejno błędy w warstwach l = M., M.-1, ...2 według postępowania
dl-1i (t) = f (xil-1 (t) ) Si wlji (t) dli (t)
¨ Wyznacz zmianę wartości wag
Dwlij (t) = g dli (t) xil-1 (t)
¨ Modyfikuj wszystkie wagi
wlji (t+1) = wlji (t) + Dwlij (t)
¨ Wybierz kolejny wzorzec (o ile istnieje) i przejdź do punktu 2 (wczytanie wzorca)
W trakcie uczenia sieci można zaprezentować dowolną liczbę wzorców uczących. Jeśli sieć ma pracować z danymi zakłóconymi to część wektorów uczących powinna również zawierać zakłócenie. Jest to związane ze zdolnością sieci do uogólniania - niewielkie zaburzenie sygnałów wzorcowych może spowodować przyspieszenie zbieżności procesu uczenia ( choć sygnał zaburzony nigdy może się nie pojawić w rzeczywistej pracy sieci ).
Inne zasady obowiązujące przy konstruowaniu ciągów uczących zostały przedstawione w punkcie Projektowanie zbioru uczącego.
Pierwszą operacją w procesie uczeni jest inicjalizacja początkowego układu wag. Należy unikać symetrii w warstwach wag początkowych (mogłoby to spowodować nie nauczenie się sieci ). Najskuteczniejszym rozwiązaniem wydaje się być losowy wybór wag początkowych.
Istotnym problemem jest wybór współczynnika uczenia h. Parametr ten decyduje o szybkości i stabilności procesu uczenia. Przy zbyt małej wielkości tego współczynnika uczenie postępuje w bardzo wolnym tempie, i sieć potrzebuje b. dużej liczby operacji, by się nauczyć. W przypadku zbyt dużej wartości tego współczynnika algorytm może stać się niestabilny.
Wartość współczynnika h dobiera się zazwyczaj z przedziału [0.05 , 0.25].
jednowarstwowa siec neuronowa Hopfielda
Strukturę sieci Hopfielda można opisać bardzo prosto – jest to układ wielu identycznych elementów połączonych metodą każdy z każdym. Jest zatem najczęściej rozpatrywana jako struktura jednowarstwowa. W odróżnieniu od sieci warstwowych typu perceptron sieć Hopfielda jest siecią rekurencyjną, gdzie neurony są wielokrotnie pobudzane w jednym cyklu rozpoznawania co uzyskuje się poprzez pętle sprzężenia zwrotnego.
Jednowarstwowa sieć Hopfielda ze sprzężeniem zwrotnym
W fazie odtwarzania na wejście sieci podany jest nieznany sygnał wejściowy i zadaniem sieci jest w procedurze rekurencyjnej „znaleźć” ten z zapisanych w jej strukturze wzorców do którego ten sygnał wejściowy jest najbardzie podobny.