Sieci neuronowe od podstaw do nowoczesnej AI · Backpropagation — jak sieć się uczy
Inicjalizacja wag: Xavier i He — jak start decyduje o gradient flow
Backpropagation — jak sieć się uczy
Wprowadzenie
Przed batch-normem i przed ResNetami nauka głębokich sieci stała na włosie z jednego prostego powodu: zła inicjalizacja wag prowadzi do tego że aktywacje albo eksplodują albo vanish-ują z każdą warstwą, a gradient idzie w drugą stronę z tym samym efektem. Glorot i Bengio (2010) pokazali że dla aktywacji symetrycznych jak tanh wagi powinny mieć wariancję 2/(fan_in + fan_out) — to jest "Xavier init". He et al. (2015) dla ReLU dostosowali wzór do 2/fan_in — bo ReLU "zabija" połowę aktywacji, więc wariancja musi być dwa razy większa żeby zachować skalę. Ta lekcja przechodzi przez derivację: dlaczego Var(Wx) = fan_in * Var(W) * Var(x) i jak ten produkt narasta przez warstwy; jak Karpathy w "makemore part 3" diagnozuje dead ReLU przez histogram aktywacji; co dokładnie robi torch.nn.init.kaiming_normal_ vs uniform_; jak inicjalizacja interaguje z normalizacją (BatchNorm, LayerNorm) i czemu dziś dla transformerów kluczowy jest "init-scale" w residual streamie. Pokażemy też dlaczego inicjalizacja zerami nie działa (symmetry breaking), inicjalizacja zbyt dużymi wagami daje saturację tanh/sigmoid, a inicjalizacja zbyt małymi wagami daje całkowity collapse gradientu w głębokich sieciach.