Niebezpieczeństwo ustawienia wszystkich początkowych ciężarów na zero w propagacji wstecznej


30

Dlaczego inicjowanie wag zerami jest niebezpieczne? Czy jest jakiś prosty przykład, który to pokazuje?


Wygląda na to, że klasyczna sieć XOR 2-1 jest dobrym przykładem, ale doceniłbym trochę teoretycznego uzasadnienia.
user8078,

1
Bardzo ogólną odpowiedzią, która może, ale nie musi mieć zastosowania tutaj, jest to, że ilekroć nowe odważniki są wielokrotnością starych odważników, nie można zmienić odważników zerowych. To fatalne w nauce.
Nick Cox,

Dostępne są już dobre odpowiedzi, dlaczego nie zainicjować wag do zera. Poniższy link rzuca więcej światła na „jak wybrać początkowe wagi?” staff.itee.uq.edu.au/janetw/cmc/chapters/BackProp/index2.html Mam nadzieję, że pomoże to innym czytelnikom.
doer_uvc

@NickCox wagi tutaj są wielokrotnościami następnej warstwy wag, a ostatnia warstwa nie jest wielokrotnością innych wag - więc nie ma to zastosowania w tym przypadku.
David Refaeli

Odpowiedzi:


21

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.


6
„Kwota, którą dodajesz, jest określona przez regułę delta. Zauważ, że wij nie pojawia się po prawej stronie równania.” - Dotyczy to tylko sieci neuronowych bez ukrytych warstw! Wspomniałeś jednak o dwóch innych punktach, które są dobrym argumentem przeciwko zainicjowaniu ANN z jednakowymi wagami.
alfa

1
Myślę, że jest to przede wszystkim drugi powód - np. W podstawowej w pełni połączonej sieci feed-forward, jeśli każda warstwa jest inicjowana z tymi samymi wagami, to jak sugerujesz, wszystkie węzły podążają tą samą ścieżką i są redundantne. Mam wrażenie, że większość sieci z więcej niż kilkoma funkcjami nie będzie walczyć z lokalnymi minimami. Również sama losowa inicjalizacja nie zapobiega zablokowaniu się sieci, ale wielokrotne stosowanie różnych losowych inicjalizacji wskaże ci, czy dana iteracja miała problem z lokalnymi minimami (myślę, że było to sugerowane, ale nie jawne).
Tahlor

drugi powód jest fałszywy? open.wolframcloud.com/env/…
user3180

różne wejścia łamią symetrię ciężaru
3180

Państwo dodać pochodne oraz instrumenty pochodne są wykorzystywane przez mnożenie reguły łańcuchowej.
David Refaeli

7

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.


1
To najlepsza odpowiedź. To jest punkt siodłowy. Algorytmy optymalizacji oparte na propagacji wstecznej zwykle zatrzymują się natychmiast. Aby obliczyć gradient, mnożymy delty przez wagi, a wynik zawsze będzie wynosił zero.
alfa

Myślę, że to dobra odpowiedź, dlaczego żadna konkretna waga nie powinna być inicjowana na 0. Ale delty prawdopodobnie nadal będą się propagować z powrotem - wagi w warstwie wyjściowej nie zależą od wag, więc będziemy mieć tutaj niezerowe wagi po pierwszej aktualizacji. Po następnej aktualizacji te niezerowe wagi zostaną użyte z deltą do dostosowania wag poprzedniej warstwy i tak dalej. Myślę, że większym problemem przy inicjalizacji sieci ze wszystkimi zerami jest to, że wszystkie mają taką samą wagę, co w twojej podstawowej, w pełni połączonej sieci sprzężenia zwrotnego, odpowiada 1 węzłowi na warstwę.
Tahlor

6

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


2
> zaktualizujesz wagi, mnożąc istniejącą wagę przez wartość określoną przez propagację wsteczną - nie sądzę, to nie tylko mnożenie.
user8078,

1
Moja ogólna uwaga jest taka, że ​​jeśli początkowe wagi są równe zero, pozostaną na poziomie zerowym po każdej iteracji propagacji wstecznej.
Idr

„Wartość określona przez propagację wsteczną” to delta (patrz np. Oryginalny artykuł „Uczenie się reprezentacji przez błędy propagacji wstecznej”, równanie 7). Odpowiedź jest źle sformułowana, ale nie jest całkowicie błędna.
alfa

1
To tylko zła odpowiedź. Wagi się zmienią, ale zmienią się razem. Jest to złe, ponieważ wszystkie ukryte jednostki będą identyczne podczas szkolenia i nie będzie możliwości uczenia się.
Amin Sammara,

θ(0)=0.5

2

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.


1

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


0

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.


0

To zły pomysł z dwóch powodów:

  1. g(0)0

  2. tanhg(0)=0

Pokażmy to (dla uproszczenia zakładam końcową warstwę wyjściową 1 neuronu):

tanh

LzaL., gdzie L oznacza ostatnią warstwę), która zależy od końcowego wejścia przed aktywacją (zL=WLaL1), which depends on the weights of the final layer (WL). Now we want to find:

dWL:=LWL=LaLaLzLzLWL
La is the derivative of the cost function, az is the derivative of the activation function. Regardless of what their (Laaz) value is, zW simply equals to the previous layer outputs, i.e. to aL1, but since they are all the same, you get that the final result dWL is a vector with all element equal. So, when you'll update WL=WLαdWL it will move in the same direction. And the same goes for the previous layers.

Point 2 can be shown from the fact that aL1 will be equal to zero's. Hence your dWL vector will be full of zeros, and no learning can be achieved.

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.