Jakie są dobre masy początkowe w sieci neuronowej?

68

Właśnie usłyszałem, że dobrym pomysłem jest wybór początkowych wag sieci neuronowej z zakresu , gdzie jest liczba wejść do danego neuronu. Zakłada się, że zbiory są znormalizowane - średnia 0, wariancja 1 (nie wiem, czy to ma znaczenie).d(1d,1d)d

Dlaczego to dobry pomysł?

elmes
źródło
Zobacz moją pracę magisterską, strona 81, aby zapoznać się z technikami inicjalizacji.
Martin Thoma,

Odpowiedzi:

47

Zakładam, że używasz neuronów logistycznych i trenujesz metodą gradientu opadania / propagacji wstecznej.

Funkcja logistyczna jest zbliżona do płaskiej dla dużych dodatnich lub ujemnych danych wejściowych. Pochodna na wejściu wynosi około , ale przy pochodna wynosi około . Oznacza to, że jeśli wejście neuronu logistycznego wynosi , to dla danego sygnału treningowego neuron nauczy się około razy wolniej niż gdyby sygnał wejściowy wynosił .1 / 10 10 1 / 22000 10 2200 221/10101/220001022002

Jeśli chcesz, aby neuron szybko się uczył, musisz albo wytworzyć ogromny sygnał treningowy (na przykład z funkcją utraty entropii krzyżowej), albo chcesz, aby pochodna była duża. Aby pochodna była duża, ustawia się początkowe wagi, aby często uzyskiwać dane wejściowe w zakresie .[4,4]

Podane początkowe wagi mogą, ale nie muszą działać. To zależy od sposobu znormalizowania danych wejściowych. Jeśli dane wejściowe są znormalizowane w celu uzyskania średniej i odchylenia standardowego , to losowa suma terminów z wagami jednolitymi na będzie miał średnią i wariancję , niezależnie od . Prawdopodobieństwo otrzymania sumy poza jest niewielkie. Oznacza to, że gdy zwiększasz , nie powoduje to, że neurony zaczynają się nasycać, aby się nie nauczyły.1 d ( - 101d01(1d,1d)0 d[-4,4]d13d[4,4]d

W przypadku danych wejściowych, które nie są znormalizowane, wagi te mogą nie być skuteczne w unikaniu nasycenia.

Douglas Zare
źródło
1
Zasadniczo zawsze należy przynajmniej rozważyć normalizację danych. Teraz ma to sens. Czy możesz wyjaśnić, dlaczego odchylenie standardowe będzie wynosić 1/3 i jak małe jest prawdopodobieństwo sumy wejściowej poza zakresem <-4,4>?
elmes
1
Istnieją pewne podstawowe właściwości wariancji, które implikują to: Jeśli i są niezależne, to i jeśli i są niezależne i mają średnią , a następnie . Y Var ( X + Y ) = Var ( X ) + Var ( Y ) X Y 0 Var ( X Y ) = Var ( X ) Var ( Y )XYVar(X+Y)=Var(X)+Var(Y)XY0Var(XY)=Var(X)Var(Y)
Douglas Zare
1
Można oszacować prawdopodobieństwo, że zmienna losowa jest oddalona o co najmniej standardowych odchyleń od średniej, używając nierówności Czebyszewa. W praktyce nie jest to ostre, ale dokładny wynik zależy od rozkładu. 12
Douglas Zare
Nawiasem mówiąc, przeliczyłem się. Wariancja to więc standardowe odchylenie to . 1313
Douglas Zare
1
„Funkcja logistyczna jest bliska zeru dla dużych dodatnich lub ujemnych danych wejściowych. Pochodna na wejściu ...” Czy dany podmiot nie powinien być pochodną funkcji kosztu regresji logistycznej? Kiedy dane wejściowe do pochodnej funkcji kosztu są już skalowane przez funkcję logistyczną do (0,1) niezależnie od wielkości wag i sygnałów?
Moobie
28

[1] odpowiada na pytanie:

Po pierwsze, wagi nie powinny być ustawione na zera, aby złamać symetrię podczas wstecznego propagowania:

Białości można ogólnie inicjalizować na zero, ale wagi należy inicjować ostrożnie, aby przełamać symetrię między ukrytymi jednostkami tej samej warstwy. Ponieważ różne jednostki wyjściowe odbierają różne sygnały gradientu, ten problem łamania symetrii nie dotyczy wag wyjściowych (w jednostkach wyjściowych), które w związku z tym można również ustawić na zero.

Niektóre strategie inicjalizacji:

  • [2] i [3] zalecają skalowanie przez odwrotność pierwiastka kwadratowego wachlarza
  • Glorot i Bengio (2010) oraz samouczki Deep Learning wykorzystują kombinację włączania i wyłączania wentylatora:
    • dla hiperbolicznych jednostek stycznych: próbkuj Uniform (-r, r) za pomocą (fan-in to liczba wejść urządzenia).r=6fan-in+fan-out
    • dla jednostek sigmoidalnych: próbka Uniform (-r, r) z (fan-in to liczba wejść urządzenia).r=46fan-in+fan-out
  • w przypadku KMS, zerowa średnia gaussowska z niewielkim odchyleniem standardowym około 0,1 lub 0,01 działa dobrze (Hinton, 2010) w celu inicjalizacji wag.
  • Ortogonalna losowa inicjalizacja macierzy, tj. W = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W)Następnie użycie ujako macierzy inicjalizacji.

Ponadto, w niektórych sytuacjach pomocne może być bezobsługowe szkolenie wstępne:

Ważnym wyborem jest to, czy w celu zainicjowania parametrów należy zastosować bezobsługowy trening wstępny (i który algorytm uczenia się funkcji bez nadzoru należy użyć). W większości ustawień znaleźliśmy bez nadzoru trening wstępny, który pomaga i bardzo rzadko boli, ale oczywiście oznacza to dodatkowy czas treningu i dodatkowe hiper-parametry.

Niektóre biblioteki ANN mają również kilka interesujących list, np. Lasagne :

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1] Bengio, Joshua. „ Praktyczne zalecenia dotyczące gradientowego szkolenia głębokich architektur. ” Sieci neuronowe: Triki handlu. Springer Berlin Heidelberg, 2012. 437-478.

[2] LeCun, Y., Bottou, L., Orr, GB, i Muller, K. (1998a). Wydajny backprop. W sieciach neuronowych Tricks of the Trade .

[3] Glorot, Xavier i Yoshua Bengio. „ Zrozumienie trudności szkolenia głębokich sieci neuronowych ze sprzężeniem zwrotnym ”. Międzynarodowa konferencja na temat sztucznej inteligencji i statystyki. 2010 r.

Franck Dernoncourt
źródło
2
Chciałbym dodać dwa przydatne odniesienia: 1) Zagłębić się w prostowniki: przewyższające wydajność na poziomie ludzkim w klasyfikacji ImageNet - o znaczeniu skalowania uwzględniającego aktywację arxiv.org/abs/1502.01852 2) Dokładne rozwiązania nieliniowej dynamiki uczenie się w głębokich liniowych sieciach neuronowych arxiv.org/abs/1312.6120 - matryce ortonormalne są znacznie lepsze niż tylko szum Gaussa
old-ufo
1
Redaktor sugeruje, że inicjowanie sigmoidu i styczna hiperboliczna powinny zostać przełączone, aby pasowały do ​​oryginalnego papieru.
gung
2
Chcesz zachować tę edycję, Frank? Jeśli nie, możesz go wycofać.
gung
Coś mi brakuje. Gdzie w artykule Glorot i Bengio (2010) powiedziano, że zaleca się stosowanie 4-krotności wartości równania 16 podczas korzystania z funkcji aktywacji logistycznej sigmoidu? Równanie 16 wynika z zastosowania równania 12 i wariancji rozkładu równomiernego, ale równanie 16 wyprowadza się przy założeniu symetrycznej aktywacji z pochodną jednostkową na 0. Zatem np. Funkcja aktywacji tanh, ale nie funkcja aktywacji logistycznej (niesymetryczna). Co więcej, nawet nie testują tej proponowanej inicjalizacji za pomocą logistycznej sigmoidu; testują to tylko z tanh i softsign.
Tommy L
10

<xi>=0
<xi2>=1

Pytanie brzmi: jak najlepiej wybrać odważniki ?. Chodzi o to, aby losowo wybierać wartości wag po rozkładzie, który pomaga procesowi optymalizacji zbliżyć się do sensownego rozwiązania.

y=g(a)
a=i=0dwixi
<a>=i=0d<wixi>=i=0d<wi><xi>=0
<a2>=(i=0dwixi)(i=0dwixi)=i=0d<wi2><xi2>=σ2d
<wiwj>=δij
juampa
źródło
<xi2>=10
σααα
Jest to szczególnie prawdziwe w przypadku głębokich sieci neuronowych, w których jednostki szybko nasycają się podczas dodawania warstw. Istnieje wiele artykułów na ten temat. Dobrym punktem wyjścia może być: „Zrozumienie trudności szkolenia głębokich sieci neuronowych z wyprzedzeniem” przez glorot i bengio
jpmuc
10

Cóż, jako aktualizacja, zagłębiając się w prostowniki: przekraczając wydajność na poziomie ludzkim n Klasyfikacja ImageNet przez He i in. Wprowadziła inicjalizację konkretnie z inicjalizacją, w = U([0,n]) * sqrt(2.0/n)gdzie njest liczba danych wejściowych Twojej NN. Widziałem tę inicjalizację w wielu najnowszych pracach (także w ReLU). W rzeczywistości pokazują, w jaki sposób zaczyna to obniżać wskaźnik błędów znacznie szybciej niż (-1 / n, 1 / n), o których wspomniałeś. Aby uzyskać dokładne wyjaśnienie, zobacz artykuł, ale oto, jak szybko się zbiega: Zbieżność 22-warstwowego dużego modelu

Ambodi
źródło
Łał! Znacząca poprawa dla mnie.
Thomas W
Jednak nie dla dużej liczby danych wejściowych ... nie działa z MNIST.
Thomas W
Zauważ, że inicjalizacja He jest specjalnie zaprojektowana dla (P) ReLU i uwzględnia fakt, że nie jest symetryczna (co jest jednym z założeń inicjalizacji Xaviera). Nie daj się zwieść temu wykresowi poza kontekstem!
Pan Tsjolder
5

Chodzi o to, że chcesz zainicjować wagi w sposób zapewniający dobry przepływ danych do przodu i do tyłu przez sieć. Oznacza to, że nie chcesz, aby aktywacje stale się zmniejszały lub zwiększały w miarę postępów w sieci.

Ten obraz pokazuje aktywacje 5-warstwowego wielowarstwowego perceptronu ReLU w ramach 3 różnych strategii inicjalizacji po jednym przejściu MNIST przez sieć.

Aktywacje w ReLU MLP z różnymi strategiami inicjalizacji

We wszystkich trzech przypadkach wagi są pobierane z rozkładu normalnego wyśrodkowanego na zero, który jest określony przez jego odchylenie standardowe. Widać, że jeśli początkowe ciężary są zbyt małe (odchylenie standardowe jest małe), aktywacje zostają uduszone, a jeśli są zbyt duże, aktywacje wybuchają. Średnią wartość, która jest w przybliżeniu prawidłowa, można znaleźć, ustawiając wagi tak, aby wariancja aktywacji i aktualizacji gradientu pozostała w przybliżeniu taka sama, jak w sieci.

Napisałem wpis na blogu o inicjalizacji wagi, który jest bardziej szczegółowy, ale podstawowa idea jest następująca.

x(i)iniw(i)(i+1)ff(s)1

Var(x(i+1))=niVar(x(i))Var(w(i))

Var(x(i+1))=Var(x(i))

Var(w(i))=1ni.

Lxj(i)Δj(i)

Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).

ni=ni+1

Var(w(i))=2ni+ni+1.

N(0,σ)σ=2ni+ni+1U(a,a)a=6ni+ni+1Var(U(a,a))=a2/3

tanhReLUf(s)=ReLU(s)

Var(w(i))=2ni.
Andre P.
źródło
3

μB=1mi=1Mxi   and   σB2=1mi=1m(xiμB)2x^i=xiμBσB2+ϵ   and   BN(xi)=γx^i+β
xiBN(xi)x^iγβ

γβx^ixixix^iβγpodczas treningu. W ten sposób normalizacja partii stabilizuje uczenie się.

W rezultacie normalizacja partii umożliwia szybsze szkolenie dzięki wykorzystaniu znacznie wyższych wskaźników uczenia się i łagodzi problem złej inicjalizacji. BN umożliwia także stosowanie nieliniowości nasycania, zapobiegając utknięciu sieci w trybach nasycenia. Podsumowując, Normalizacja wsadowa to transformowalna zmienna, która wprowadza znormalizowane aktywacje do sieci. W praktyce warstwę BN można wstawić natychmiast po w pełni połączonej warstwie.

Vadim Smolyakov
źródło