Dlaczego inicjowanie wag zerami jest niebezpieczne? Czy jest jakiś prosty przykład, który to pokazuje?
Dlaczego inicjowanie wag zerami jest niebezpieczne? Czy jest jakiś prosty przykład, który to pokazuje?
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.
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.
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ć.
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
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.
To zły pomysł z dwóch powodów:
Pokażmy to (dla uproszczenia zakładam końcową warstwę wyjściową 1 neuronu):
, gdzie L oznacza ostatnią warstwę), która zależy od końcowego wejścia przed aktywacją (), which depends on the weights of the final layer (). Now we want to find:
Point 2 can be shown from the fact that will be equal to zero's. Hence your vector will be full of zeros, and no learning can be achieved.