Dlaczego przyspiesza opadanie gradientu, jeśli funkcja jest płynna?


10

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.

wprowadź opis zdjęcia tutaj

Te zśrodki na osi x na wykresie powyżej. Rozumiem, że pochodna jest gładka, ponieważ z < 0linia 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?


BTW, czy jestem we właściwej SE? Data Science, Artificial Intelligence i Cross Validated, (a także MathSE) ... wydaje mi się, że wiele tematów jest ze sobą bardzo powiązanych ...
Blaszard

2
Myślę, że możesz bezpiecznie opublikować to pytanie tutaj w Data Science lub Cross Validated. Być może jest to również odpowiednie dla sztucznej inteligencji, ale ja mniej znam tę stronę.
Neil Slater,

Dobre pytanie. Gładkość pozwala robić odważne kroki we właściwym kierunku zamiast ostrożnie robić kroki dla dzieci, ponieważ gradient może się drastycznie zmienić w następnym kroku. Aby zapoznać się z analizą zbieżności, patrz np . Przyspieszone zejście gradientu Nesterowa dla płynnej i silnie wypukłej optymalizacji
Emre,

@NeilSlater AI ma bardzo niejasny zakres. Zamykają takie pytania. Więc DS i CV byłyby najlepszymi opcjami :)
Dawny33

Odpowiedzi:


1

Sądzę, że jest to spowodowane pochodną, ​​ponieważ ReLU ma nieciągłą pochodną na poziomie 0. Dlatego jeśli użyjesz definicji:

ff(x+ϵ)f(xϵ)2ϵ

a jest bardzo bliskie 0, dostaniesz wiele takich „skoków”.x


0

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.


Jest bardzo mało prawdopodobne, aby parametr stał się dokładnie z = 0 po inicjalizacji.
Pieter,

0

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

z1=W1x+b1

a1=f(z1)

...

zn=Wnan1+bn

y=f(zn)

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 .ff(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 mamy yW1

dfdW1=dfdWndWndWn1...dW2dW1

a dla każdego zauważ, że 0<i<n

dXidXi1=f(Wi1ai2+bi1)×ai2(1,1)

(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)fai2(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.dfdW1ndfdW1

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>0f

dXidXi1=ai2
dfdW1=a1a2a3...an1

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>0x<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>0x<1

Cytuję oryginalny artykuł dla różnicy między nimi.

Chociaż LReLU i PReLU mają również wartości ujemne, nie zapewniają one stanu wyłączenia odpornego na zakłócenia. ELU nasycają się do wartości ujemnej przy mniejszych wejściach, a tym samym zmniejszają propagowaną do przodu zmienność i informacje.

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.


0

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.