Jak wybrać funkcję aktywacji?

13

Wybieram funkcję aktywacji dla warstwy wyjściowej w zależności od potrzebnych danych wyjściowych i właściwości funkcji aktywacji, które znam. Na przykład wybieram funkcję sigmoidalną, gdy mam do czynienia z prawdopodobieństwami, ReLU, gdy mam do czynienia z wartościami dodatnimi, i funkcję liniową, gdy mam do czynienia z wartościami ogólnymi.

W ukrytych warstwach używam nieszczelnego ReLU, aby uniknąć martwych neuronów zamiast ReLU i tanh zamiast sigmoidu. Oczywiście nie używam funkcji liniowej w ukrytych jednostkach.

Jednak wybór dla nich w ukrytej warstwie wynika głównie z prób i błędów.

Czy istnieje jakaś reguła, która funkcja aktywacji może działać dobrze w niektórych sytuacjach? Przyjmij termin sytuacje tak ogólnie, jak to możliwe: może odnosić się do głębokości warstwy, głębokości NN, liczby neuronów dla tej warstwy, do wybranego przez nas optymalizatora, do liczby cech wejściowych tę warstwę do zastosowania tej NN itp.

W swojej odpowiedzi Cantantust odnosi się do innych funkcji aktywacyjnych, o których nie wspomniałem, takich jak ELU i SELU. Te informacje są bardzo mile widziane. Jednak im więcej funkcji aktywacyjnych odkrywam, tym bardziej jestem zdezorientowany wyborem funkcji do zastosowania w ukrytych warstwach. I nie sądzę, że rzut monetą jest dobrym sposobem na wybranie funkcji aktywacji.

gvgramazio
źródło

Odpowiedzi:

10

Wydaje mi się, że już rozumiesz wady ReLU i sigmoidów (jak martwe neurony w przypadku zwykłego ReLU). Sugerowałbym spojrzenie na ELU (wykładnicze jednostki liniowe) i SELU ( samonormalizująca się wersja ELU). Przy pewnych łagodnych założeniach te ostatnie mają przyjemną właściwość samonormalizacji, co łagodzi problem zanikania i eksplozji gradientów. Ponadto propagują normalizację - tj. Gwarantują, że wejście do następnej warstwy będzie miało zerową średnią i wariancję jednostkową.

Edytować:


Niezwykle trudno byłoby zarekomendować funkcję aktywacji, która działa we wszystkich przypadkach użycia (chociaż uważam, że SELU zostało zaprojektowane tak, aby działało właściwie przy praktycznie każdym wejściu). Istnieje wiele rozważań - jak trudno jest obliczyć pochodną (jeśli w ogóle można ją rozróżnić!), Jak szybko sieć z wybranym AF jest zbieżna, jak gładka jest, czy spełnia warunki uniwersalnego twierdzenia o przybliżeniu , czy zachowuje normalizację i tak dalej. Możesz dbać o niektóre lub niektóre z nich.

Najważniejsze jest to, że nie ma uniwersalnej zasady wyboru funkcji aktywacji ukrytych warstw. Osobiście lubię używać sigmoidów (szczególnie tanh), ponieważ są ładnie ograniczone i bardzo szybkie w obliczeniach, ale co najważniejsze, ponieważ działają w moich przypadkach użycia . Inni zalecają nieszczelne ReLU dla warstw wejściowych i ukrytych jako funkcję przejściową, jeśli sieć się nie uczy. Możesz nawet mieszać i dopasowywać funkcje aktywacji, aby ewoluować sieci neuronowe do fantazyjnych zastosowań .

Pod koniec dnia prawdopodobnie uzyskasz tyle opinii, ile osób jest na temat właściwego wyboru funkcji aktywacji, więc krótka odpowiedź powinna prawdopodobnie brzmieć: zacznij od AF dnia (nieszczelny ReLU / SELU?) i przebijaj się przez inne AF w celu zmniejszenia popularności, jeśli twoja sieć ma trudności z nauką czegokolwiek.

Cantordust
źródło
1
Racja, zapomniałem o propagowaniu normalizacji. Dzięki za przypomnienie. Jednak pytanie wciąż pozostaje bez odpowiedzi. Istnieje reguła lub coś do wyboru, które funkcje aktywacyjne należy umieścić w ukrytych warstwach? Dla uproszczenia mówię tylko o w pełni połączonych warstwach. Nie chcę komplikować tematu za pomocą zwojów, łączenia itd.
gvgramazio,
@gvgramazio Zredagowałem odpowiedź, mam nadzieję, że jest teraz trochę bardziej przydatna.
kantorost
Wydaje mi się, że dzięki edycji odpowiedziałeś na moje pytanie, a także podałeś zainteresowane linki (w szczególności ten dotyczący miksowania i dopasowywania ). Niestety nie jest to odpowiedź, którą chciałem usłyszeć. Moje pytanie pozostanie otwarte jeszcze przez kilka dni. Jeśli nikt nie wymyśli lepszej odpowiedzi, oznaczę twoją jako przyjętą.
gvgramazio
-1

Nie wiem, nad którymi sieciami neuronowymi pracujesz. Ale należy również wziąć pod uwagę funkcje aktywacji tanh w przypadku nawracającej sieci neuronowej. Dlaczego należy unikać eksplozji problemów z gradientem, ponieważ funkcja tanh jest ograniczona na przykład różnicą funkcji RELU.

Alexis
źródło
W pytaniu stwierdziłem, że używam tanh i sigmoid, nie tylko ReLU. Ponadto dla uproszczenia mam na myśli ogólnie ukryte, w pełni połączone warstwy. Jeśli uważasz, że fakt, że mamy do czynienia z nawracającą siecią neuronową, jest istotny dla wyboru funkcji aktywacji, proszę podać przyczynę. Zjawisko eksplodowania / zanikania może się również zdarzyć w nierekurencyjnej sieci neuronowej.
gvgramazio