Dlaczego inicjowanie wag zerami jest niebezpieczne? Czy jest jakiś prosty przykład, który to pokazuje?
neural-networks
backpropagation
użytkownik8078
źródło
źródło
Odpowiedzi:
edycja patrz komentarz alfa poniżej. Nie jestem ekspertem od sieci neuronowych, więc poddam się mu.
Moje rozumienie różni się od innych odpowiedzi tutaj zamieszczonych.
Jestem prawie pewien, że propagacja wsteczna obejmuje dodawanie do istniejących wag, a nie mnożenie. Dodawaną kwotę określa reguła delta . Zauważ, że wij nie pojawia się po prawej stronie równania.
Rozumiem, że istnieją co najmniej dwa dobre powody, aby nie ustawiać początkowych wag na zero:
Po pierwsze, sieci neuronowe mają tendencję do utknięcia w lokalnych minimach, więc dobrym pomysłem jest nadanie im wielu różnych wartości początkowych. Nie możesz tego zrobić, jeśli wszystkie zaczynają się od zera.
Po drugie, jeśli neurony zaczynają z tą samą wagą, wówczas wszystkie neurony będą podążać tym samym gradientem i zawsze będą robić to samo.
źródło
Jeśli pomyślałeś o wagach jako o wartościach priorytetowych, jak w sieci bayesowskiej, to wykluczyłeś jakąkolwiek możliwość, że te dane wejściowe mogłyby wpłynąć na system. Innym wyjaśnieniem jest to, że propagacja wsteczna identyfikuje zestaw wag, który minimalizuje ważoną kwadratową różnicę między wartością docelową a obserwowaną (E). Jak w takim razie można zorientować dowolny algorytm spadku gradientu pod względem określania kierunku systemu? Stawiasz się w punkcie siodłowym przestrzeni parametrów.
źródło
W każdej iteracji algorytmu propagacji wstecznej zaktualizujesz wagi, mnożąc istniejącą wagę przez deltę określoną przez propagację wsteczną. Jeśli początkowa wartość masy wynosi 0, pomnożenie jej przez dowolną wartość delty nie zmieni masy, co oznacza, że każda iteracja nie ma wpływu na masy, które próbujesz zoptymalizować.
źródło
Wydaje mi się, że jednym z powodów, dla których źle jest inicjować wagi na te same wartości (nie tylko zero), jest to, że dla każdej konkretnej ukrytej warstwy wszystkie węzły w tej warstwie miałyby dokładnie takie same dane wejściowe i dlatego pozostałyby takie same inny.
źródło
Odpowiedź na to pytanie nie jest całkowicie „Minima / maksima lokalne”.
Jeśli masz więcej niż 1 ukrytą warstwę, a każda waga jest zerowa, bez względu na to, jak duża / mała zmiana w Weight_i nie spowoduje zmiany Wyjścia.
Wynika to z faktu, że delta Weight_i zostanie pochłonięta przez następną ukrytą warstwę.
Gdy nie ma zmian w Wyjściu, nie ma gradientu, a zatem nie ma kierunku.
Ma to te same cechy, co lokalne minima / maksima, ale tak naprawdę wynika z zer, które są technicznie różne
źródło
Główny problem z inicjalizacją wszystkich wag do zera matematycznie prowadzi do tego, że albo wartości neuronu wynoszą zero (dla wielu warstw), albo delta wynosiłoby zero. W jednym z komentarzy @alfa w powyższych odpowiedziach podano już podpowiedź, wspomniano, że iloczyn wag i delta musi wynosić zero. Oznaczałoby to w istocie, że przy zejściu gradientowym znajduje się on na szczycie wzgórza tuż przy szczycie i nie jest w stanie przełamać symetrii. Losowość przełamie tę symetrię i osiągnie lokalne minimum. Nawet jeśli trochę zaburzymy ciężar (y), bylibyśmy na torze. Odniesienie: Uczenie się na podstawie danych Wykład 10.
źródło
To zły pomysł z dwóch powodów:
Pokażmy to (dla uproszczenia zakładam końcową warstwę wyjściową 1 neuronu):
Point 2 can be shown from the fact thataL−1 will be equal to zero's. Hence your dWL vector will be full of zeros, and no learning can be achieved.
źródło