Istnieją dzisiaj rozwiązania o których Ci się nawet nie śniło. Naukowcy sądzą, że stanowią one ostateczne rozwiązanie problemu sztucznej inteligencji...
Gdy dowiedziałem się o istnieniu sieci neuronowych, a było to dawno, od razu mnie zainteresowały. Byłem wówczas pod wrażeniem "terminologii" użytej w jednym z filmów kanału "Discovery". Dostałem podręcznik do programu STATISTICA firmy StatSoft. Dwa miesiące później zacząłem gorączkowo przeszukiwać setki stron internetowych w poszukiwaniu przydatnych informacji. Minął pewien okres czasu zanim zdążyłem pojąć i zrozumieć podstawowe zasady tej "biologicznej technologii cyfrowej". Te strzępki informacji, które pojąłem - chce przekazać Wam.
Powszechnie określa się je mianem AI (od ang. Artifical Inteligence) lub SI (Sztuczna Inteligencja). Jak się okazuje - nie do końca słusznie gdyż Sieci Neuronowe są jedynie podzbiorem rozwiązań nazywanych AI. Do AI należą także algorytmy genetyczne, o których nie będę tutaj wspominał. Sztuczne Sieci Neuronowe (SSN) to temat rozległy. Nawet bardzo. W tym artykule opiszę zasadę ich działania, przedstawię pojęcia wag, warstw ukrytych i inne "egzotyczne" terminy dla nieobytego z tematem ucha. Zanim zaczniemy, chcę Cię prosić czytelniku, abyś po tym nudnym wstępie nie odchodził od lektury, ale czytał dalej, bo jak się zaraz przekonasz, ten artykuł nie jest kolejnym stekiem określeń z "wyższej półki", ale materiałem dla kogoś kto chce się dowiedzieć jak funkcjonują sieci i jak to się dzieje, że potrafią się uczyć.
Dokładnie nikt jeszcze tego nie wie. Ale po lekturze tak wielu materiałów mam pewne przypuszczenia. W mózgu przeciętnego człowieka jest podobno około 100 miliardów neuronów. Są to bardzo niedokładne "przypuszczenia" i nie należy się nimi zbytnio sugerować. Biologiczny neuron jest komórką posiadającą wiele wejść (tzw. dendrytów) i tylko jedno wyjście (tzw. akson lub neuryt). Jego zadaniem jest po prostu przetworzenie danych z wejść i zwrócenie ich na wyjściu. Pojedynczy neuron nie ma zbyt dużej ilości pamięci, dlatego neurony łączą się ze sobą, tym samym powiększając swoje możliwości przetwarzania.
Kluczowym zagadnieniem w budowie biologicznego neuronu jest pojęcie synaps. Synapsy to rodzaj połączeń pomiędzy dwoma neuronami. Za ich pomocą sygnały mogą trafić od jednego neuronu do drugiego. To taki biologiczny rodzaj autostrady.
Jednak synapsy nie spełniają tylko roli przekaźnika sygnałów. Są bardziej potrzebne niż się wydaje. Spełniają one jeszcze jedną kluczową rolę - wzmacniają lub osłabiają przekazywane sygnały. Może nie tyle wzmacniają czy osłabiają, ale są mniej lub bardziej drożne. To właśnie ta cecha synaps decyduje o prawidłowym działaniu sieci.
Gdy neuron się uczy, synapsy, dzięki którym uzyskuje on prawidłowe wyniki na wyjściu "udrażniają się". Dzięki temu po paru "lekcjach" neuron jest w stanie zwracać poprawne wyniki.
W sztucznym modelu wszystko jest bardzo podobne, z wyjątkiem tego, że "przepustowość synaps" zastąpiliśmy odpowiednimi mnożnikami. W sztucznym neuronie tym co robią synapsy zajmuje się operator iloczynu '*' ;) Nazwany jest on wagą i towarzyszy każdemu z wejść neuronu:
Gdy informacja trafia do wejścia jest ona przemnażana przez odpowiednią wagę. Przykładowo, mamy pewien sygnał - nazwijmy go Zdzich :) Gdy Zdzich wchodzi do wejścia numer 1 neuronu, wymnażany jest przez wagę numer 1. W efekcie mamy Waga1*Zdzich Zdzichów.
Następnie gdy już wszystkie sygnały zostaną przemnożone przez te "odpowiedniki synaps dla ubogich", w neuronie jest wykonywana operacja sumowania wszystkich sygnałów, w ten sposób uzyskujemy tzw. "sumę ważoną wejść".
Tak przetworzony sygnał zwykle przepuszczany jest przez tak zwaną funkcję aktywacji neuronu lub inaczej funkcję przejścia. "Zwykle", bo nie zawsze. Czasami suma ważona wejść (czyli sygnały z wejść przemnożone przez odpowiadające im wagi - następnie zsumowane) jest od razu zwracana na wyjściu jako ostateczna odpowiedź neuronu na wartości podane na wejściu. Tak proste rozwiązanie oczywiście nie może mieć miejsca w świecie, w którym wszystko jest skomplikowane, dlatego zwykle w neuronie dokładana jest jeszcze funkcja aktywacji. Ta funkcja aktywacji modyfikuje dodatkowo wartość ważonej sumy wag w najróżniejszy sposób.
Taka funkcja z ważonej sumy wag może zrobić na przykład wartość dwustanową (0 lub 1). Wtedy taką funkcję nazywamy progową, ponieważ dla wartości np. mniejszych lub równych 0 przyjmuje ona wartość 0, a dla większych od 0 przyjmuje wartość 1.
Najczęściej jednak funkcje tak bardzo ograniczające możliwe odpowiedzi neuronu (do dwóch stanów 0 lub 1) nie mają zastosowania w praktyce. Neuron zwraca bowiem najczęściej jakąś tam wartość z rozwinięciem dziesiętnym do kilku miejsc po przecinku. Nielogiczne byłoby tak "dokładny" sygnał obcinać do dwóch wartości (0 i 1). Dlatego stosuje się funkcje nieliniowe, które co prawda zawężają wartość wyjściową do przedziału np. (od 0 do 1), ale pozwalają przyjmować wartości pośrednie jak np. 0,2324 czy 0.8764. Funkcje progowe takich właściwości nie mają - one sztywno ustalają czy neuron ma zwrócić 1 czy 0 (bez wartości pośrednich).
Istnieją najróżniejsze typy funkcji aktywacji. Czasami ich nazwy mogą przyprawić niektórych o ból głowy, ale zapewniam, że wszystkie one spełniają to samo zadanie:
Legenda:
y - wartość zwracana przez funkcję, a jednocześnie wartość wyjściowa neuronu
suma_w - suma ważona wejść neuronu
beta - współczynnik stromości krzywej
alfa - współczynnik szybkości uczenia
Niektóre z dostępnych dzisiaj funkcji:
Funkcji jest dość dużo jak widzicie. Jak powiedziałem, nie musicie ich stosować w prostych sieciach neuronowych. Prostych to znaczy, gdy sieć nie posiada warstw ukrytych. Powyższe funkcje to raczej bardziej ciekawostka niż dane do budowy dużej sieci. Do budowy takiej nieco "większej" sieci wykorzystuje się właśnie te funkcje wraz z ich pochodnymi. Pochodne wyznaczamy dla każdej z funkcji:
Podałem to, ponieważ chciałbym aby te wzory stanowiły oparcie dla was w przyszłości. Jeśli nie rozumiesz to na razie nic się nie dzieję. Jak mówiłem na początku nie będzie Ci to potrzebne, ponieważ możesz konstruować sieci neuronowe z całkowitym pominięciem funkcji aktywacji.
Model neuronu z funkcją aktywacji wygląda następująco:
Bez funkcji aktywacji tak:
Programy działające w oparciu o sieci neuronowe mogą działać cuda. Takie programy najczęściej z powodzeniem stosuje się np. do rozpoznawania pisma tzw. OCR (nie wszystkie OCR-y działają jednak w oparciu o sieci neuronowe). Za pomocą SSN możemy także kontrolować pracę maszyn, np. silnika samochodu - ograniczając tym samym np. zużycie paliwa. Dobrze nauczona sieć jest doskonałym narzędziem statystycznym. To prawdziwy "oręż" oddany w ręce ludzi zajmujących się statystyką stosowaną.
Jak działa program symulujący działanie sieci neuronowej? Ilustrują to poniższe kroki:
BladNeuronu[numerWarstwy][numerNeuronu] = BladNeuronu[numerWarstwy][numerNeuronu] + Output[numerWarstwy][numerNeuronu] * BladNeuronu[numerWarstwy+1][numerWagi] * Waga[numerWarstwy+1][numerWagi][numerNeuronu]
numerWarstwy+1 oznacza, że chodzi o następną warstwę.Poznaliśmy pojęcia Neuronów, Wag, Warstw, funkcji aktywacji neuronu, sumy ważonej wejść i innych. Mam nadzieję, że artykuł wzbudził Wasze zainteresowanie. Przekazałem Wam część wiedzy na temat tego zagadnienia, a problemy nad którymi wiele myślałem zaprezentowałem w bardziej przystępny sposób, a to wszystko po to aby kolejne pokolenia mogły coraz prościej myśleć o "Sztucznych Sieciach Neuronowych". Dziękuję!
Źródła:
Zasoby WWW :
| Brak komentarzy |
| Nie ma jeszcze żadnych komentarzy. Jeśli chcesz, wyraź pierwszy swoje zdanie na temat tego artykułu. |
Łukasz "Lukas" Wyporek
lukas.home.page@gmail.com