Sztuczne sieci neuronowe
Określenie „sztuczne sieci neuronowe” często bywa magiczne i przerażające. Dzieje się tak dlatego gdyż wiele źródeł cytuje akademicką formułę. Potrafi ona zwykłego czytelnika wprowadzić w stan odrzucenia. Zrozumienie czym są i jak działają nie jest jednak tak trudne jakby się mogło wydawać na pierwszy rzut oka.
Sztuczne sieci neuronowe stanowią fundament nowoczesnej sztucznej inteligencji (AI). Te zaawansowane algorytmy komputerowe mają zdolność do uczenia się, dzięki czemu mogą podejmować decyzje i rozwiązywać problemy. Są one obecnie kluczowym narzędziem w wielu dziedzinach naszego życia. Postaram się więc o czytelniejsze zrozumienie tego tematu.
Czym są sztuczne sieci neuronowe?
Nazwa i sposób działania wywodzi się od próby odwzorowania prawdziwych neuronów występujących w prawie każdym żywym organizmie. Sztuczne sieci neuronowe (ANN, z ang. Artificial Neural Networks) składają się z wielu połączonych ze sobą "neuronów". Przetwarzają one informacje w sposób podobny do neuronów biologicznych. Odwzorowanie to nie jest jednak tak idealne ale wystarczające aby dzięki niemu rozwiązywać problemy.
Nie jest to nowa koncepcja (pierwszy neuron - perceptron - pochodzi jeszcze z lat pięćdziesiątych ubiegłego wieku) ale dzięki rozwojowi technologii nabiera ona w ostatnich na znaczeniu. Wspomniany perceptron potrafi rozwiązać proste zadanie klasyfikacji. Wyobraźmy sobie co możemy zdziałać z kilkoma neuronami połączonymi ze sobą.
Oprogramowanie wykorzystujące sieci neuronowe potrafi identyfikować wzorce oraz znajdować rozwiązania typowych problemów. Takie sieci bardzo dobrze sprawdzają się przy problemach klasyfikacyjnych np. rozpoznawanie zawartości obrazu. Nie oznacza to jednak iż jest to magiczne panaceum na wszystkie problemy.
Jak działa sieć neuronowa ?
Istnieje wiele odmian sieci ale wszystkie wywodzą się od wspomnianego wcześniej pojedynczego neuronu. Jest to najprostsza postać z którą warto się zaznajomić.
Każdy neuron odbiera sygnały, przetwarza je i przekazuje dalej. Tak można tworzyć złożone sieci zdolne do rozwiązywania różnorodnych problemów. Przyjrzyjmy się jednak najpierw uproszczonej wizualizacji neuronu.
Na pierwszy rzut oka widzimy iż wprowadzamy pewne dane [x1,x2,x3…xn] aby finalnie otrzymać określoną wartość - I o to właściwie chodzi. Możemy na tym etapie potraktować całość jako swoistą czarną skrzynkę w której obchodzi nas tylko to co wkładamy i to co otrzymujemy. Warto jednak pójść dalej aby zrozumieć jak to właściwie działa.
Oprócz danych wejściowych potrzebne są nam wagi [w1,w2,w3…wn] oraz bias [w0]. Wszystko to ulega zsumowaniu aby finalnie przejść przez funkcje aktywacji. ( Szerzej o funkcji aktywacji piszę tytaj ).
W nowoczesnych frameworkach / bibliotekach wymagane są tylko dane wejściowe, wyjściowe ( przy uczeniu definiujemy co chcielibyśmy otrzymać z danych wejściowych aby finalnie sieć sama wskazywała mam wynik z wprowadzanych danych ), sposób uczenia oraz wspomnianą wcześniej funkcje aktywacji. Upraszcza to znacznie całość do minimum. Jak widać cała magia znika.
Pojedynczy neuron nie jest może tak „zaawansowany” ale tak jak już wspomniałem dzięki niemu możemy rozwiązać już proste zadanie klasyfikacyjne. Ale to nie wszystko … W kolejnym etapie możemy połączyć wiele neuronów w warstwy co właściwie daje nam podwalinę do szerszych możliwości uczenia maszynowego.
Jak działa sieć wielowarstwowa?
Dodając do siebie kolejne neurony dochodzimy do prostej lecz najbardziej rozpowszechnionej architektury. W jej skład wchodzą warstwy węzłów, które obejmują warstwę wejściową oraz jedną lub więcej warstw ukrytych. Ostatnią warstwę stanowi warstwa wyjściowa. Każdy węzeł który w istocie jest pojedynczym neuronem, posiada tak jak w przypadku perceptronu, swoją wagę [w]. Dodatkowo węzły połączone są z innymi w kolejnych warstwach. Każdy neuron posiada również próg po przekroczeniu którego dany węzeł jest aktywowany i umożliwia wysyłanie danych do kolejnej warstwy sieci. W przeciwnym wypadku przesyłanie danych jest blokowane.
Sieć i neurony same z siebie nie są jednak w stanie nic zrobić. Duże znaczenie mają poprawne dane szkoleniowe oraz proces uczenia sieci. Proces ten może być długotrwały i nie zawsze daje pożądany rezultat. Jeśli jednak mamy dobrze wybrane dane szkoleniowe oraz strukturę sieci ( która nazywana jest modelem ) proces uczenia zmierza do poprawienia dokładności sieci. Gdy osiągniemy odpowiedni poziom uczenia ( trzeba uważać by nie przesadzić z uczeniem ale o tym w innym artykule ) sieć pozwoli nam na błyskawiczne rozwiązywanie zagadnień.
Podsumowanie
Sieci neuronowe dają nam duże możliwości ale należy pamiętać że to od nas zależy to co z nimi zrobimy. Przedstawione tutaj zagadnienia to tylko ułamek szerokiej dziedziny uczenia maszynowego. Mam nadzieję że po lekturze tego wstępnego artykułu udało mi się rozjaśnić nieco tą tematykę obraz zachęcić do pogłębiania swej wiedzy.