Najlepsza odpowiedź
ReLU jest zdefiniowane jako f (x) = max (0, x). Softplus jest jego zastępnikiem różniczkowym i jest zdefiniowany jako f (x) = ln (1 + e ^ x).
Zarówno ReLU, jak i Softplus są w dużej mierze podobne, z wyjątkiem bliskości 0, gdzie softplus jest kusząco gładki i różniczkowalny. O wiele łatwiej i wydajniej jest obliczyć ReLU i jego pochodną niż w przypadku funkcji softplus, która ma w swoim sformułowaniu log (.) I exp (.). Co ciekawe, pochodną funkcji softplus jest funkcja logistyczna: f „(x) = \ frac {1} {1 + e ^ {- x}}.
W uczeniu głębokim obliczanie funkcji aktywacji a jego pochodna jest tak samo częsta jak dodawanie i odejmowanie w arytmetyce. Przełączając się na ReLU, przejścia do przodu i do tyłu są znacznie szybsze, przy jednoczesnym zachowaniu nieliniowego charakteru funkcji aktywacji wymaganej, aby głębokie sieci neuronowe były przydatne.
Odpowiedź
Cały sens funkcji aktywacyjnej ma być nieliniowy.
Pozwólcie, że wyjaśnij dlaczego. Jeśli masz sieć wielowarstwową (tak zwaną „głęboką” w porównaniu z „płytką” siecią), Twój model może potencjalnie nauczyć się wykrywać lub obsługiwać znacznie bardziej wyrafinowane przykłady. Podczas pracy Twoja sieć wykorzystywałaby więcej połączeń między wagami (i najprawdopodobniej więcej wag). Podczas wykonywania obliczeń wiele z nich oznacza w rzeczywistości mnożenie i dodawanie liczb, na przykład:
y = f (W x + b).
gdzie f (\ cdot) jest jakąś funkcją aktywującą.
Kiedy „kaskadujesz” warstwy, wyjście każdej warstwy staje się wejściem dla kolejnej. Na przykład dla 2 warstw:
y = x\_2 = f (W\_2 x\_1 + b\_2) = f (W\_2 f (W\_1 x\_0 + b\_1) + b\_2).
Jednak jeśli f (\ cdot) była funkcją liniową f (x) = \ alpha x + \ beta, wtedy cała sieć „zwaliłaby się” do tylko jednej warstwy, po prostu dlatego, że dowolna liniowa kombinacja funkcji liniowych jest sama w sobie funkcją liniową.
Powyższe równanie dałoby:
x\_2 = \ alpha (W\_2 (\ alpha (W\_1 x\_0 + b\_1) + \ beta) + b\_2) + \ beta = \ alpha ^ 2 W\_1 W\_2 x\_0 + \ alpha ^ 2 W\_1 W\_2 b\_1 + \ alpha ^ 2 W\_2 \ beta + \ alpha W\_2 b\_1 + \ beta = \ alpha „x\_0 + \ beta „.
To tak, jakbyś miał sieć jednowarstwową o nieco innych wagach.
Teraz ReLU wprowadza nieliniowość, co oznacza, że powyższe stwierdzenie już nie obowiązuje, więc optymalizator musi „bardziej się starać”, aby naprawdę wyszkolić wagi i sprawić, by wszystko działało. Istnieją oczywiście również inne funkcje nieliniowe (np. Sigmoida, tanh itp.), Ale chodzi o to, że muszą być nieliniowe.
Wreszcie, właśnie napisany przykład opiera się na prostej, gęsto połączonej sieci, ale myślę, że obejmuje to również inne przypadki.