Qual è il vantaggio della distribuzione normale troncata nell'inizializzazione dei pesi in una rete neurale?


13

Quando si inizializzano i pesi di connessione in una rete neurale feedforward, è importante inizializzarli in modo casuale per evitare simmetrie che l'algoritmo di apprendimento non sarebbe in grado di rompere.

La raccomandazione che ho visto in vari punti (ad es. Nel tutorial MNIST di TensorFlow ) è di usare la distribuzione normale troncata usando una deviazione standard di , doveNè il numero di input per il dato strato di neuroni.1NN

Credo che la formula della deviazione standard assicuri che i gradienti retropropagati non si dissolvano o si amplificino troppo rapidamente. Ma non so perché stiamo usando una distribuzione normale troncata invece di una normale distribuzione normale. È per evitare rari pesi anomali?


Potete fornire la fonte di questa raccomandazione e / o l'offerta diretta?
Tim

+ Tim Buono punto, ho aggiunto un link ad un esempio. Credo di aver visto anche questa raccomandazione in un documento sulle buone pratiche della rete neurale (non riesco a trovarla, però).
MiniQuark

Risposte:


13

Penso che si tratti di saturazione dei neuroni. Pensa di avere una funzione di attivazione come sigmoid.

inserisci qui la descrizione dell'immagine

Se il tuo peso val ottiene un valore> = 2 o <= - 2, il tuo neurone non imparerà. Quindi, se tronchi la tua normale distribuzione non avrai questo problema (almeno dall'inizializzazione) in base alla tua varianza. Penso che sia per questo, è meglio usare la tronca normale in generale.


Sì, ha senso, grazie. Penso che volevi dire "valore> = 2", non 1.
MiniQuark

sì, supponiamo che sia valore> = 2
Güngör Basa

4

Il vantaggio dell'utilizzo della distribuzione normale troncata è di impedire la generazione di "neuroni morti" a causa dell'utilizzo di relu_logits , che viene spiegato qui .

Si dovrebbe generalmente inizializzare i pesi con una piccola quantità di rumore per la rottura della simmetria e per evitare 0 gradienti. Dato che stiamo usando i neuroni ReLU, è anche buona norma inizializzarli con una propensione iniziale leggermente positiva per evitare "neuroni morti".


Non sono sicuro di come l'uso di truncated_normal impedirà i neuroni morti: non aggiungerà alcun "pregiudizio iniziale leggermente positivo". Puoi per favore elaborare?
MiniQuark

1
perché la backpropagazione aggiornerà solo i neuroni "vivi", con un contributo diverso da zero alla propagazione
Jason,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.