Podczas inicjowania wag połączeń w sieci neuronowej ze sprzężeniem zwrotnym ważne jest, aby inicjować je losowo, aby uniknąć symetrii, których algorytm uczenia się nie byłby w stanie złamać.
Zalecenie, które widziałem w różnych miejscach (np. W samouczku MNIST firmy TensorFlow ), to stosowanie skróconego rozkładu normalnego przy użyciu standardowego odchylenia , gdzie jest liczbą danych wejściowych do podana warstwa neuronu. N
Uważam, że standardowa formuła odchylenia zapewnia, że gradienty propagowane wstecz nie rozpuszczają się ani nie wzmacniają zbyt szybko. Ale nie wiem, dlaczego używamy skróconego rozkładu normalnego, a nie zwykłego rozkładu normalnego. Czy ma to na celu uniknięcie rzadkich obciążeń odstających?
Odpowiedzi:
Myślę, że chodzi o nasycenie neuronów. Pomyśl o swojej funkcji aktywacyjnej, takiej jak sigmoid.
Jeśli twoja wartość val osiągnie wartość> = 2 lub <= - 2, twój neuron się nie nauczy. Tak więc, jeśli obetniesz swoją normalną dystrybucję, nie będziesz mieć tego problemu (przynajmniej od inicjalizacji) w oparciu o swoją wariancję. Myślę, że właśnie dlatego lepiej jest używać ogólnie okrojonej normalnej.
źródło
Korzyścią ze stosowania skróconego rozkładu normalnego jest zapobieganie generowaniu „martwych neuronów” z powodu użycia relu_logits , co wyjaśniono tutaj .
źródło