Czytałem kilka rzeczy na temat sieci neuronowych i rozumiem ogólną zasadę jednowarstwowej sieci neuronowej. Rozumiem potrzebę dodatkowych warstw, ale dlaczego są używane nieliniowe funkcje aktywacji?
Po tym pytaniu następuje pytanie: Do czego służy pochodna funkcji aktywacji wykorzystywanej w propagacji wstecznej?
Odpowiedzi:
Celem funkcji aktywacji jest wprowadzenie nieliniowości do sieci
to z kolei umożliwia modelowanie zmiennej odpowiedzi (inaczej zmiennej docelowej, etykiety klasy lub wyniku), która zmienia się nieliniowo wraz ze zmiennymi objaśniającymi
nieliniowe oznacza, że wynik nie może być odtworzony z liniowej kombinacji danych wejściowych (co nie jest tym samym, co wyjście, które renderuje do linii prostej - określenie to jest afiniczne ).
inny sposób myślenia o tym: bez nieliniowej funkcji aktywacji w sieci NN, bez względu na to, ile miał warstw, zachowywałby się jak perceptron jednowarstwowy, ponieważ sumowanie tych warstw dałoby po prostu kolejną funkcję liniową (patrz definicja powyżej).
Typowa funkcja aktywacji stosowana w backprop ( stycznej hiperbolicznej ) oceniana od -2 do 2:
źródło
Liniowa funkcja aktywacji może być używana, jednak w bardzo ograniczonych przypadkach. W rzeczywistości, aby lepiej zrozumieć funkcje aktywacji, należy spojrzeć na zwykły najmniejszy kwadrat lub po prostu na regresję liniową. Regresja liniowa ma na celu znalezienie optymalnych wag, które w połączeniu z danymi wejściowymi dają minimalny efekt pionowy między zmiennymi objaśniającymi a docelowymi. Krótko mówiąc, jeśli oczekiwany wynik odzwierciedla regresję liniową, jak pokazano poniżej, można zastosować liniowe funkcje aktywacji: (górny rysunek). Ale tak jak na drugim rysunku poniżej, funkcja liniowa nie da oczekiwanych wyników: (Figura środkowa). Jednak funkcja nieliniowa, jak pokazano poniżej, dałaby pożądane wyniki:
Funkcje aktywacji nie mogą być liniowe, ponieważ sieci neuronowe z liniową funkcją aktywacji są skuteczne tylko na głębokości jednej warstwy, niezależnie od tego, jak złożona jest ich architektura. Dane wejściowe do sieci są zwykle transformacjami liniowymi (wejście * waga), ale rzeczywistość i problemy są nieliniowe. Aby przychodzące dane były nieliniowe, używamy mapowania nieliniowego zwanego funkcją aktywacji. Funkcja aktywacji to funkcja decyzyjna, która określa obecność określonej cechy neuronowej. Jest odwzorowywany między 0 a 1, gdzie zero oznacza brak cechy, a jeden oznacza jej obecność. Niestety, niewielkie zmiany zachodzące w wagach nie mogą być odzwierciedlone w wartościach aktywacji, ponieważ mogą one przyjmować tylko 0 lub 1. Dlatego funkcje nieliniowe muszą być ciągłe i różniczkowalne w tym zakresie. Sieć neuronowa musi być w stanie przyjmować dowolne dane wejściowe od -infinity do + infinite, ale powinna być w stanie odwzorować je na dane wyjściowe w zakresie od {0,1} lub między {-1,1} w niektórych przypadkach - stąd potrzeba funkcji aktywacji. Nieliniowość jest potrzebna w funkcjach aktywacji, ponieważ jej celem w sieci neuronowej jest wytworzenie nieliniowej granicy decyzyjnej poprzez nieliniowe kombinacje wagi i danych wejściowych.
źródło
Jeśli pozwolimy tylko na liniowe funkcje aktywacji w sieci neuronowej, wynikiem będzie po prostu liniowa transformacja danych wejściowych, co nie wystarczy do utworzenia uniwersalnego aproksymatora funkcji . Taką sieć można po prostu przedstawić jako mnożenie macierzy i nie byłbyś w stanie uzyskać bardzo interesujących zachowań z takiej sieci.
To samo dotyczy przypadku, gdy wszystkie neurony mają afiniczne funkcje aktywacji (tj. Funkcję aktywacji w postaci
f(x) = a*x + c
, gdziea
ic
są stałymi, co jest uogólnieniem liniowych funkcji aktywacji), co spowoduje po prostu transformację afiniczną od wejścia do wyjścia , co też nie jest zbyt ekscytujące.Sieć neuronowa może bardzo dobrze zawierać neurony z liniowymi funkcjami aktywacji, takimi jak warstwa wyjściowa, ale wymagają one towarzystwa neuronów z nieliniową funkcją aktywacji w innych częściach sieci.
Uwaga: Ciekawym wyjątkiem są syntetyczne gradienty DeepMind , dla których używają małej sieci neuronowej do przewidywania gradientu w przebiegu wstecznej propagacji, biorąc pod uwagę wartości aktywacji, i odkrywają, że mogą uciec z użyciem sieci neuronowej bez ukrytych warstw i z tylko aktywacje liniowe.
źródło
Sieć neuronowa ze sprzężeniem zwrotnym z liniową aktywacją i dowolną liczbą ukrytych warstw jest równoważna tylko liniowej neuronowej sieci neuronowej bez warstwy ukrytej. Na przykład rozważmy sieć neuronową na rysunku z dwiema ukrytymi warstwami i bez aktywacji
Możemy zrobić ostatni krok, ponieważ kombinację kilku transformacji liniowych można zastąpić jedną transformacją, a kombinacja kilku składników odchylenia to tylko jedno odchylenie. Wynik jest taki sam, nawet jeśli dodamy trochę liniowej aktywacji.
Moglibyśmy więc zastąpić tę sieć neuronową jednowarstwową siecią neuronową, którą można rozszerzyć na
n
warstwy. Oznacza to, że dodanie warstw w ogóle nie zwiększa mocy aproksymacji liniowej sieci neuronowej. Potrzebujemy nieliniowych funkcji aktywacji, aby przybliżyć funkcje nieliniowe, a większość problemów w świecie rzeczywistym jest bardzo złożona i nieliniowa. W rzeczywistości, gdy funkcja aktywacji jest nieliniowa, wówczas dwuwarstwowa sieć neuronowa z wystarczająco dużą liczbą jednostek ukrytych może zostać udowodniona jako uniwersalny aproksymator funkcji.źródło
„W niniejszym artykule wykorzystano twierdzenie Stone'a-Weierstrassa i cosinus squasher'a Gallanta i White'a do ustalenia, że standardowa wielowarstwowa architektura sieci z wyprzedzeniem z wyprzedzeniem wykorzystująca funkcje zgniatania ścierania może przybliżyć praktycznie każdą interesującą funkcję z dowolnym pożądanym stopniem dokładności, pod warunkiem, że jest wystarczająco dużo ukrytych jednostki są dostępne ”. ( Hornik i wsp., 1989, Sieci neuronowe )
Funkcja zgniatania jest na przykład nieliniową funkcją aktywacji, która jest odwzorowywana na [0,1], podobnie jak sigmoidalna funkcja aktywacji.
źródło
Są chwile, kiedy czysto liniowa sieć może dać użyteczne wyniki. Powiedzmy, że mamy sieć trzech warstw z kształtami (3, 2, 3). Ograniczając warstwę środkową tylko do dwóch wymiarów, otrzymujemy wynik będący „płaszczyzną najlepszego dopasowania” w pierwotnej przestrzeni trójwymiarowej.
Ale są łatwiejsze sposoby na znalezienie liniowych transformacji tej postaci, takich jak NMF, PCA itp. Jest to jednak przypadek, w którym sieć wielowarstwowa NIE zachowuje się tak samo jak perceptron jednowarstwowy.
źródło
Aby zrozumieć logikę stojącą za nieliniowymi funkcjami aktywacji, najpierw należy zrozumieć, dlaczego używane są funkcje aktywacji. Ogólnie rzecz biorąc, rzeczywiste problemy wymagają nieliniowych rozwiązań, które nie są trywialne. Potrzebujemy więc pewnych funkcji, aby wygenerować nieliniowość. Zasadniczo funkcja aktywacji generuje tę nieliniowość podczas mapowania wartości wejściowych w pożądanym zakresie.
Jednak liniowe funkcje aktywacji mogą być używane w bardzo ograniczonym zestawie przypadków, w których nie są potrzebne ukryte warstwy, takie jak regresja liniowa. Zwykle nie ma sensu generowanie sieci neuronowej dla tego rodzaju problemów, ponieważ niezależnie od liczby warstw ukrytych, sieć ta generuje liniową kombinację danych wejściowych, którą można wykonać w jednym kroku. Innymi słowy, zachowuje się jak pojedyncza warstwa.
Istnieje również kilka bardziej pożądanych właściwości funkcji aktywacji, takich jak ciągła różniczkowalność . Ponieważ używamy wstecznej propagacji, generowana przez nas funkcja musi być w dowolnym momencie różniczkowalna. Zdecydowanie radzę sprawdzić stronę wikipedii pod kątem funkcji aktywacji stąd, aby lepiej zrozumieć temat.
źródło
Oto kilka dobrych odpowiedzi. Warto zwrócić uwagę na książkę „Rozpoznawanie wzorców i uczenie maszynowe” autorstwa Christophera M. Bishopa. Jest to książka, do której warto się odnieść, aby uzyskać głębszy wgląd w kilka koncepcji związanych z ML. Wyciąg ze strony 229 (rozdział 5.1):
Jeżeli funkcje aktywacji wszystkich ukrytych jednostek w sieci są traktowane jako liniowe, to dla każdej takiej sieci zawsze możemy znaleźć równoważną sieć bez ukrytych jednostek. Wynika to z faktu, że kompozycja kolejnych przekształceń liniowych sama w sobie jest przekształceniem liniowym. Jeśli jednak liczba ukrytych jednostek jest mniejsza niż liczba jednostek wejściowych lub wyjściowych, wówczas transformacje, które może wygenerować sieć, nie są najbardziej ogólnymi możliwymi transformacjami liniowymi z wejść do wyjść, ponieważ informacje są tracone w redukcji wymiarowości na ukryte jednostki. W sekcji 12.4.2 pokazujemy, że sieci jednostek liniowych dają początek analizie głównych składowych. Generalnie jednak zainteresowanie wielowarstwowymi sieciami jednostek liniowych jest niewielkie.
źródło
Jak pamiętam - funkcje sigmoidalne są używane, ponieważ ich pochodna pasująca do algorytmu BP jest łatwa do obliczenia, coś prostego, jak f (x) (1-f (x)). Nie pamiętam dokładnie matematyki. Właściwie można użyć dowolnej funkcji z pochodnymi.
źródło
Warstwowy NN kilku neuronów może służyć do uczenia liniowo nierozłącznych problemów. Na przykład funkcję XOR można uzyskać za pomocą dwóch warstw z funkcją aktywacji krokowej.
źródło
Pozwól, że wyjaśnię ci to tak prosto, jak to tylko możliwe:
Sieci neuronowe są używane w rozpoznawaniu wzorców, prawda? A znajdowanie wzorców jest techniką bardzo nieliniową.
Załóżmy, że ze względu na argumentację używamy liniowej funkcji aktywacji y = wX + b dla każdego pojedynczego neuronu i ustawiamy coś w rodzaju, jeśli y> 0 -> klasa 1 w przeciwnym razie klasa 0.
Teraz możemy obliczyć naszą stratę za pomocą kwadratowej utraty błędu i odwrotnie ją propagować, aby model się dobrze uczył, prawda?
ŹLE.
Dla ostatniej ukrytej warstwy zaktualizowaną wartością będzie w {l} = w {l} - (alpha) * X.
Dla przedostatniej ukrytej warstwy zaktualizowaną wartością będzie w {l-1} = w {l-1} - (alpha) * w {l} * X.
Dla i-tej ostatniej ukrytej warstwy zaktualizowaną wartością będzie w {i} = w {i} - (alfa) * w {l} ... * w {i + 1} * X.
Powoduje to, że mnożymy wszystkie macierze wag razem, co daje następujące możliwości: A) w {i} zmienia się ledwo z powodu zanikającego gradientu B) w {i} zmienia się dramatycznie i niedokładnie z powodu eksplodującego gradientu C) w {i} zmienia się dobrze wystarczy, by dać nam dobry wynik dopasowania
W przypadku C, oznacza to, że nasz problem klasyfikacji / predykcji był najprawdopodobniej prostym problemem opartym na regresorze liniowym / logistycznym i nigdy nie wymagał sieci neuronowej!
Bez względu na to, jak mocny lub dobrze dostrojony jest Twój NN, jeśli używasz liniowej funkcji aktywacji, nigdy nie będziesz w stanie rozwiązać nieliniowych problemów wymagających rozpoznawania wzorców
źródło
To wcale nie jest wymóg. W rzeczywistości wyprostowana liniowa funkcja aktywacji jest bardzo przydatna w dużych sieciach neuronowych. Obliczanie gradientu jest znacznie szybsze i wywołuje rzadkość, ustawiając minimalną granicę na 0.
Aby uzyskać więcej informacji, zobacz: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks
Edytować:
Odbyła się dyskusja na temat tego, czy wyprostowaną liniową funkcję aktywacji można nazwać funkcją liniową.
Tak, z technicznego punktu widzenia jest to funkcja nieliniowa, ponieważ nie jest liniowa w punkcie x = 0, jednak nadal można powiedzieć, że jest liniowa we wszystkich innych punktach, więc nie sądzę, aby warto było tu szukać dziurawego dzioba,
Mogłem wybrać funkcję tożsamości i nadal byłaby to prawda, ale jako przykład wybrałem ReLU ze względu na jego niedawną popularność.
źródło
f(x) = a*x
(ponieważ jest to jedyny rodzaj liniowej funkcji aktywacji), która jest bezużyteczna jako funkcja aktywacji (chyba że połączysz ją z nieliniowymi funkcjami aktywacji ).