JAK: Inicjalizacja wagi głębokiej sieci neuronowej


10

Biorąc pod uwagę trudne zadanie uczenia się (np. Wysoką wymiarowość, naturalną złożoność danych), głębokie sieci neuronowe stają się trudne do wyszkolenia. Aby złagodzić wiele problemów, można:

  1. Normalizuj dane && handpick jakości
  2. wybierz inny algorytm treningowy (np. RMSprop zamiast Gradient Descent)
  3. wybierz bardziej stromy gradient funkcji kosztu (np. Cross Entropy zamiast MSE)
  4. Użyj innej struktury sieci (np. Warstw konwolucji zamiast Feedforward)

Słyszałem, że istnieją sprytne sposoby inicjowania lepszych wag. Na przykład możesz wybrać wielkość lepiej: Glorot i Bengio (2010)

  • dla jednostek sigmoidalnych: próbkuj Uniform (-r, r) za pomocąr=6Nin+Nout
  • lub hiperboliczne styczne jednostki: próbka munduru (-r, r) zr=46Nin+Nout

Czy istnieje jakiś spójny sposób na lepszą inicjalizację wag?

Odpowiedzi:


7

O ile wiem, dwie podane formuły są w zasadzie standardową inicjalizacją. I uczynił Przegląd literatury jakiś czas temu, skopiowałem go poniżej, jeśli zainteresowany.


[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ć do zera, 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 jednostek sigmoidalnych: przykład Uniforma (-r, r) z (fan-in to liczba wejścia urządzenia).r=6fan-in+fan-out
    • dla hiperbolicznych jednostek stycznych: próbkuj Uniform (-r, r) za pomocą (fan-in to liczba wejść urządzenia).r=46fan-in+fan-out
  • w przypadku KMS, zero-średnia Gaussa z małym odchyleniem standardowym około 0,1 lub 0,01 działa dobrze (Hinton, 2010) do inicjalizacji wag.
  • Ortogonalna inicjalizacja losowa 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.


2
Coś, co wydaje się brakować, to Normalizacja partii. Opisane tutaj: arxiv.org/abs/1502.03167 Może być przydatne.
Joonatan Samuel

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun opublikowali nowszy artykuł, który zawiera odmianę inicjalizacji wagi Xaviera od Glorot i Bengio: „Zagłębiając się w prostowniki: przewyższające wydajność na poziomie ludzkim w klasyfikacji ImageNet” .
mjul
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.