Dlaczego inicjalizację wag i odchylenia należy wybrać w okolicach 0?


13

Przeczytałem to:

Aby wytrenować naszą sieć neuronową, zainicjujemy każdy parametr W (l) ijWij (l) i każdy b (l) ibi (l) do małej losowej wartości bliskiej zeru (powiedzmy zgodnie z Normalną (0, ϵ2) Normalną (0 , ϵ2) rozkład dla niektórych małych ϵϵ, powiedzmy 0,01)

z samouczków głębokiego uczenia się Stanforda w siódmym akapicie algorytmu propagacji wstecznej

Nie rozumiem, dlaczego inicjalizacja wagi lub odchylenia powinna wynosić około 0 ?

Odpowiedzi:


11

Zakładając dość rozsądną normalizację danych, oczekiwanie wag powinno być zerowe lub zbliżone do niego. Rozsądne może być zatem ustawienie wszystkich początkowych ciężarów na zero, ponieważ dodatnia początkowa waga będzie musiała pójść dalej, jeśli faktycznie będzie to ujemna waga i odwrotnie. To jednak nie działa. Jeśli wszystkie wagi są takie same, wszystkie będą miały ten sam błąd, a model niczego się nie nauczy - nie ma źródła asymetrii między neuronami.

Zamiast tego moglibyśmy utrzymać wagi bardzo blisko zera, ale odróżnić je, inicjując je do małych, niezerowych liczb. To sugeruje link do samouczka. Ma tę samą zaletę inicjalizacji zerowej, że jest zbliżona do wartości oczekiwanej „najlepszego odgadnięcia”, ale symetria została również złamana na tyle, aby algorytm działał.

To podejście ma dodatkowe problemy. Niekoniecznie jest prawdą, że mniejsze liczby będą działać lepiej, zwłaszcza jeśli sieć neuronowa jest głęboka. Gradienty obliczone w propagacji wstecznej są proporcjonalne do wag; bardzo małe ciężary prowadzą do bardzo małych gradientów i mogą powodować, że sieć zajmuje dużo, dużo dłużej szkolenie lub nigdy się nie kończy.

sqrt(d)d[1d,1d]


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.