Funkcja aktywacji neuronu

Głównym zadaniem funkcji aktywacji jest określenie wyjścia, bazując na danych wejściowych i wagach danego neuronu. W biologii ich działanie nie jest zbyt skomplikowane. Neurony w naszym mózgu są aktywne albo nieaktywne.

Matematycznym odpowiednikiem takiego zachowania byłoby zastosowanie funkcji skokowej Heaviside'a. Ma ona następujący wzór:

fx=0dla x<01dla x0

Z tego jednak względu, że mamy dosyć sporą dowolność w wyborze postaci funkcji aktywacji, ścisłe trzymanie się biologicznego wzorca nie zawsze jest dobrym pomysłem. Różnorodność w wyborze pozwala na lepsze dopasowanie sieci do konkretnego problemu. Dzięki nim możliwe jest wygodne przedstawienie finalnej wersji wyniku przy problemach klasyfikacji i regresji. Ze względu na rodzaj użytej funkcji aktywacji, sieci dzielimy na liniowenieliniowe.

Sieci liniowe

W liniowych sieciach neuronowych funkcja aktywacji jest zazwyczaj pomijana. Oznacza to, że ostatecznym wynikiem neuronu jest po prostu jego suma iloczynów wartości wejść i wag. Suma ta nie jest następnie przekazywana jako argument pewnej funkcji, tak jak ma to miejsce w sieciach nieliniowych. Sumę tę można modyfikować poprzez dodanie pewnej stałej.

Zapiszmy zatem w postaci matematycznej wzór na wartość wyjściową neuronu. Niech oznacza wartość wyjściową, wagę -tego wejścia, a  wartość na -tym wejściu. Załóżmy, że neuron przyjmuje wejść. Wtedy wzór jest następującej postaci:

S=w + i=1nwixi

Przy czym jest wcześniej wspomnianą opcjonalną stałą.

Bardzo ważną obserwacją jest to, że sieć liniowa nie zostaje w żaden sposób wzbogacana poprzez dodawanie warstw ukrytych. Wszystkie obliczenia wykonywane w neuronach mają charakter powyższej sumy, zatem zawsze jesteśmy w stanie zastąpić parę warstw poprzez jedną z odpowiednimi wagami.

Sieci nieliniowe

Sieci nieliniowe charakteryzują się tym, że suma iloczynów wartości wejść i wag jest przekazywana jako argument do funkcji aktywacji neuronu, która nie jest liniowa. Następnie wartość zwracana przez funkcję jest przekazywana dalej jako wartość wyjściowa danego neuronu. Zastosowanie nieliniowej funkcji aktywacji pozwala sieciom neuronowym rozwiązywać skomplikowane problemy przy pomocy mniejszej liczby neuronów i przyspiesza uczenie sieci.

Najczęściej stosowane funkcje są następujących typów:

  • sigmoidalna,

  • Gaussa,

  • sinusoidalna,

  • skokowa.

Algorytm propagacji wstecznej

Głównym celem uczenia sieci jest odpowiednie dostosowywanie wag połączeń, tak aby minimalizować wartość błędu. Jednym z podstawowych algorytmów uczących dla wielowarstwowych jednokierunkowych sieci neuronowych jest algorytm propagacji wstecznej (z ang. Backpropagation). Wykorzystuje się go podczas uczenia z nadzorem i do swojego działania wykorzystuje on metodę gradientową najszybszego spadku.

Aby lepiej zrozumieć ogólną ideę działania algorytmu propagacji wstecznej, najpierw spróbujmy przedstawić w sposób matematyczny działanie sieci neuronowej. Wprowadźmy następujące oznaczenia:

  • - wektor danych wejściowych

  • - wektor żądanych danych wyjściowych

  • - liczba warstw sieci

  • - macierz wag połączeń pomiędzy -tą i -szą warstwą sieci

  • - funkcja aktywacji dla neuronów w -tej warstwie

  • - funkcja stratyfunkcja stratyfunkcja straty (z ang. loss function)

Mając wprowadzone powyższe oznaczenia, jesteśmy w stanie zapisać działanie naszej sieci neuronowej w postaci matematycznej funkcji. Oznaczmy ją jako . Jej wzór jest następujący:

Wtedy wartość naszej funkcji straty dla -tego zestawu przykładowych danych składającego się z danych wejściowych oraz prawidłowej odpowiedzi jest postaci . Wartość zwracana przez naszą funkcję straty jest pewnego rodzaju wyznacznikiem, jak bardzo wynik naszej sieci neuronowej różni się od prawidłowego.

Chcemy dążyć do minimalizacji wartości zwracanej przez funkcję straty. Zapewne wiesz z lekcji matematyki, że do wyznaczania monotoniczności funkcji oraz do obliczania jej ekstremów lokalnych, potrzebujemy policzyć pochodną danej funkcji względem jej argumentu. W tym przypadku sprawa jest o wiele bardziej skomplikowana, ponieważ musimy obliczyć pochodną funkcji straty, która jest funkcją wielu zmiennych. Zagadnienie to mocno wybiega poza zakres materiału, więc nie będziemy zagłębiać się w jego szczegóły.

Dzięki policzeniu pochodnej funkcji straty jesteśmy w stanie odpowiednio zmieniać wagi połączeń w poszczególnych warstwach tak, aby dążyć do minimalizacji wartości, którą ona zwraca. Na tym właśnie polega algorytm propagacji wstecznej i jest on podstawowym narzędziem wykorzystywanym podczas uczenia z nadzorem.

Słownik

funkcja straty
funkcja straty

funkcja, która zwraca różnicę pomiędzy dwoma zestawami danych wyrażoną za pomocą liczby rzeczywistej; wykorzystywana w problemach statystycznych i optymalizacyjnych