Quali sono i buoni pesi iniziali in una rete neurale?


68

Ho appena sentito che è una buona idea scegliere i pesi iniziali di una rete neurale dall'intervallo , dove è il numero di input per un dato neurone. Si presume che gli insiemi siano normalizzati - media 0, varianza 1 (non so se questo è importante).(1d,1d)d

Perché è una buona idea?


Vedi la mia tesi di master, pagina 81 per una panoramica sulle tecniche di inizializzazione.
Martin Thoma,

Risposte:


47

Presumo che tu stia usando neuroni logistici e che ti stai allenando tramite discesa graduale / propagazione posteriore.

La funzione logistica è quasi piatta per grandi input positivi o negativi. La derivata con un input di è di circa , ma a la derivata è di circa . Ciò significa che se l'ingresso di un neurone logistico è allora, per un dato segnale di allenamento, il neurone imparerà circa volte più lentamente che se l'ingresso fosse .1 / 10 10 1 / 22000 10 2200 221/10101/220001022002

Se vuoi che il neurone apprenda rapidamente, o devi produrre un segnale di allenamento enorme (come con una funzione di perdita di entropia crociata) o vuoi che il derivato sia grande. Per aumentare la derivata, impostare i pesi iniziali in modo da ottenere spesso input nell'intervallo .[4,4]

I pesi iniziali forniti potrebbero non funzionare. Dipende da come vengono normalizzati gli ingressi. Se gli input sono normalizzati per avere media e deviazione standard , allora una somma casuale di termini con uniforme dei pesi su avrà media e varianza , indipendente da . La probabilità che tu ottenga una somma al di fuori di è piccola. Ciò significa che quando aumenti , non stai causando la saturazione dei neuroni in modo che non imparino.1 d ( - 101d01(1d,1d)0 d[-4,4]d13d[4,4]d

Con input che non sono normalizzati, quei pesi potrebbero non essere efficaci nell'evitare la saturazione.


1
Quindi, in sostanza, si dovrebbe sempre almeno considerare di normalizzare i dati .. Adesso ha senso. Potresti spiegare perché la deviazione standard sarà 1/3 e quanto è piccola la probabilità della somma di input al di fuori dell'intervallo <-4,4>?
elmes

1
Ci sono alcune proprietà di base della varianza che implicano questo: se e sono indipendenti, allora e se e sono indipendenti e hanno media , quindi . Y Var ( X + Y ) = Var ( X ) + Var ( Y ) X Y 0 Var ( X Y ) = Var ( X ) Var ( Y )XYVar(X+Y)=Var(X)+Var(Y)XY0Var(XY)=Var(X)Var(Y)
Douglas Zare,

1
È possibile stimare la probabilità che una variabile casuale sia almeno deviazioni standard dalla media usando la disuguaglianza di Chebyshev. In pratica questo non è nitido, ma il risultato esatto dipende dalla distribuzione. 12
Douglas Zare,

A proposito, ho calcolato male. La varianza è quindi la deviazione standard è . 1313
Douglas Zare,

1
"La funzione logistica è quasi piatta per grandi input positivi o negativi. La derivata in un input di ..." Il soggetto rilevante non dovrebbe essere la derivata della funzione di costo della regressione logistica? In che modo l'input alla derivata della funzione di costo è già ridimensionato dalla funzione logistica a (0,1) indipendentemente dalle dimensioni dei pesi e dei segnali?
Moobie,

28

[1] risponde alla domanda:

In primo luogo, i pesi non dovrebbero essere impostati su zero per interrompere la simmetria quando si esegue 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:
    • per le unità tangenti iperboliche: campiona un'uniforme (-r, r) con (fan-in è il numero degli ingressi dell'unità).r=6fan-in+fan-out
    • per le unità sigmoid: campiona una Uniform (-r, r) con (fan-in è il numero di ingressi dell'unità).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 a 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
Vorrei aggiungere due riferimenti utili: 1) Scavare in profondità nei raddrizzatori: superare le prestazioni a livello umano sulla classificazione ImageNet - sull'importanza del ridimensionamento sensibile all'attivazione arxiv.org/abs/1502.01852 2) Soluzioni esatte alla dinamica non lineare di apprendimento in reti neurali lineari profonde arxiv.org/abs/1312.6120 - le matrici ortonormali sono molto meglio del semplice rumore gaussiano
old-ufo

1
Un editor suggerisce che le inizializzazioni per il sigmoide e la tangente iperbolica dovrebbero essere commutate in modo che corrispondano al documento originale.
gung - Ripristina Monica

2
Volevi mantenere questa modifica, Frank? In caso contrario, puoi ripristinarlo.
gung - Ripristina Monica

Mi manca qualcosa. Dove si dice nel documento Glorot e Bengio (2010) che raccomandano di usare 4 volte il valore dell'equazione 16 quando si usano le funzioni logistiche di attivazione sigmoide? L'equazione 16 deriva dall'uso dell'equazione 12 e dalla varianza di una distribuzione uniforme, ma l'equazione 16 viene derivata assumendo un'attivazione simmetrica con derivata unitaria a 0. Pertanto, ad esempio una funzione di attivazione tanh, ma non una funzione di attivazione logistica (non simmetrica). Inoltre, non testano nemmeno questa proposta inizializzazione con sigmoid logistico; lo provano solo con tanh e softsign.
Tommy L,

10

La seguente spiegazione è tratta dal libro: Neural Networks for Pattern Recognition di Christopher Bishop. Ottimo libro! Supponiamo di aver sbiancato in precedenza gli input per le unità di input, ovvero e< x 2 i > = 1

<xi>=0
<xi2>=1

La domanda è: come scegliere al meglio i pesi ?. L'idea è quella di scegliere casualmente i valori dei pesi seguendo una distribuzione che aiuti il ​​processo di ottimizzazione a convergere in una soluzione significativa.

Hai per l'attivazione delle unità nel primo livello, dove . Ora, poiché si scelgono i pesi indipendentemente dagli input, e dove sigma è la varianza della distribuzione dei pesi. Per ottenere questo risultato è necessario ricordare che i pesi sono inizializzati indipendentemente l'uno dall'altro, ovvero

y=g(a)
a=i=0dwixi
<a>=i=0d<wixi>=i=0d<wi><xi>=0
<a2>=(i=0dwixi)(i=0dwixi)=i=0d<wi2><xi2>=σ2d
<wiwj>=δij

Errore minore: anziché . <xi2>=10
Bayerj,

Questo spiega come si raggiunge un ceratin supponendo di conoscere il richiesto . A quanto ho capito, dovrebbe essere piccolo per consentire un grande valore del derivato sigmoideo, ma non troppo piccolo in modo che i delta non svaniscano. È vero? In tal caso - è una buona regola empirica dire che dovrebbe essere ~ 0,2? σααα
Uri,

Ciò è particolarmente vero per le reti neurali profonde, in cui le unità tendono a saturarsi rapidamente quando si aggiungono strati. Esistono numerosi documenti che trattano questa domanda. Un buon punto di partenza potrebbe essere "Comprendere la difficoltà di allenare reti neurali profonde feedforward" di glorot e bengio
jpmuc

10

Bene, proprio come un aggiornamento, approfondire i raddrizzatori: superare le prestazioni a livello umano n La classificazione ImageNet di He et al ha introdotto un'inizializzazione specificamente con l'inizializzazione in w = U([0,n]) * sqrt(2.0/n)cui nè il numero di input del tuo NN. Ho visto questa inizializzazione usata in molti lavori recenti (anche con ReLU). In realtà mostrano come questo inizia a ridurre il tasso di errore molto più velocemente del (-1 / n, 1 / n) che hai citato. Per una spiegazione approfondita, consulta il documento, ma ecco quanto velocemente converge: La convergenza di un modello di grandi dimensioni a 22 strati


Wow! Significativo miglioramento per me.
Thomas W,

Non per un gran numero di input però ... fallisce con MNIST.
Thomas W,

Si noti che l'inizializzazione He è specificamente progettata per ReLU (P) e tiene conto del fatto che non è simmetrica (che è uno dei presupposti dell'inizializzazione di Xavier). Non lasciarti ingannare da questo grafico fuori contesto!
Tsjolder,

5

L'idea è che si desidera inizializzare i pesi in modo da garantire un buon flusso di dati in avanti e all'indietro attraverso la rete. Cioè, non vuoi che le attivazioni si riducano o aumentino costantemente mentre avanzi nella rete.

Questa immagine mostra le attivazioni di un Perceptron multistrato ReLU a 5 strati in 3 diverse strategie di inizializzazione dopo un passaggio di MNIST attraverso la rete.

Attivazioni in un MLP ReLU con diverse strategie di inizializzazione

In tutti e tre i casi i pesi sono estratti da una distribuzione normale centrata sullo zero che è determinata dalla sua deviazione standard. Puoi vedere che se i pesi iniziali sono troppo piccoli (la deviazione standard è piccola) le attivazioni vengono soffocate e se sono troppo grandi le attivazioni esplodono. Il valore medio, approssimativamente corretto, può essere trovato impostando i pesi in modo tale che la varianza delle attivazioni e degli aggiornamenti del gradiente rimanga approssimativamente la stessa che si passa attraverso la rete.

Ho scritto un post sul blog sull'inizializzazione del peso che viene approfondito, ma l'idea di base è la seguente.

Se indica le attivazioni -th layer, la dimensione del layer e i pesi che li collegano al -st layer, quindi uno può mostrare che per le funzioni di attivazione con abbiamo i n i w ( i ) ( i + 1 ) f f ( s ) 1x(i)iniw(i)(i+1)ff(s)1

Var(x(i+1))=niVar(x(i))Var(w(i))

Per raggiungere dobbiamo quindi imporre la condizioneVar(x(i+1))=Var(x(i))

Var(w(i))=1ni.

Se denotiamo con , sul passaggio indietro vogliamo allo stesso modoLxj(i)Δj(i)

Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).

A meno che , dobbiamo scendere a compromessi tra queste due condizioni e una scelta ragionevole è la media armonicani=ni+1

Var(w(i))=2ni+ni+1.

Se campioniamo pesi da una normale distribuzione soddisfiamo questa condizione con . Per una distribuzione uniforme dovremmo prendere poiché . Siamo così arrivati ​​all'inizializzazione di Glorot. Questa è la strategia di inizializzazione predefinita per i livelli di convoluzione densi e 2D in Keras, ad esempio.N(0,σ)σ=2ni+ni+1U(a,a)a=6ni+ni+1Var(U(a,a))=a2/3

L'inizializzazione di Glorot funziona abbastanza bene per le attivazioni banali e , ma non funziona altrettanto bene per . Fortunatamente, poiché azzera semplicemente gli input negativi, rimuove approssimativamente metà della varianza e questo è facilmente modificato moltiplicando una delle nostre condizioni sopra per due:tanhReLUf(s)=ReLU(s)

Var(w(i))=2ni.

3

Un'altra tecnica che allevia il problema dell'inizializzazione del peso è la normalizzazione in lotti . Agisce per standardizzare la media e la varianza di ogni unità al fine di stabilizzare l'apprendimento come descritto nel documento originale . In pratica, le reti che utilizzano la normalizzazione in lotti (BN) sono significativamente più robuste rispetto all'inizializzazione errata. BN funziona come segue: Calcoliamo la media empirica e la varianza per ogni mini-batch, quindi standardizziamo l'input e formare l'output ridimensionandoxiBN(xi)xiγβ

μB=1mi=1Mxi   and   σB2=1mi=1m(xiμB)2x^i=xiμBσB2+ϵ   and   BN(xi)=γx^i+β
xiBN(xi)x^i di e l'aggiunta di entrambi appresi durante l'allenamento.γβ

BN introduce due parametri extra ( e ) per attivazione che consentono a di avere qualsiasi deviazione media e standard. La ragione per cui sta normalizzando può ridurre il suo potere espressivo. Questa nuova parametrizzazione ha una migliore dinamica di apprendimento: nella vecchia parametrizzazione la media di era determinata da una complessa interazione tra i parametri di tutti i livelli precedenti - così piccole modifiche ai parametri di rete si amplificano man mano che la rete diventa più profonda. Nella nuova parametrizzazione la media di è determinata da che apprendiamo insieme aß x i x i x i x i ß yγβx^ixixix^iβγdurante l'allenamento. Pertanto, la normalizzazione in lotti stabilizza l'apprendimento.

Di conseguenza, la normalizzazione in lotti consente un allenamento più veloce utilizzando tassi di apprendimento molto più elevati e allevia il problema di una cattiva inizializzazione. BN consente inoltre di utilizzare le non linearità di saturazione impedendo alla rete di rimanere bloccata nelle modalità di saturazione. In breve, la normalizzazione batch è una trasformazione differenziabile che introduce attivazioni normalizzate nella rete. In pratica, uno strato BN può essere inserito immediatamente dopo uno strato completamente connesso.

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.