4: Czym są Sieci Neuronowe - część 1

Czy ktoś mógłby za pomocą informatycznego algorytmu opisać, w jaki sposób rozpoznaje czyjąś twarz? Albo uchwycić w ciąg komputerowych instrukcji to, czym psy na fotografiach różnią się od kotów?
Jest to po prostu niewykonalne. Tymczasem mózgi ludzi radzą sobie z rozpoznawaniem twarzy i gatunków znakomicie. Nie gorzej radzą sobie zwierzęta.
Już w latach czterdziestych XX wieku teoretycy algorytmiki postulowali, by przy rozwiązywaniu tego typu zadań wykorzystać struktury przypominające układem i działaniem zbiór komórek mózgowych, czyli połączonych ze sobą neuronów. Pierwsze teorie i technologie w tej dziedzinie rozwijane były w latach sześćdziesiątych. Tworzono wtedy proste układy symulujące działanie grupy wzajemnie powiązanych komórek nerwowych. Po początkowej ekscytacji nastąpił kilkunastoletni okres spadku zainteresowania tym tematem, nazywany często zimą AI. Od 1987 roku sztuczne sieci neuronowe znowu stały się modne i nastąpił rozkwit pomysłów i zastosowań. Jednak prawdziwa rewolucja trwa od około ośmiu lat. Eksperymenty potwierdzają skuteczność sieci neuronowych w coraz to nowszych dziedzinach. Wymienię tu rozpoznawanie obrazu, diagnostykę medyczną, prognozy meteorologiczne i ekonomiczne czy inne zastosowania w obszarach wymagających uwzględnienia ogromnych ilości zmiennych parametrów, których wpływ nie jest do końca jasny. Dzisiejszy boom związany z AI na pewno dużo zawdzięcza pracom i doświadczeniom minionych dekad (zwłaszcza lat dziewięćdziesiątych). Są jednak i inne czynniki. Po raz pierwszy w historii ludzkości dysponujemy tak ogromnymi zbiorami danych. Jedna z podstawowych technik uczenia sieci neuronowych wymaga dostępu do czegoś, co ktoś kiedyś nazwał “Very Very Big Data” - do wielkich ilości przykładów. Kolejnym czynnikiem umożliwiającym trwającą właśnie rewolucję jest dostęp do nieporównanie wydajniejszego, szybszego sprzętu niż ten, którym dysponowaliśmy dwie czy trzy dekady temu. Dodajmy do tego rozmaite akceleratory obliczeń matematycznych. Mam tu przede wszystkim na myśli dedykowane urządzenia projektowane z myślą o wykorzystaniu ich w sieciach neuronowych. Zresztą nawet szybkie karty graficzne, które tworzone były pierwotnie do zastosowań w grach komputerowych, znakomicie sprawdziły się jako platformy sprzętowe przyspieszające działanie sieci. To wszystko, na zasadzie sprzężenia zwrotnego spowodowało zainteresowanie tematyką wśród naukowców różnych specjalności. Dzięki ich zaangażowaniu wciąż powstają nowe technologie, które jeszcze bardziej usprawniają istniejące rozwiązania.
Zanim przejdę do uproszczonego opisu tego, jak działają komputerowe sieci neuronowe, naszkicuję w przybliżeniu sposób postrzegania, myślenia i uczenia się ludzi i zwierząt. Mózg człowieka jest siecią prawie stu miliardów neuronów, z których każdy może być połączony nawet z dziesięcioma tysiącami innych. Mózg szczura ma ich dwieście milionów, a sieć powiązań jest nie mniej skomplikowana niż u człowieka. Myślenie, doświadczanie uczuć i emocji, uczenie się, to tak naprawdę procesy elektrochemiczne zachodzące w mózgu, czyli wymiana sygnałów między neuronami. Przepuszczenie sygnałów odbieranych ze świata i z własnego organizmu przez sieć mózgowych komórek powoduje rozpoznanie miejsc, osób, uczuć i odczuć, ocenę sytuacji, i w efekcie podjęcie określonych działań.
Podstawowa komórka mózgu, jaką jest neuron, składa się z jądra, drzewiasto rozgałęzionych dendrytów o ogromnej liczbie coraz to drobniejszych odnóżek i z jednego aksonu, który podobnie do dendrytów rozgałęzia się drzewiaście i przez synapsy łączy się z końcówkami dendrytów innych neuronów. Dendryty odbierają informacje z innych komórek mózgowych. Stanowią coś, co w informatyce nazywamy “wejściem”. Takim wejściem może też być sygnał pochodzący ze świata - na przykład z siatkówki oka, gdy na jej komórki pada światło. Akson jest z kolei “wyjściem” neuronu. Mechanizm działania komórki nerwowej polega w uproszczeniu na tym, że zbiera ona wchodzące do niej sygnały i gdy te przekroczą pewien próg, komórka “odpala”: wyrzuca na akson sygnał, który następnie jest przekierowywany przez synapsy ku dendrytom kolejnych neuronów. Sygnały wchodzące do komórki nerwowej mogą mieć różną siłę, zależnie od tego, przez jakie odgałęzienie jakiego dendrytu się do niej dostają.
Według klasycznej teorii Donalda Hebba uczenie się ludzi i zwierząt polega na wzmacnianiu lub osłabianiu połączeń synaptycznych między neuronami. Dziś już wiemy, że teoria ta była znacznym uproszczeniem. W mózgu nieustannie powstają nowe połączenia między neuronami, a nawet nowe neurony, co na pewno ma ogromny wpływ na proces nauki. Najnowsze odkrycia zdają się sugerować, że na skutek uczenia zmienia się nie tylko mechanizm działania złącz synaptycznych, ale również działanie dendrytów w pobliżu jądra neuronu. Tu dodam, że jeśli to odkrycie się potwierdzi, może mieć ono ogromny wpływ na działanie i techniki uczenia komputerowych sieci neuronowych. Przejdźmy więc do tego, czym one są.

Komputerowa sieć neuronowa jest to struktura danych, która pod względem logicznym jest uproszczonym modelem tej, którą znajdujemy w mózgu i dzięki której zwierzęta i ludzie mogą się uczyć rozpoznawania przedmiotów, miejsc czy innych istot oraz stosować zdobytą wiedzę w życiu. Sztuczny, zasymulowany w komputerze neuron też zbiera sygnały podane na wejściu. Reaguje na nie, kierując do innych neuronów odpowiednią informację. Między siecią szarych komórek w mózgu a komputerową siecią neuronową istnieją pewne różnice. Połączenia między sztucznymi neuronami nie składają się z osobnych elementów, odpowiadających częściom komórki nerwowej. Do komputerowego neuronu wpada bezpośrednio wiele sygnałów z innych neuronów, które po przetworzeniu przekazywane są kolejnym neuronom. Sygnały te, symulując działanie mózgu, są tak naprawdę liczbami rzeczywistymi (w mózgu mamy przepływy elektrochemicznych sygnałów o różnym natężeniu). By uprościć architekturę i uniknąć na przykład zapętleń, neurony sztucznej sieci pogrupowane są w warstwy. Połączenia zazwyczaj występują wyłącznie między neuronami jednej warstwy a neuronami warstwy kolejnej. Są tu wprawdzie wyjątki, o których wspomnę dalej. Wśród warstw występuje “warstwa wejściowa”, a więc taka, do której nie ma wejść z innych neuronów - istnieje wyłącznie wejście ze środowiska zewnętrznego wobec systemu (na przykład zbiór pomiarów meteorologicznych z różnych punktów na Ziemi). Następnie mamy jedną lub wiele “warstw ukrytych”, wreszcie na końcu “warstwę wyjściową”, której komórki odpowiadają na zadane sieci pytanie. Rolą sieci neuronowej jest bowiem właśnie udzielanie odpowiedzi - rozstrzyganie problemów, wobec których klasyczna algorytmika pozostaje bezsilna. Każde łącze dowolnej pary neuronów ma przypisaną własną “wagę”, czyli konkretną liczbę rzeczywistą. Wagi odpowiadają siłom łączy synaptycznych w mózgu. Dane z neuronów warstwy wejściowej przemnożone przez wagi trafiają do neuronów pierwszej warstwy ukrytej. Dla każdego neuronu pierwszej warstwy ukrytej wejściowe liczby, czyli wartości neuronów wejściowych, wymnożone przez wagi odpowiadających im połączeń z tym neuronem, zostają zsumowane, po czym obliczana jest dla nich tak zwana funkcja aktywacji i następuje przekazanie sygnałów neuronom drugiej warstwy ukrytej. Trafią tam one wymnożone przez wagi połączeń, gdzie znów w każdym neuronie nastąpi zsumowanie wejść i obliczenie funkcji aktywacji. Proces ten powtarza się aż do warstwy wyjściowej. W używanych dziś sieciach, poza neuronami z ostatniej warstwy funkcje aktywacji to bardzo proste funkcje matematyczne - na przykład, gdy suma wejść jest większa od zera wówczas mnożona jest ona przez pewną stałą wartość, w przeciwnym przypadku zwracane jest zero. Istnieją także inne funkcje aktywujące, wykorzystywane ostatnio najczęściej tylko w warstwie wyjściowej. Przykładem może tu być funkcja, która zwraca wartości z przedziału (0, 1) i przeważnie reprezentuje jakąś wartość logiczną lub prawdopodobieństwo jakiegoś prognozowanego przez sieć zdarzenia. Funkcje takie znajdują zastosowanie zwłaszcza tam, gdzie zależy nam na uzyskaniu odpowiedzi w rodzaju “tak” lub “nie”, albo też tam, gdzie chcemy szacować prawdopodobieństwa.
Proces tworzenia sieci neuronowej składa się z kilku etapów. Pierwszy, to zaprojektowanie jej architektury, czyli tego, z ilu warstw sieć ma się składać, ile neuronów ma się pojawić w każdej warstwie, wreszcie jak mają się łączyć neurony między poszczególnymi warstwami. Na koniec następuje zainicjowanie wag całkowicie przypadkowymi liczbami rzeczywistymi. Taka sieć na pewno nie będzie w stanie udzielić żadnej sensownej odpowiedzi, dopóki nie zostanie wytrenowana. Nauka sieci polega na zautomatyzowanym procesie dokonywania minimalnych zmian w jej wagach tak, by odpowiedzi powoli zbliżały się do prawidłowych.
W klasycznej architekturze wszystkie neurony z jednej warstwy łączą się ze wszystkimi neuronami warstwy poprzedniej, zbierając od nich “wejścia”. Istnieją też sieci, którym algorytmy uczące usuwają połączenia między pojedynczymi neuronami. Inne sieci (nazywane rezydualnymi) różnią się architekturą i stosują “przeskoki” między warstwami. Jeszcze inne stosują rodzaj cofnięcia przepływu danych, tak by stan po przetworzeniu jednego “zadania” był zapamiętany do następnego, przed jakim staje sieć. Może być to szczególnie użyteczne przy rozpoznawaniu mowy czy pisma ręcznego, gdzie kontekst ma ogromne znaczenie. Zarówno przeskoki, jak i zapamiętywanie wykorzystywane bywa w sieciach szczególnie dla nas ważnych, mianowicie sieciach konwolucyjnych. Opowiem o nich w następnym wpisie, poświęconym również różnym podejściom do trenowania sieci mającym zastosowanie w różnych sytuacjach.

Komentarze