Próbuję zbudować sieć neuronową od podstaw. W całej literaturze dotyczącej sztucznej inteligencji panuje zgoda co do tego, że wagi powinny być inicjowane na liczbach losowych, aby sieć mogła szybciej się zbiegać.
Ale dlaczego początkowe wagi sieci neuronowych są inicjalizowane jako liczby losowe?
Czytałem gdzieś, że ma to na celu „złamanie symetrii”, a to sprawia, że sieć neuronowa uczy się szybciej. W jaki sposób złamanie symetrii sprawia, że uczy się szybciej?
Czy inicjalizacja wag na 0 nie byłaby lepszym pomysłem? W ten sposób wagi byłyby w stanie szybciej znaleźć swoje wartości (dodatnie lub ujemne)?
Czy za randomizacją wag stoi jakaś inna filozofia, poza nadzieją, że po zainicjowaniu będą one zbliżone do swoich optymalnych wartości?
machine-learning
neural-network
artificial-intelligence
mathematical-optimization
gradient-descent
Shayan RC
źródło
źródło
Odpowiedzi:
Przełamanie symetrii jest tutaj kluczowe, a nie ze względu na wydajność. Wyobraź sobie pierwsze 2 warstwy wielowarstwowego perceptronu (warstwy wejściowe i ukryte):
Podczas propagacji do przodu każda jednostka w warstwie ukrytej otrzymuje sygnał:
Oznacza to, że każda ukryta jednostka otrzymuje sumę wejść pomnożoną przez odpowiednią wagę.
Teraz wyobraź sobie, że inicjalizujesz wszystkie wagi na tę samą wartość (np. Zero lub jeden). W tym przypadku każda ukryta jednostka otrzyma dokładnie ten sam sygnał . Np. Jeśli wszystkie wagi są inicjalizowane na 1, każda jednostka otrzymuje sygnał równy sumie wejść (i wyjść
sigmoid(sum(inputs))
). Jeśli wszystkie wagi są zerami, co jest jeszcze gorsze, każda ukryta jednostka otrzyma sygnał zerowy. Bez względu na dane wejściowe - jeśli wszystkie wagi są takie same, wszystkie jednostki w warstwie ukrytej również będą takie same .To jest główny problem z symetrią i powód, dla którego powinieneś inicjować wagi losowo (lub przynajmniej z różnymi wartościami). Należy zauważyć, że ten problem dotyczy wszystkich architektur, które używają połączeń typu każdy z każdym.
źródło
symmetry
niecorrelation
? Kto pierwszy użył tego słowa?Analogia:
Mam nadzieję, że to dobra analogia. Próbowałem to wyjaśnić tak prosto, jak to tylko możliwe.
Wyobraź sobie, że ktoś zrzucił cię z helikoptera na nieznany szczyt góry i jesteś tam uwięziony. Wszędzie jest mgła. Jedyne co wiesz to to, że powinieneś jakoś zejść na poziom morza. Który kierunek wybrać, aby zejść do najniższego możliwego punktu?
Gdybyś nie mógł znaleźć drogi na poziom morza, a helikopter zabrałby cię ponownie i zrzuciłby na to samo szczytowe miejsce. Musiałbyś ponownie obrać te same wskazówki, ponieważ „inicjalizujesz” się na tych samych pozycjach początkowych .
Jednak za każdym razem, gdy helikopter wyrzuca cię w dowolne miejsce na górze, obrałeś różne kierunki i kroki. Więc byłaby większa szansa, że dotrzesz do najniższego możliwego punktu.
To właśnie oznacza złamanie symetrii . Inicjalizacja jest asymetryczna ( co jest różne ), więc można znaleźć różne rozwiązania tego samego problemu.
W tej analogii, gdzie lądujesz, są wagi . Tak więc przy różnych wagach istnieje większa szansa na dotarcie do najniższego ( lub niższego ) punktu.
Zwiększa również entropię w systemie, dzięki czemu system może tworzyć więcej informacji, które pomogą Ci znaleźć niższe punkty ( minimum lokalne lub globalne ).
źródło
Odpowiedź jest dość prosta. Podstawowe algorytmy uczenia są z natury chciwe - nie znajdują globalnego optimum, a raczej „najbliższe” lokalne rozwiązanie. W rezultacie, zaczynając od dowolnej ustalonej inicjalizacji, Twoje rozwiązanie jest ukierunkowane na jeden określony zestaw wag. Jeśli zrobisz to losowo (i prawdopodobnie wiele razy), jest znacznie mniej prawdopodobne, że utkniesz w jakiejś dziwnej części powierzchni błędu.
Ten sam argument odnosi się do innych algorytmów, które nie są w stanie znaleźć optymalnego globalnego (k-średnie, EM itp.) I nie ma zastosowania do technik optymalizacji globalnej (jak algorytm SMO dla SVM).
źródło
Jak wspomniałeś, kluczową kwestią jest złamanie symetrii . Ponieważ jeśli zainicjujesz wszystkie wagi do zera, wtedy wszystkie ukryte neurony (jednostki) w twojej sieci neuronowej będą wykonywać dokładnie te same obliczenia. Nie jest to coś, czego pragniemy, ponieważ chcemy, aby różne ukryte jednostki obliczały różne funkcje. Jednak nie jest to możliwe, jeśli zainicjujesz wszystkie z tą samą wartością.
źródło
Jeśli zainicjujesz wszystkie wagi na zero, to wszystkie neurony wszystkich warstw wykonają te same obliczenia, dając ten sam wynik i czyniąc całą głęboką sieć bezużyteczną . Gdyby wagi były równe zero, złożoność całej głębokiej sieci byłaby taka sama, jak pojedynczego neuronu, a przewidywania nie byłyby niczym lepszym niż przypadkowe.
Węzły, które znajdują się obok siebie w ukrytej warstwie połączonej z tymi samymi danymi wejściowymi, muszą mieć różne wagi, aby algorytm uczący się zaktualizował wagi.
Ustawiając wagi na niezerowe (ale bliskie 0, np. 0,1 itd.), Algorytm nauczy się wag w następnych iteracjach i nie utknie. W ten sposób następuje złamanie symetrii.
Algorytmy optymalizacji stochastycznej, takie jak stochastyczne zstępowanie w gradiencie, wykorzystują losowość przy wyborze punktu początkowego wyszukiwania oraz w przebiegu wyszukiwania.
Postęp wyszukiwania lub uczenia się sieci neuronowej jest znany jako konwergencja. Odkrycie nieoptymalnego rozwiązania lub lokalnych optymalnych parametrów skutkuje przedwczesną konwergencją.
Zamiast polegać na jednej lokalnej optimie, jeśli uruchamiasz swój algorytm wiele razy z różnymi losowymi wagami, istnieje najlepsza możliwość znalezienia globalnej optimy bez utknięcia w lokalnej optimie.
Po 2015 roku, ze względu na postęp w badaniach nad uczeniem maszynowym, He-et-al Initializatio n zostaje wprowadzony, aby zastąpić losową inicjalizację
Wagi są nadal losowe, ale różnią się zakresem w zależności od wielkości poprzedniej warstwy neuronów.
Podsumowując, niezerowe losowe wagi nam pomagają
źródło
Oprócz inicjalizacji z losowymi wartościami, początkowe wagi nie powinny zaczynać się od dużych wartości. Dzieje się tak, ponieważ często używamy funkcji tanh i sigmoid w warstwach ukrytych i warstwach wyjściowych. Jeśli spojrzysz na wykresy dwóch funkcji, po propagacji do przodu w pierwszej iteracji uzyskasz wyższe wartości, a te wartości odpowiadają miejscom w funkcjach sigmoidalnych i tanh, które zbiegają pochodną do zera. Prowadzi to do zimnego początku procesu uczenia się i wydłużenia czasu nauki. W rezultacie, jeśli uruchomisz wagi losowo, możesz uniknąć tych problemów, mnożąc te wartości przez wartości, takie jak „0,01” lub „0,001”.
źródło
Po pierwsze, niektóre algorytmy są zbieżne nawet przy zerowej wartości początkowej. Prostym przykładem jest liniowa sieć perceptronów. Oczywiście wiele sieci edukacyjnych wymaga losowego ważenia początkowego (chociaż nie gwarantuje to uzyskania najszybszej i najlepszej odpowiedzi).
Sieci neuronowe wykorzystują propagację wsteczną do uczenia się i aktualizowania wag, a problem polega na tym, że w tej metodzie wagi są zbieżne do lokalnego optymalnego (lokalny minimalny koszt / strata), a nie do optymalnego globalnego.
Losowe ważenie pomaga sieci wykorzystać szanse w każdym kierunku w dostępnej przestrzeni i stopniowo je poprawiać, aby uzyskać lepszą odpowiedź, a nie ograniczać się do jednego kierunku lub odpowiedzi.
[Poniższy rysunek przedstawia jednowymiarowy przykład konwergencji. Biorąc pod uwagę lokalizację początkową, uzyskuje się optymalizację lokalną, ale nie optymalizację globalną. Przy wyższych wymiarach losowe ważenie może zwiększyć szanse znalezienia się we właściwym miejscu lub lepszego rozpoczęcia, co skutkuje zbieżnością wag do lepszych wartości.] [1]
[1]: https://i.stack.imgur.com/2dioT.png [Kalhor, A. (2020). Klasyfikacja i regresja NN. Wykład.]
W najprostszym przypadku nowa waga wygląda następująco:
Tutaj gradient funkcji kosztu jest dodawany do poprzedniej wagi, aby uzyskać nową wagę. Jeśli wszystkie poprzednie wagi są takie same, w następnym kroku wszystkie wagi mogą być równe. W rezultacie w tym przypadku, z geometrycznego punktu widzenia, sieć neuronowa jest nachylona w jednym kierunku i wszystkie wagi są takie same. Ale jeśli wagi są różne, można zaktualizować wagi o różne ilości. (w zależności od współczynnika wpływu, jaki każda waga ma na wynik, wpływa na koszt i aktualizację wag. Tak więc nawet mały błąd w początkowym losowym ważeniu można rozwiązać).
To był bardzo prosty przykład, ale pokazuje wpływ inicjalizacji losowego ważenia na uczenie się. Umożliwia to sieci neuronowej przechodzenie do różnych przestrzeni zamiast na jedną stronę. W rezultacie, w procesie uczenia się, idź do najlepszych z tych przestrzeni
źródło
Niech będzie bardziej matematycznie. Właściwie powodem, dla którego odpowiadam, jest to, że w innych odpowiedziach brakuje tego fragmentu. Załóżmy, że masz 2 warstwy. Jeśli spojrzymy na algorytm wstecznej propagacji, obliczenie
dZ2 = A2 - Y
dW2 = (1 / m) * dZ2 * A2.T
Zignorujmy db2. (Przepraszam, nie przepraszam;))
dZ1 = W2.T * dZ2. * g1 '(Z1)
...
Problem, który widzisz, jest pogrubiony. Obliczenie dZ1 (które jest wymagane do obliczenia dW1) ma w sobie W2, które wynosi 0. Nigdy nie mieliśmy szansy zmienić wag na cokolwiek poza 0 i nigdy tego nie zrobimy. Zasadniczo więc sieć neuronowa niczego się nie uczy. Myślę, że jest gorszy niż regresja logistyczna (pojedyncza jednostka). W przypadku regresji logistycznej uczysz się z większą liczbą iteracji, ponieważ dzięki X otrzymujesz różne dane wejściowe. W tym przypadku inne warstwy zawsze dają te same wyniki, więc w ogóle się nie uczysz.
źródło
Nauczyłem się jednej rzeczy: jeśli zainicjujesz wagę do zera, jest oczywiste, że jednostki aktywacji w tej samej warstwie będą takie same, co oznacza, że będą miały te same wartości. Kiedy cofniesz się, zauważysz, że wszystkie wiersze gradientu dW są również takie same, stąd wszystkie wiersze macierzy wag W są takie same po aktualizacji gradientu zstępującego. Ogólnie rzecz biorąc, inicjalizacja wszystkich wag do zera powoduje, że sieć nie może złamać symetrii. Oznacza to, że każdy neuron w każdej warstwie nauczy się tego samego i równie dobrze możesz trenować sieć neuronową
n[l]=1n[l]=1
dla każdej warstwy, a sieć nie jest silniejsza niż klasyfikator liniowy, taki jak regresja logistyczna. Kurs Andrew Ng:źródło