Xavier initialization
Xavier-initiering er en metode til at initialisere vægtene i et neuralt netværk, så variansen af output fra hvert lag bevares, hvilket forhindrer gradienter i at forsvinde eller eksplodere.
Kort fortalt
Kort fortalt: En teknik til at sætte startværdier for vægte i et neuralt netværk, så signalet hverken bliver for svagt eller for stærkt gennem lagene.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
En initialiseringsstrategi for vægte i neurale netværk, der tager højde for både antallet af input- og output-neuroner i et lag for at holde signalkomponenternes varians konstant på tværs af lag.
- I implementeringen af et feedforward-netværk anvendte vi Xavier-initiering for at undgå at gradienterne døde i de dybe lag.
- Xavier-initiering er særlig effektiv sammen med tanh-aktivering, men mindre egnet til ReLU, hvor He-initiering ofte foretrækkes. — Glorot & Bengio, 2010
Hvornår bruges det
Xavier-initiering bruges især ved træning af flerlagede neurale netværk med sigmoid- eller tanh-aktiveringsfunktioner. Den vælger tilfældige vægte fra en uniform eller normal fordeling med varians 1/n, hvor n er antallet af input-neuroner i laget. Metoden er et standardvalg for mange dybe netværk.
Formel
Uniform: W ~ U[-√(6/(n_in + n_out)), √(6/(n_in + n_out))]
Normal: W ~ N(0, √(2/(n_in + n_out)))Kodeeksempel
import torch.nn as nn
layer = nn.Linear(128, 64)
nn.init.xavier_uniform_(layer.weight)
nn.init.zeros_(layer.bias) # typical bias initEksempel på Xavier uniform initiering af en lineær lags vægte i PyTorch, med bias sat til nul.
Oprindelse
Opkaldt efter Xavier Glorot, der sammen med Yoshua Bengio præsenterede metoden i deres artikel 'Understanding the difficulty of training deep feedforward neural networks' (2010).