Najnowszym stanem nieliniowości jest stosowanie rektyfikowanych jednostek liniowych (ReLU) zamiast funkcji sigmoidalnej w głębokiej sieci neuronowej. Jakie są zalety?
Wiem, że szkolenie sieci przy użyciu ReLU byłoby szybsze i jest bardziej inspirowane biologicznie, jakie są inne zalety? (Czyli jakieś wady używania sigmoidu)?
machine-learning
neural-networks
deep-learning
RockTheStar
źródło
źródło
Odpowiedzi:
Dwie dodatkowe główne zalety ReLU to rzadkość i zmniejszone prawdopodobieństwo zanikania gradientu. Ale najpierw przypomnijmy sobie definicję ReLU to gdzie .h=max(0,a) a=Wx+b
Jedną z głównych korzyści jest zmniejszone prawdopodobieństwo zniknięcia gradientu. Powstaje, gdy . W tym trybie gradient ma stałą wartość. Natomiast gradient sigmoidów staje się coraz mniejszy wraz ze wzrostem wartości bezwzględnej x. Stały gradient ReLU powoduje szybsze uczenie się.a>0
Inną zaletą ReLU jest rzadkość. Sparsity powstaje, gdy . Im więcej takich jednostek istnieje w warstwie, tym bardziej rzadka jest wynikowa reprezentacja. Z drugiej strony sigmoidy zawsze generują pewną niezerową wartość, co prowadzi do gęstej reprezentacji. Rzadkie reprezentacje wydają się bardziej korzystne niż gęste reprezentacje.a≤0
źródło
Korzyść:
Niekorzyść:
Sigmoid: tendencja do zanikania gradientu (ponieważ istnieje mechanizm zmniejszania gradientu jako wzrostu „ ”, gdzie „ ” jest wejściem funkcji sigmoidalnej. Gradient Sigmoid: . Gdy „ ” staje się nieskończenie duży, ).a a S′(a)=S(a)(1−S(a)) a S′(a)=S(a)(1−S(a))=1×(1−1)=0
Relu: tendencja do wysadzania aktywacji (nie ma mechanizmu ograniczającego wyjście neuronu, ponieważ wyjściem jest „ ”)a
źródło
$x$
Daje .Po prostu uzupełniam inne odpowiedzi:
Znikające gradienty
Inne odpowiedzi słusznie wskazują, że im większy sygnał wejściowy (w wartości bezwzględnej), tym mniejszy gradient funkcji sigmoidalnej. Ale prawdopodobnie jeszcze ważniejszym efektem jest to, że pochodna funkcji sigmoidalnej ZAWSZE jest mniejsza niż jeden . W rzeczywistości jest to najwyżej 0,25!
Wadą tego jest to, że jeśli masz wiele warstw, pomnożysz te gradienty, a iloczyn wielu wartości mniejszych niż 1 bardzo szybko osiągnie zero.
Ponieważ stan techniki głębokiego uczenia się pokazał, że więcej warstw bardzo pomaga, więc ta wada funkcji Sigmoid jest zabójcą gry. Po prostu nie możesz przeprowadzić głębokiej nauki z Sigmoid.
Z drugiej strony gradient funkcji ReLu wynosi dla lub dla . Oznacza to, że możesz umieścić tyle warstw, ile chcesz, ponieważ pomnożenie gradientów nie zniknie ani nie wybuchnie.0 a<0 1 a>0
źródło
Zaletą ReLU poza unikaniem problemu znikania gradientów jest to, że ma on znacznie krótszy czas działania. max (0, a) działa znacznie szybciej niż jakakolwiek funkcja sigmoidalna (funkcja logistyczna, na przykład = 1 / (1 + e ^ (- a)), która używa wykładnika, który jest często powolny obliczeniowo). Dotyczy to zarówno propagacji do przodu i do tyłu, ponieważ gradient ReLU (jeśli a <0, = 0 else = 1) jest również bardzo łatwy do obliczenia w porównaniu z sigmoidem (dla krzywej logistycznej = e ^ a / ((1 + e ^ a) ^ 2)).
Chociaż ReLU ma tę wadę, że umierające komórki ograniczają pojemność sieci. Aby temu zaradzić, użyj wariantu ReLU, takiego jak nieszczelny ReLU, ELU itp., Jeśli zauważysz opisany powyżej problem.
źródło
Dodatkowa odpowiedź do wypełnienia w debacie o wydajności rzadkich i gęstych .
Nie myśl już o NN, po prostu pomyśl o algebrze liniowej i operacjach macierzowych, ponieważ propagacje do przodu i do tyłu są serią operacji macierzowych.
Pamiętajmy teraz, że istnieje wiele zoptymalizowanych operatorów do zastosowania w rzadkich macierzach, dlatego optymalizacja tych operacji w naszej sieci może radykalnie poprawić wydajność algorytmu.
Mam nadzieję, że to może pomóc niektórym z was ...
źródło
Główną korzyścią jest to, że pochodna ReLu wynosi 0 lub 1, więc pomnożenie przez nią nie spowoduje, że wagi, które są dalej od końcowego wyniku funkcji straty, będą cierpieć z powodu problemu znikającego gradientu:
źródło