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ć.
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.
∂L∂x(i)jΔ(i)j
Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).
ni=ni+1
Var(w(i))=2ni+ni+1.
N(0,σ)σ=2ni+ni+1−−−−−√U(−a,a)a=6ni+ni+1−−−−−√Var(U(−a,a))=a2/3
tanhReLUf(s)=ReLU(s)
Var(w(i))=2ni.