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. 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 init

Eksempel 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).

Kilder

1