Podobne pytanie zostało zadane w CV: Kompleksowa lista funkcji aktywacyjnych w sieciach neuronowych z zaletami / wadami .
Kopiuję poniżej jedną z odpowiedzi:
Jedna taka lista, choć niezbyt wyczerpująca:
http://cs231n.github.io/neural-networks-1/
Często używane funkcje aktywacji
Każda funkcja aktywacji (lub nieliniowość ) pobiera jedną liczbę i wykonuje na niej pewną stałą operację matematyczną. W praktyce istnieje kilka funkcji aktywacyjnych:
Po lewej: Nieliniowość sigmoidalna powoduje zmiażdżenie liczb rzeczywistych w zakresie od [0,1] Po prawej: Nieliniowość sigmoidalna zmiażdży liczby rzeczywiste w zakresie od [-1,1].
Sigmoid. Nieliniowość sigmoidalna ma postać matematyczną i jest pokazana na powyższym obrazku po lewej stronie. Jak wspomniano w poprzedniej sekcji, przyjmuje liczbę o wartościach rzeczywistych i „zgniata” ją w zakresie od 0 do 1. W szczególności duże liczby ujemne stają się 0, a duże liczby dodatnie - 1. Funkcja sigmoidalna była często używana w przeszłości ponieważ ma niezłą interpretację jako szybkość odpalania neuronu: od całkowitego odpalenia (0) do pełnego nasycenia przy założonej maksymalnej częstotliwości (1). W praktyce sigmoidalna nieliniowość ostatnio popadła w niełaskę i jest rzadko używana. Ma dwie główne wady:σ( x ) = 1 / ( 1 + e- x)
- Sigmoidy nasycają i zabijają gradienty . Bardzo niepożądaną właściwością esicy neuronu jest to, że gdy aktywacja neuronu nasyca się na ogonie 0 lub 1, gradient w tych regionach jest prawie zerowy. Przypomnij sobie, że podczas propagacji wstecznej ten (lokalny) gradient zostanie pomnożony przez gradient wyniku tej bramki dla całego celu. Dlatego jeśli lokalny gradient jest bardzo mały, skutecznie „zabije” gradient i prawie żaden sygnał nie przepłynie przez neuron do jego wag i rekurencyjnie do jego danych. Ponadto należy zachować szczególną ostrożność podczas inicjowania ciężaru neuronów esowatych, aby zapobiec nasyceniu. Na przykład, jeśli początkowe ciężary są zbyt duże, wówczas większość neuronów zostanie nasycona, a sieć prawie się nie nauczy.
- Wyjścia sigmoidalne nie są wyśrodkowane na zero . Jest to niepożądane, ponieważ neurony w późniejszych warstwach przetwarzania w sieci neuronowej (więcej o tym wkrótce) otrzymywałyby dane, które nie są wyśrodkowane. Ma to wpływ na dynamikę podczas opadania gradientu, ponieważ jeśli dane wchodzące do neuronu są zawsze dodatnie (np.
elementarnie w )), to gradient na wagach
będzie podczas propagacji wstecznej stanie się albo wszystkie są dodatnie lub wszystkie ujemne (w zależności od gradientu całego wyrażenia
x > 0fa= wT.x + bwfa). Może to wprowadzić niepożądaną dynamikę zygzakowatą w aktualizacjach gradientu dla odważników. Należy jednak zauważyć, że po dodaniu tych gradientów do partii danych ostateczna aktualizacja wag może mieć zmienne znaki, co nieco łagodzi ten problem. Jest to zatem niedogodność, ale ma mniej poważne konsekwencje w porównaniu do powyższego problemu z nasyconą aktywacją.
Tanh Nieliniowość tanh pokazano na powyższym obrazku po prawej stronie. Zgniata liczbę rzeczywistą do zakresu [-1, 1]. Podobnie jak sigmoidalny neuron, jego aktywacje są nasycone, ale w przeciwieństwie do sigmoidalnego neuronu jego moc wyjściowa jest zerowa. Dlatego w praktyce nieliniowość tanh jest zawsze preferowana w stosunku do nieliniowości sigmoidalnej. Zauważ także, że neuron tanh jest po prostu skalowanym neuronem esowatym, w szczególności następujące: .tanh( x ) = 2 σ( 2 x ) - 1
Po lewej: funkcja aktywacji rektyfikowanej jednostki liniowej (ReLU), która wynosi zero, gdy x <0, a następnie liniowa ze spadkiem 1, gdy x> 0. Po prawej: Wykres z Kriżewskiego i in. (pdf) dokument wskazujący na 6-krotną poprawę konwergencji z jednostką ReLU w porównaniu z jednostką tanh.
ReLU. Prostowana jednostka liniowa stała się bardzo popularna w ciągu ostatnich kilku lat. Oblicza funkcję . Innymi słowy, aktywacja jest po prostu progowana na zero (patrz zdjęcie powyżej po lewej). Istnieje kilka zalet i wad korzystania z ReLU:fa( x ) = maks. ( 0 , x )
- (+) Stwierdzono, że znacznie przyspiesza (np. Współczynnik 6 w Kriżewskim i wsp. ) Zbieżność stochastycznego spadku gradientu w porównaniu z funkcjami sigmoid / tanh. Twierdzi się, że wynika to z jego liniowej, nienasyconej formy.
- (+) W porównaniu do neuronów tanh / sigmoidalnych, które wymagają drogich operacji (wykładnicze itp.), ReLU można wdrożyć, po prostu progując macierz aktywacji na zero.
- (-) Niestety jednostki ReLU mogą być kruche podczas treningu i mogą „umrzeć”. Na przykład duży gradient przepływający przez neuron ReLU może spowodować aktualizację wag w taki sposób, że neuron nigdy więcej się nie aktywuje w żadnym punkcie danych. Jeśli tak się stanie, gradient przepływający przez jednostkę będzie na zawsze wynosił zero od tego momentu. Oznacza to, że jednostki ReLU mogą nieodwracalnie umrzeć podczas treningu, ponieważ mogą zostać zrzucone z rozmaitości danych. Na przykład może się okazać, że nawet 40% twojej sieci może być „martwe” (tj. Neurony, które nigdy nie aktywują się w całym zestawie danych treningowych), jeśli szybkość uczenia się jest ustawiona zbyt wysoko. Przy odpowiednim ustawieniu szybkości uczenia się jest to rzadziej problem.
Nieszczelne ReLU. Nieszczelne ReLU to jedna z prób rozwiązania problemu „umierania ReLU”. Zamiast funkcji wynoszącej zero, gdy x <0, nieszczelna ReLU będzie miała małe ujemne nachylenie (około 0,01 lub więcej). Oznacza to, że funkcja oblicza gdzie jest małą stałą. Niektóre osoby zgłaszają sukces dzięki tej formie funkcji aktywacji, ale wyniki nie zawsze są spójne. Nachylenie w regionie ujemnym można również przekształcić w parametr każdego neuronu, jak widać w neuronach PReLU, wprowadzonych w Delving Deep into Rectifiers , przez Kaiming He i in., 2015. Jednak spójność korzyści między zadaniami jest obecnie niejasny.fa( x ) = 1 ( x < 0 ) ( α x ) + 1 ( x > = 0 ) ( x )α
Maxout . Zaproponowano inne typy jednostek, które nie mają postaci funkcjonalnej której nieliniowość jest stosowana do iloczynu kropkowego między wagami a danymi. Stosunkowo popularnym wyborem jest neuron Maxout (wprowadzony niedawno przez
Goodfellow i in. ), Który uogólnia ReLU i jego nieszczelną wersję. Neuron Maxout oblicza funkcję . Zauważ, że zarówno ReLU, jak i Leaky ReLU są szczególnym przypadkiem tego formularza (na przykład dla ReLU mamyfa( wT.x + b )max ( wT.1x + b1, wT.2)x + b2))w1, b1= 0). Dlatego neuron Maxout cieszy się wszystkimi zaletami jednostki ReLU (liniowy reżim działania, brak nasycenia) i nie ma swoich wad (umierający ReLU). Jednak w przeciwieństwie do neuronów ReLU podwaja liczbę parametrów dla każdego pojedynczego neuronu, co prowadzi do dużej całkowitej liczby parametrów.
To kończy naszą dyskusję na temat najczęstszych rodzajów neuronów i ich funkcji aktywacyjnych. Ostatnim komentarzem jest bardzo rzadkie mieszanie i łączenie różnych typów neuronów w tej samej sieci, chociaż nie ma z tym podstawowego problemu.
TLDR : „ Jakiego typu neuronu powinienem użyć? ” Użyj nieliniowości ReLU, uważaj na szybkość uczenia się i ewentualnie monitoruj ułamek „martwych” jednostek w sieci. Jeśli dotyczy to Ciebie, wypróbuj Leaky ReLU lub Maxout. Nigdy nie używaj sigmoidu. Spróbuj tanh, ale spodziewaj się, że będzie działać gorzej niż ReLU / Maxout.
Licencja:
Licencja MIT (MIT)
Prawa autorskie (c) 2015 Andrej Karpathy
Niniejszym udziela się bezpłatnie każdej osobie, która otrzymuje kopię tego oprogramowania i powiązanych plików dokumentacji („Oprogramowanie”), do czynienia z Oprogramowaniem bez ograniczeń, w tym między innymi prawa do używania, kopiowania, modyfikowania, łączenia , publikować, rozpowszechniać, udzielać podlicencji i / lub sprzedawać kopie Oprogramowania oraz zezwalać na to osobom, którym Oprogramowanie zostało dostarczone, z zastrzeżeniem następujących warunków:
Powyższa informacja o prawach autorskich i niniejsza informacja o pozwoleniu będą zawarte we wszystkich kopiach lub znacznych częściach Oprogramowania.
OPROGRAMOWANIE JEST DOSTARCZANE „W STANIE, W JAKIM JEST”, BEZ ŻADNEJ GWARANCJI, WYRAŹNEJ LUB DOROZUMIANEJ, W TYM, ALE NIE OGRANICZONE DO GWARANCJI PRZYDATNOŚCI HANDLOWEJ, PRZYDATNOŚCI DO OKREŚLONEGO CELU I NARUSZENIA. W ŻADNYM WYPADKU AUTORZY LUB POSIADACZE PRAW AUTORSKICH NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK ROSZCZENIE, SZKODY LUB INNE ODPOWIEDZIALNOŚCI, NAWET W DZIAŁANIU UMOWY, TORTU LUB INNYCH INNYCH DZIAŁALNOŚCI, WYNIKAJĄCE Z, LUB ZWIĄZANE Z OPROGRAMOWANIEM LUB WYKORZYSTANIEM LUB INNYMI OKREŚLENIAMI OPROGRAMOWANIE.*