Jaka jest korzyść z obciętego rozkładu normalnego przy inicjowaniu ciężarów w sieci neuronowej?


13

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

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?


Czy możesz podać źródło tej rekomendacji i / lub bezpośrednią ofertę?
Tim

+ Tim Dobra uwaga, dodałem link do przykładu. Wydaje mi się, że widziałem to zalecenie w artykule na temat dobrych praktyk w sieci neuronowej (chociaż nie mogę go znaleźć).
MiniQuark,

Odpowiedzi:


13

Myślę, że chodzi o nasycenie neuronów. Pomyśl o swojej funkcji aktywacyjnej, takiej jak sigmoid.

wprowadź opis zdjęcia tutaj

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.


Tak, to ma sens, dzięki. Myślę, że miałeś na myśli „wartość> = 2”, a nie 1.
MiniQuark

tak, przypuszczalnie ma to być wartość> = 2
Güngör Basa

4

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 .

Generalnie należy inicjować wagi z niewielką ilością hałasu w celu złamania symetrii i, aby zapobiec zerowym gradientom. Ponieważ używamy neuronów ReLU, dobrą praktyką jest również inicjowanie ich z nieznacznie dodatnim początkowym nastawieniem, aby uniknąć „martwych neuronów”.


Nie jestem pewien, w jaki sposób użycie parametru truncated_normal zapobiegnie martwym neuronom: nie doda „nieznacznie dodatniego początkowego odchylenia”. Czy możesz proszę opracować?
MiniQuark

1
ponieważ propagacja wsteczna zaktualizuje tylko „żywe” neurony, z pewnym niezerowym udziałem w propagacji
Jason
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.