sztuczna:sieci_neuronowe

# Sieci Neuronowe

## Idea działania

Sztuczne sieci neuronowe (w skrócie sieci neuronowe), stanowią intensywnie rozwijającą się dziedzinę wiedzy stosowaną w wielu obszarach nauki. Mają własności pożądane w wielu zastosowaniach praktycznych: stanowią uniwersalny układ aproksymacyjny odwzorowujący wielowymiarowe zbiory danych, mają zdolność uczenia się i adaptacji do zmieniających się warunków środowiskowych, zdolność uogólniania nabytej wiedzy, stanowiąc pod tym względem system sztucznej inteligencji. Podstawą działania są algorytmy uczące, umożliwiające zaprojektowanie odpowiedniej struktury sieci i dobór parametrów tej struktury, dopasowany do problemu podlegającemu rozwiązaniu. Podstawowym elementem systemu neuronowego jest komórka nerwowa nazywana neuronem.

(Synapsy jednego neuronu łączą się z aksonem drugiego).

## Perceptron

W 1943 roku McCulloch i Pitts opracowali model komórki nerwowej, w którym sygnał wyjściowy neuronu y określany jest jako:

Jako funkcje aktywacji f, najczęściej wykorzystuje się funkcje:

- Sigmoidalne unipolarne f(x) = 1/(1+exp(-βx))

- Tangens hiperboliczny f(x) = tanh(βx)

- Sigmoidalne bipolarne f(x)=2/(1+exp(-βx))-1

Model ten, jest punktem wyjścia do konstrukcji najprostszej, jednokierunkowej sieci o nazwie perceptron (zaprojektowanej przez Rosenblatta). Zadaniem perceptronu jest klasyfikacja wektora do jednej z dwu klas (L1, L2). Perceptron klasyfikuje wektor u do klasy L1 jeśli y = 1, L2 gdy y = -1 (zatem dzieli N - wymiarową przestrzeń wektorów wejściowych u na dwie półprzestrzenie rozdzielone N-1 wymiarową hiperpłaszczyzną o równaniu:

Obszary L1 i L2 są to tzw. obszary decyzyjne. Aby przeprowadzić proces nauki sieci, należy dysponować tzw. zbiorem treningowym (zbiorem wektorów, których klasy są nam znane). Uczenie perceptronu polega na rekurencyjnej korekcji wag W zgodnie ze wzorem:

gdzie η, 0< η<1 jest krokiem korekcji. Perceptron poprawnie klasyfikuje jedynie liniowo – separowalne zbiory (czyli takie, które mogą być rozdzielone hiperpłaszczyzną). Warunku liniowej separowalności nie spełnia np. funkcja logiczna XOR.

## „Uczenie” sieci

### Z nauczycielem

W procesie uczenia sieci z sigmoidą na wyjściu adaptacja wag polega na minimalizowaniu błędu pomiędzy wartością dokładną a wartością otrzymaną jako odpowiedź sieci na zadany wektor wejściowy (zazwyczaj jest to błąd średniokwadratowy – kwadrat różnicy wartości dokładnej i otrzymanej). [Tu można przeprowadzić kobylaste wyprowadzenie, jaki jest ostateczne wzór na korekcję wag, ważne jest to, że wartość pochodnej funkcji sigmoidalnej możemy otrzymać znając jedynie jej wartość:

dzięki czemu możemy wykorzystywać go do obliczeń numerycznych.

### 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ą.

#### Typu Hebba

W modelu Hebba wykorzystuje się obserwacje neurobiologiczne, “jeżeli akson komórki A bierze systematycznie udział w pobudzeniu komórki B powodujšcym jej aktywację, to wywołuje to zmianę metabolicznš w jednej lub obu komórkach, prowadzšcš do wzrostu skuteczno?ci pobudzania B przez A” (Hebb 1949). Zgodnie z tym waga powiązań między dwoma neuronami wzrasta przy jednoczesnym stanie pobudzenia obu neuronów, w przeciwnym wypadku maleje. Przy wielokrotnej prezentacji takiego samego wymuszenia xj obserwuje się wykładniczy wzrost wag, czego efektem jest nasycenie neuronu. Aby uniknąć takiej niepożądanej sytuacji modyfikuje się tą regułę przez wprowadzenie współczynnika zapomnienia. Algorytm uczący Hebba można zaliczyć do uczenia typu korelacyjnego, w którym siła połączenia międzyneuronowego wzrasta przy istnieniu korelacji między sygnałami presynaptycznym i postsynaptycznym neuronu.

#### Typu Konkurencyjnego

W uczeniu typu konkurencyjnego neurony współzawodniczą ze sobą, aby stać się aktywnymi (pobudzonymi). W odróżnieniu od uczenia Hebba, gdzie dowolna liczba neuronów mogła być aktywna, w uczeniu konkurencyjnym tylko jeden neuron może być aktywny, a reszta pozostaje w stanie spoczynku (reguła WTA – tylko jeden neuron jest pobudzany, WTM – pobudzany jest neuron i część neuronów z jego sąsiedztwa).

## Sieć wielowarstwowa

Jeżeli chcemy zbudować bardziej skomplikowane obszary decyzyjne (takie, by sieć „potrafiła” rozwiązywać problemy, które nie są liniowo separowalne) należy skorzystać z wielowarstwowych sieci neuronowych:

(każdy z „kwadracików” jest pojedynczym perceptronem z funkcją aktywacji f). Do „nauki” takiej sieci używa się najczęściej algorytmu wstecznej propagacji (analogiczny do poprzedniego).Uczenie zaczyna się od warstwy wyjściowej, następnie kolejno po warstwach ukrytych (z uwzględnieniem - „propagacji” błędu z poprzednio skorygowanych warstw, aż do ostatniej warstwy ukrytej [wzór jest również kobylasty, stosuje się tu regułę najszybszego spadku].

## Sieci Hopfielda i Hamminga (rekurencyjne)

Modele sieci Hopfielda i Hamminga są jednymi z najczęściej omawianymi, badanymi i wykorzystywanymi. Zazwyczaj obie są stosowane do rozpoznawania lub klasyfikacji obrazów, które są reprezentowane w sposób binarny. Warto także zaznaczyć, że sieć Hopfielda jest często podawana jako przykład pamięci skojarzeniowej lub jako układ do rozwiązywania zadań z zakresu optymalizacji. 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.

Wagi połączeń wyliczane są w sieci Hopfielda a priori, jej faza uczenia ogranicza się do wyliczenia wartości wag zgodnie zasadą uczenia Hebba

gdzie: M jest ogólną liczbą zapamiętywanych wzorców, xi to i-ta składowa wzorca (górny indeks określa numer wzorca), x należy do (-1,1)

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 najbardziej podobny.

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 najbardziej podobny.

Sieć Hamminga jest dwuwarstwowym klasyfikatorem o schemacie blokowym pokazanym na rysunku powyżej. Zadaniem sieci jest, podobnie jak w sieci Hopfielda, wyszukanie tego spośród zapamiętanych wzorców, który jak najbardziej podobny do sygnału wejściowego. Jako miarę podobieństwa przyjmuję się tzw. odległość Hamminga – czyli liczbę bitów rożnych w porównywanych obiektach. Tej selekcji dokonuje pierwsza warstwa klasyfikatora. Najsilniejszy sygnał wyjściowy neuronu jest wskaźnikiem najmniejszej odległości Hamminga pomiędzy sygnałem wejściowym a wzorcem klasy, którą ten neuron reprezentuje. Warstwa druga, zwana MAXNET odgrywa rolę pomocnicą. Jest to sieć rekurencyjna mająca za cel wytłumić sygnały wyjściowe wszystkich neuronów tej warstwy oprócz twego, który otrzymał na swoim wejściu najsilniejszy sygnał wejściowy.

## Zastosowanie sieci neuronowych

### W technice

- Do dziś najczęstszym spotykanym obszarem zastosowań technicznych sieci neuronowych są zagadnienia rozpoznawania, a zwłaszcza problem rozpoznawania kontekstowego. Sieci neuronowe stosuje się także do zadań klasyfikacji oraz do analizy obrazów i ich przetwarzania. Wyróżnić można tu kompresję, segmentację, odtwarzanie oraz rozumienie obrazów. Aby sklasyfikować i rozpoznawać wzorce, sieć uczy się ich podstawowych cech takich jak: odwzorowania geometryczne, pikselowego układu wzorca, rozkładu składników głównych wzorca, składników transformacji Fouriera czy innych jego właściwości. W uczeniu podkreślane są różnice występujące w różnych wzorcach.
- Kolejna dziedziną zastosowań jest wykorzystanie sieci neuronowych do klasycznych zadań przetwarzania sygnałów, takich jak konwersje, filtracje i aproksymacje oraz inne odwzorowania i transformacje. Coraz więcej prac opisuje struktury takich sieci i ich zastosowanie.
- Inne, często spotykane, zastosowania sieci neuronowych dotyczą robotyki, automatyki, a także teorii sterowania i zagadnień optymalizacji, percepcji ruchu i jego planowania. W zagadnieniach identyfikacji i sterowania procesami dynamicznymi sieć neuronowa pełni zwykle kilka funkcji. Stanowi model nieliniowy tego procesu, pozwalający na wypracowanie odpowiedniego sygnału sterującego. Pełni również funkcje układu śledzącego i nadążnego, adaptując się do zmiennych warunków środowiskowych. Ważna rolę, zwłaszcza w sterowaniu robotów, odgrywa funkcja klasyfikatora wykorzystywana w podejmowaniu decyzji, co do dalszego przebiegu procesu.
- Sieci neuronowe stosowane są do zbudowania pamięci asocjacyjnej, zwłaszcza duże zainteresowanie budzi klasa tak zwanych dwukierunkowych pamięci asocjacyjnych BAM. W zadaniach asocjacji sieć neuronowa pełni role pamięci skojarzeniowej. W przypadku pamięci asocjacyjnej, skojarzenie dotyczy tylko poszczególnych składników wektora wejściowego. W pamięci heteroasocjacyjnej zadaniem sieci jest skojarzenie ze sobą dwóch wektorów. Gdy na wejście będzie podany wektor odkształcony, sieć neuronowa jest w stanie odtworzyć wektor oryginalny, pozbawiony szumów.

### W ekonomii

Sieci neuronowe mają liczne i różnorodne zastosowania poza techniką np.w ekonomii. Oto ważniejsze kierunki tych zastosowań.

- Sieci neuronowe są wykorzystywane do przewidywania pewnych określonych rozwiązań na podstawie danych początkowych. Przykładami mogą być wszelkiego rodzaju prognozy ekonomiczne np. przewidywania bessy i hossy na giełdzie.
- Sieci mogą klasyfikować na podstawie danych bilansowych czy dane przedsiębiorstwo należy do zwyżkujących gospodarczo czy też może przeżywa stagnację lub regres. Można klasyfikować, w które branże warto inwestować lub który region może być zagrożony bezrobociem.
- Dzięki zdolnościom adaptacji, sieci wykorzystuje się do procesów wnioskowania na podstawie zgromadzonych danych. Ułatwiają one managerom wykrywanie istotnych powiązań i ważnych aspektów.
- Analiza danych prowadzona z wykorzystaniem sieci pozwala na ustalenie np. przyczyn niepowodzeń określonych przedsięwzięć podejmowanych w przeszłości, dzięki czemu łatwiejsze jest unikanie błędów na przyszłość.
- Optymalizacja - sieci poszukują rozwiązań prowadzących do optymalnych decyzji gospodarczych. Sieć taka może rozwiązać np. klasyczne zadanie zwane problemem komiwojażera.

Rodzajów sieci i sposobów ich zastosowań jest jeszcze dość sporo... jeśli ktoś dotarł do tego miejsca i czuje jeszcze niedosyt, może poszukać coś o modyfikacjach metody wstecznej propagacji, doborze optymalnej architektury sieci, szczegóły zastosowań sieci neuronowych, sieci samoorganizujące się na podstawie reguły Hebba.

## Linki

- http://www.neuron.kylos.pl/pliki/czesc1.html
- http://nrn.prv.pl/