Przeczytałem teraz książkę zatytułowaną „Praktyczne uczenie maszynowe za pomocą Scikit-Learn i TensorFlow”, a na rozdziale 11 znajduje się następujący opis objaśnienia ELU (wykładniczej ReLU).
Po trzecie, funkcja jest płynna wszędzie, w tym wokół z = 0, co pomaga przyspieszyć opadanie gradientu, ponieważ nie odbija się tak bardzo w lewo i prawo od z = 0.
Te z
środki na osi x na wykresie powyżej. Rozumiem, że pochodna jest gładka, ponieważ z < 0
linia ma krzywą i w tej dziedzinie pochodna nie jest już równa 0
.
Dlaczego jednak jest tak, że jeśli funkcja jest „gładka wszędzie, w tym około z = 0”, przyspiesza opadanie gradientu?
deep-learning
gradient-descent
Blaszard
źródło
źródło
Odpowiedzi:
Sądzę, że jest to spowodowane pochodną, ponieważ ReLU ma nieciągłą pochodną na poziomie 0. Dlatego jeśli użyjesz definicji:
a jest bardzo bliskie 0, dostaniesz wiele takich „skoków”.x
źródło
Wstępne: istotne są tutaj trzy atrybuty funkcji: ciągła, monotoniczna i różniczkowalna. RELU jest ciągłą i monotoniczną nakrętką nie do odróżnienia przy z = 0. Wykładniczy relu lub ELU to wszystkie trzy z tych atrybutów.
Różnica lub gradient podaje kierunek. Gdy pochodna funkcji jest niezdefiniowana w punkcie, wówczas kierunek gradientu jest nieokreślony w tym punkcie.
Stosując opadanie gradientu, chcemy ciągle modyfikować parametry tak, aby funkcja straty stale się zmniejszała, co jest równoznaczne z mówieniem, że chcemy nadal schodzić w dół do minimum.
Gdy pochodna funkcji straty jest w pewnym momencie niezdefiniowana, gradient jest nieokreślony. Oznacza to, że opadanie gradientu może potencjalnie poruszać się w złym kierunku. Wielkość opóźnienia spowodowanego tą nieokreślonością zależy od szybkości uczenia się i innych hiper-parametrów. Bez względu na hiper-parametry, statystycznie, niezdefiniowana pochodna w RELU przy z = 0, przyczynia się do spowolnienia zbieżności spadku gradientu.
źródło
Bycie szybszym lub niższym jest terminem względnym i należy je rozumieć w kontekście tego, do czego się porównuje. Aby to zrozumieć, musimy najpierw zastanowić się, jak gradient opadający działa z innymi typami funkcji aktywacji.
Przykładowa konfiguracja
Rozważ MLP z ukrytymi warstwami rozmiaru pierwszego.n
...
gdzie jest funkcją aktywacji.f
Tanh and Sigmoid - Vanishing Gradient
Załóżmy, że jest funkcją aktywacyjną Tanh lub Sigmoid. Pochodna tych funkcji jest ograniczona od -1 do 1 lub formalnie dla dowolnego .f f′(x)∈(−1,1) x
Powoduje to bardzo ważny problem w głębokim uczeniu się, znany jako „problem zanikania gradientu”. Rozważmy pochodną wrt . Zgodnie z regułą łańcucha mamyy W1
a dla każdego zauważ, że0<i<n
(Pierwszy termin jest między ponieważ jest ograniczony, jak omówiono wcześniej, a również znajduje się między jako wartość wejściowa).(−1,1) f′ ai−2 (−1,1)
Tak więc jest w zasadzie produktem wielu wyrażeń, z których każde zawiera się między (0, 1). Im większa (głębsza sieć), tym więcej tego terminu musimy pomnożyć, w wyniku czego staje się wykładniczo mniejszy. Z powodu tej wykładniczej zależności gradient szybko staje się tak mały, że możemy skutecznie uznać go za zero. Konsekwencją zerowego gradientu jest brak uczenia się, ponieważ nasza reguła aktualizacji dla spadku gradientu jest oparta na tym gradiencie.dfdW1 n dfdW1
RELU i Dead Neuron
Relu został wymyślony, aby poradzić sobie z problemem znikającego gradientu, ponieważ jego pochodna wynosi zawsze 1, gdy więc gdy to RELU, mamy:ai>0 f
Wszystko ładnie i dobrze, gdy ale rzeczy się rozpadają za każdym razem, gdy , tym razem gradient nie tylko jest bardzo bliski zeru, ale jest to czyste zero. Gdy neuron się tam dostanie, nie ma szans na powrót. Dlatego jest to znane jako problem „martwego neuronu”x>0 x<0
Nieszczelne RELU i ELU
Nieszczelne RELU i ELU to naturalny rozwój po RELU. Są podobne do RELU jako pochodnej równej 1, gdy ale unikają „martwego neuronu”, unikając zerowych pochodnych, gdy .x>0 x<1
Cytuję oryginalny artykuł dla różnicy między nimi.
Intuicyjne wyjaśnienie wygląda następująco. W ELU, gdy x staje się wystarczająco mały, gradient staje się naprawdę mały i nasycony (tak samo dzieje się w przypadku Tanha i Sigmoida). Mały gradient oznacza, że algorytm uczący się może skupić się na dostrajaniu innych wag bez martwienia się o interakcję z nasyconymi neuronami.
Rozważ wielomian stopnia 2, który można przedstawić jako gładką powierzchnię w przestrzeni 3-d. Aby znaleźć lokalne minimum, algorytm zniżania gradientu będzie musiał wziąć pod uwagę stromość w kierunku x i y. Jeśli gradient jest zarówno ujemny w kierunku x, jak i w kierunku y, nie jest jasne, która droga jest lepsza. Dlatego rozsądnie jest wybrać ścieżkę pomiędzy nimi. Ale co, jeśli wiemy już, że wszystko jest płaskie (zerowe gradienty) w kierunku x, wtedy przejście do kierunku y staje się oczywiste. Innymi słowy, przestrzeń wyszukiwania staje się znacznie mniejsza.
specjalna notatka
W głębokim uczeniu się istnieje wiele twierdzeń bez wystarczających dowodów empirycznych lub dogłębnego zrozumienia, aby je poprzeć. W przypadku ELU, chociaż może być prawdą, że skutkuje szybszą konwergencją dla niektórych zestawów danych, może być również prawdą, że powoduje, że algorytm uczenia się zatrzymuje się na lokalnym maksimum dla innego zestawu danych. Po prostu jeszcze nie wiemy wystarczająco dużo.
źródło
Mam intuicyjne wyobrażenie, dlaczego płynne funkcje są szybsze w optymalizacji, ale nie ma matematycznego dowodu ani nic takiego.
Spadek gradientu oblicza pochodną funkcji aktywacji w celu określenia zmiany wag. Gdy funkcja aktywacji ma ostre cięcie (np. Przy z = 0 dla ReLu), aktywacja urządzenia może ulec radykalnej zmianie (tj. Zawsze zerowej lub liniowej) dla określonych punktów danych przy zmianie ciężarów.
Inne wagi muszą być dostosowane do tego radykalnie odmiennego zachowania określonej jednostki dla określonych punktów danych. Jeśli jednak zachowanie jednostki zmieni się radykalnie ponownie podczas następnej epoki, sieć kontynuuje dostosowywanie się do zmian w poprzedniej epoce.
Dzięki płynnej funkcji nie ma tak radykalnych zmian. W ten sposób sieć może się bardziej stopniowo stabilizować.
źródło