Znalazłem rektyfikowaną jednostkę liniową (ReLU) chwaloną w kilku miejscach jako rozwiązanie problemu znikającego gradientu sieci neuronowych. Oznacza to, że jako funkcję aktywacji używa się max (0, x). Gdy aktywacja jest dodatnia, oczywiste jest, że jest ona lepsza niż, powiedzmy, funkcja aktywacji sigmoidalnej, ponieważ jej pochodna wynosi zawsze 1 zamiast arbitralnie małej wartości dla dużego x. Z drugiej strony, wyprowadzenie wynosi dokładnie 0, gdy x jest mniejsze niż 0. W najgorszym przypadku, gdy jednostka nigdy nie jest aktywowana, wagi dla tej jednostki również nigdy się nie zmieniłyby, a jednostka byłaby na zawsze bezużyteczna - co wydaje się znacznie gorsze niż znikające nawet niewielkie gradienty. Jak algorytmy uczenia się radzą sobie z tym problemem, gdy używają ReLU?
źródło
Odpowiedzi:
Oto artykuł wyjaśniający problem. Cytuję jego część, aby wyjaśnić problem.
Tak więc funkcja aktywacji prostownika wprowadza efekt rzadkości w sieci. Oto kilka zalet rzadkości z tego samego papieru;
Odpowiada również na zadane pytanie:
Możesz przeczytać artykuł, aby uzyskać więcej szczegółów.
źródło
Dlatego prawdopodobnie lepszym pomysłem jest użycie PReLU, ELU lub innych nieszczelnych aktywacji podobnych do ReLU, które nie tylko umierają do zera, ale spadają do około 0,1 * x, gdy x staje się ujemny, aby kontynuować naukę. Przez długi czas wydawało mi się, że ReLU są historią jak sigmoid, choć z jakiegoś powodu ludzie nadal publikują z nimi artykuły. Dlaczego? Nie wiem
Dmytro Mishkin i inni faceci faktycznie przetestowali sieć z wieloma różnymi rodzajami aktywacji, powinieneś sprawdzić ich wyniki na temat wydajności różnych funkcji aktywacyjnych i innych rzeczy. Jednak niektóre funkcje, takie jak XOR, są lepiej poznawane przy użyciu zwykłego ReLU. Nie myśl o żadnych neuronach w kategoriach dogmatycznych, ponieważ sieci neuronowe są bardzo w toku. Nikt na świecie tak naprawdę ich nie zna i nie rozumie na tyle dobrze, aby powiedzieć boską prawdę. Nikt. Wypróbuj różne rzeczy, dokonuj własnych odkryć. Pamiętaj, że korzystanie z ReLU jest bardzo nowym osiągnięciem i przez dziesięciolecia wszyscy doktoranci w tej dziedzinie korzystali z nadmiernie skomplikowanych funkcji aktywacyjnych, z których teraz możemy się tylko śmiać. Zbyt często „zbyt duża wiedza” może przynieść złe wyniki. Ważne jest, aby zrozumieć, że sieci neuronowe nie są nauką ścisłą. Nic w matematyce nie mówi, że sieci neuronowe faktycznie będą działać tak dobrze, jak one. To heurystyka. A więc jest bardzo plastyczny.
FYI nawet aktywacja wartości bezwzględnej daje dobre wyniki w przypadku niektórych problemów, na przykład problemów podobnych do XOR. Różne funkcje aktywacji są lepiej dostosowane do różnych celów. Próbowałem Cifar-10 z abs () i wydawało się, że działa gorzej. Chociaż nie mogę powiedzieć, że „jest to gorsza funkcja aktywacji do rozpoznawania wizualnego”, ponieważ nie jestem pewien, na przykład, czy moja wstępna inicjalizacja była dla niego optymalna itp. Sam fakt, że uczyła się względnie dobrze mnie zadziwiło.
Posunąłbym się nawet do stwierdzenia, że powinniśmy zakazać nazywania ich „pochodnymi” i zacząć nazywać je czymś innym, na przykład:
error activation functions
aby nie zamykać naszych umysłów na możliwości majstrowania przy nich. Można na przykład użyć aktywacji ReLU, ale podać wartość 0,1 lub coś takiego zamiast 0 jako pochodną dla x <0. W pewnym sensie masz wtedy zwykły ReLU, ale neurony nie są w stanie „umrzeć z powodu adaptacji”. Nazywam to NecroRelu, ponieważ jest to ReLU, które nie może umrzeć. W niektórych przypadkach (choć zdecydowanie nie w większości) działa to lepiej niż zwykły LeakyReLU, który faktycznie ma pochodną 0,1 przy x <0 i lepszą niż zwykle ReLU. Nie sądzę jednak, aby zbyt wielu innych badało taką funkcję, ale może to być ogólnie fajna funkcja aktywacji, której nikt nie rozważał tylko dlatego, że są zbyt skoncentrowani na matematyce.Jeśli chodzi o to, co jest powszechnie używane, w przypadku aktywacji tanH (x) zwykle przyjmuje się 1 - x² zamiast 1 - tanH (x) ² jako pochodną w celu szybszego obliczenia.
Pamiętaj też, że ReLU nie jest wcale takie „oczywiście lepsze” niż, na przykład, TanH. TanH może być lepszy w niektórych przypadkach. Po prostu, jak się wydaje, nie w rozpoznawaniu wizualnym. Chociaż na przykład ELU ma nieco sigmoidalną miękkość i jest to obecnie jedna z najbardziej znanych funkcji aktywacyjnych do rozpoznawania wizualnego. Naprawdę nie próbowałem, ale założę się, że można ustawić kilka grup z różnymi funkcjami aktywacji na tym samym poziomie warstwy, co jest korzystne. Ponieważ inną logikę lepiej opisują różne funkcje aktywacyjne. A czasem prawdopodobnie potrzebujesz kilku rodzajów oceny.
Zauważ, że ważne jest, aby mieć inicjalizację odpowiadającą typowi twojej funkcji aktywacyjnej. Przeciekające ReLU potrzebują na przykład innego inicjatora niż zwykłe ReLU.
EDYCJA: W rzeczywistości standardowa ReLU wydaje się mniej podatna na przeregulowanie w porównaniu z nieszczelnymi przy nowoczesnej architekturze. Przynajmniej w rozpoznawaniu obrazu. Wydaje się, że jeśli wybierasz sieć o bardzo wysokiej dokładności z ogromnym obciążeniem parametrów, lepiej trzymać się zwykłego ReLU vs. nieszczelne opcje. Ale oczywiście przetestuj to wszystko sam. Być może niektóre nieszczelne rzeczy będą działać lepiej, jeśli zostanie podana większa regularność.
źródło
initialization that corresponds to a type of activation function one is using
w sposóbNOTE
w swoim poście, można proszę podać swoje sugestie do tego na tych samych liniach, nie jestem w pełni przekonany, że za pomocą Relu aktywacje ponad esicy / TANH jest rozwiązaniem dla zanikającego / eksplodującego problemu gradientu .Oto heurystyczne wyjaśnienie:
Możesz pomyśleć, że lepiej byłoby mieć funkcję liniową, niż spłaszczyć, gdy x <0. Chodzi tutaj o to, że RELU generuje rzadkie sieci ze stosunkowo niewielką liczbą użytecznych łączy, które mają większą biologiczną wiarygodność, więc utrata wiązka ciężarów jest naprawdę pomocna. Również symulacja interesujących funkcji za pomocą sieci neuronowych jest możliwa tylko z pewną nieliniowością funkcji aktywacji. Liniowa funkcja aktywacji daje liniowy sygnał wyjściowy, co wcale nie jest bardzo interesujące.
źródło
Rozważmy główną relację powtarzalności, która określa propagację wsteczną sygnału błędu.
Równanie to pokazuje również inny problem charakterystyczny dla aktywacji relu - martwe neurony: jeśli dany neuron został zainicjowany w taki sposób, że nie strzela do żadnego wejścia (jego aktywacja wynosi zero), jego gradient również wynosiłby zero, i dlatego nigdy nie zostałby aktywowany.
źródło