Odnosząc się do notatek z kursu Stanford na temat sieci neuronowych splotowych do rozpoznawania wzrokowego , akapit mówi:
„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 to tak się stanie, wtedy gradient przepływający przez jednostkę będzie odtąd zawsze wynosił zero. 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 aż 40 % sieci może być „martwy” (tj. neurony, które nigdy nie aktywują się w całym zbiorze danych szkoleniowych), jeśli szybkość uczenia się jest ustawiona na zbyt wysoką wartość. Przy właściwym ustawieniu szybkości uczenia się jest to mniejszy problem. ”
Co oznacza tutaj umieranie neuronów?
Czy możesz podać intuicyjne wyjaśnienie w prostszych terminach.
źródło
Odpowiedzi:
„Martwa” ReLU zawsze wypisuje tę samą wartość (zero, jak to się dzieje, ale to nie jest ważne) dla każdego wejścia. Prawdopodobnie osiąga się to poprzez naukę dużego negatywnego terminu obciążenia dla jego wag.
To z kolei oznacza, że nie odgrywa żadnej roli w rozróżnianiu danych wejściowych. Do celów klasyfikacji można to wyobrazić jako płaszczyznę decyzyjną poza wszystkimi możliwymi danymi wejściowymi.
Gdy ReLU znajdzie się w tym stanie, jest mało prawdopodobne, aby odzyskać, ponieważ gradient funkcji przy 0 jest również równy 0, więc uczenie się spadku gradientu nie zmieni wag. „Nieszczelne” jednostki ReLU z niewielkim dodatnim gradientem dla negatywnych danych wejściowych (
y=0.01x
gdy x <0 powiedzą) to jedna próba rozwiązania tego problemu i szansa na odzyskanie.Neurony sigmoidalne i tanh mogą cierpieć z powodu podobnych problemów, ponieważ ich wartości są nasycone, ale zawsze istnieje co najmniej mały gradient pozwalający im odzyskać się w dłuższej perspektywie.
źródło
Zobaczmy, jak wygląda ReLU (Rectified Linear Unit):
Zakładając bardzo prosty miernik błędu
źródło
What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?
, jeśli dane wejściowe są ujemne, gradient wynosiłby 0? co jest optymalne dla tego przypadku? czy mógłbyś pomóc w zrozumieniu tego?Neurony ReLU wytwarzają zero i mają zerowe pochodne dla wszystkich ujemnych sygnałów wejściowych. Tak więc, jeśli wagi w twojej sieci zawsze prowadzą do ujemnych danych wejściowych do neuronu ReLU, neuron ten faktycznie nie przyczynia się do szkolenia sieci. Matematycznie udział gradientu w aktualizacjach masy pochodzących z tego neuronu jest zawsze równy zero (więcej szczegółów znajduje się w dodatku matematycznym).
Zasadniczo to, co się dzieje, zależy od tego, jak informacje przepływają przez sieć. Możesz sobie wyobrazić, że w miarę trwania treningu wartości wytwarzane przez neurony mogą dryfować i umożliwiać ciężarówkom zabicie całego przepływu danych przez niektóre z nich. (Czasami mogą pozostawić te niekorzystne konfiguracje z powodu aktualizacji wagi wcześniej w sieci!). Badałem ten pomysł w poście na blogu o inicjalizacji wagi - która może również przyczynić się do tego problemu - i jej związku z przepływem danych. Myślę, że mój punkt tutaj można zilustrować fabułą z tego artykułu:
Wykres wyświetla aktywacje w 5-warstwowym Perceptronie wielowarstwowym z aktywacjami ReLU po jednym przejściu przez sieć z różnymi strategiami inicjalizacji. Widać, że w zależności od konfiguracji wagi, wyjścia twojej sieci mogą zostać zdławione.
Dodatek matematyczny
Pierwszy termin po prawej stronie można wyliczyć rekurencyjnie. Drugi termin po prawej to jedyne miejsce bezpośrednio związane z wagą i można je podzielić naw(i)jk
Z tego widać, że jeśli wyniki są zawsze ujemne, wagi prowadzące do neuronu nie są aktualizowane, a neuron nie przyczynia się do uczenia się.
źródło
Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.
jaki sposób wagi stają się ujemne, jeśli dane wejściowe są znormalizowane?Mówiąc dokładniej w języku, podczas gdy lokalny gradient ReLU (który wynosi ) pomnaża gradient, który płynie wstecz z powodu propagacji wstecznej, wynikiem zaktualizowanego gradientu może być duża liczba ujemna (jeśli gradient ten płynie powrót jest dużą liczbą ujemną).1
Tak duży ujemny zaktualizowany gradient wytwarza duży ujemny gdy szybkość uczenia się jest względnie duża, dlatego będzie tłumić aktualizacje, które będą miały miejsce w tym neuronie, ponieważ prawie niemożliwe jest ustawienie dużej liczby dodatniej w celu zrekompensowania dużej liczby ujemnej spowodowanej przez to „ zepsuty " .wi wi
źródło
„Dying ReLU” odnosi się do neuronu, który generuje 0 dla danych w zestawie treningowym. Dzieje się tak, ponieważ suma danych wejściowych wagi * w neuronie (zwana także aktywacją ) wynosi <= 0 dla wszystkich wzorców wejściowych. Powoduje to, że ReLU wyprowadza wartość 0. Ponieważ pochodna ReLU ma w tym przypadku wartość 0, nie dokonuje się aktualizacji wagi, a neuron utknął na wyjściu 0.
Ważne uwagi:
źródło