COME: Inizializzazione del peso della rete neurale profonda


10

Dato il difficile compito di apprendimento (ad es. Alta dimensionalità, complessità intrinseca dei dati), le reti neurali profonde diventano difficili da addestrare. Per alleviare molti dei problemi si potrebbe:

  1. Normalizza && seleziona manualmente i dati di qualità
  2. scegliere un algoritmo di allenamento diverso (ad es. RMSprop invece di Discesa gradiente)
  3. scegliere una funzione di costo gradiente più ripida (ad esempio Cross Entropy anziché MSE)
  4. Utilizza una struttura di rete diversa (ad es. Livelli di convoluzione anziché Feedforward)

Ho sentito che ci sono modi intelligenti per inizializzare pesi migliori. Ad esempio puoi scegliere meglio la grandezza: Glorot e Bengio (2010)

  • per le unità sigmoide: campiona un'uniforme (-r, r) conr=6Nion+Nout
  • o unità tangenti iperboliche: campiona un'uniforme (-r, r) conr=46Nion+Nout

Esiste un modo coerente per inizializzare meglio i pesi?

Risposte:


7

Per quanto ne so, le due formule che hai dato sono praticamente l'inizializzazione standard. Avevo fatto una revisione della letteratura qualche tempo fa, l'ho copiata di seguito se interessata.


[1] risponde alla domanda:

In primo luogo, i pesi non dovrebbero essere impostati su zero per interrompere la simmetria durante la riprogrammazione:

I bias possono generalmente essere inizializzati a zero, ma i pesi devono essere inizializzati con cura per rompere la simmetria tra le unità nascoste dello stesso livello. Poiché unità di uscita diverse ricevono segnali di gradiente diversi, questo problema di rottura della simmetria non riguarda i pesi di uscita (nelle unità di uscita), che pertanto possono anche essere impostati su zero.

Alcune strategie di inizializzazione:

  • [2] e [3] raccomandano il ridimensionamento dall'inverso della radice quadrata del fan-in
  • Glorot e Bengio (2010) e i Deep Learning Tutorials usano una combinazione di fan-in e fan-out:
    • r=6fan-in+fan-out
    • r=46fan-in+fan-out
  • nel caso degli RBM, un gaussiano a media zero con una piccola deviazione standard intorno a 0,1 o 0,01 funziona bene (Hinton, 2010) per inizializzare i pesi.
  • Inizializzazione della matrice casuale ortogonale, ovvero W = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W)utilizzare ucome matrice di inizializzazione.

Inoltre, la pre-formazione senza supervisione può aiutare in alcune situazioni:

Una scelta importante è se si dovrebbe usare la pre-formazione senza supervisione (e quale algoritmo di apprendimento delle caratteristiche senza supervisione usare) per inizializzare i parametri. Nella maggior parte delle impostazioni abbiamo trovato un pre-allenamento senza supervisione per aiutare e molto raramente a far male, ma ovviamente ciò implica un tempo di allenamento aggiuntivo e ulteriori iperparametri.

Alcune biblioteche ANN hanno anche alcuni elenchi interessanti, ad esempio Lasagne :

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1] Bengio, Yoshua. " Consigli pratici per la formazione graduale di architetture profonde. " Reti neurali: trucchi del mestiere. Springer Berlin Heidelberg, 2012. 437-478.

[2] LeCun, Y., Bottou, L., Orr, GB e Muller, K. (1998a). Backprop efficiente. In Neural Networks, Tricks of the Trade .

[3] Glorot, Xavier e Yoshua Bengio. " Comprendere la difficoltà di formare reti neurali profonde feedforward ." Conferenza internazionale su intelligenza artificiale e statistica. 2010.


2
Qualcosa che sembra mancare è la normalizzazione batch. Descritto qui: arxiv.org/abs/1502.03167 Potrebbe essere utile.
Joonatan Samuel,

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun hanno pubblicato un nuovo articolo che include una variante dell'inizializzazione del peso Xavier da Glorot e Bengio: "Scavare in profondità nei raddrizzatori: superare le prestazioni a livello umano sulla classificazione di ImageNet" .
mjul
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.