Pericolo di azzeramento di tutti i pesi iniziali in Backpropagation


30

Perché è pericoloso inizializzare i pesi con zeri? C'è un semplice esempio che lo dimostra?


Sembra che la classica rete XOR 2-1 sia un buon esempio, ma apprezzerei alcuni ragionamenti teorici.
user8078,

1
Una risposta molto generale, che può essere o non essere applicabile qui, è che ogni volta che nuovi pesi sono multipli di vecchi pesi, non è possibile modificare i pesi zero. Questo è fatale per l'apprendimento.
Nick Cox,

Ci sono già buone risposte disponibili per cui non inizializzare i pesi a zero. Il seguente link mette in luce un po 'di più su come selezionare i pesi iniziali? staff.itee.uq.edu.au/janetw/cmc/chapters/BackProp/index2.html Spero che aiuti gli altri lettori.
doer_uvc,

@NickCox i pesi qui sono multipli del prossimo strato di pesi, e l'ultimo strato non è un multiplo di altri pesi - quindi questo non è applicabile qui.
David Refaeli,

Risposte:


21

modifica vedi il commento di alfa qui sotto. Non sono un esperto di reti neurali, quindi rimanderò a lui.

La mia comprensione è diversa dalle altre risposte che sono state pubblicate qui.

Sono abbastanza sicuro che la backpropagation implichi l' aggiunta ai pesi esistenti, non la moltiplicazione. L'importo aggiunto viene specificato dalla regola delta . Nota che wij non appare sul lato destro dell'equazione.

La mia comprensione è che ci sono almeno due buoni motivi per non impostare i pesi iniziali a zero:

  • Innanzitutto, le reti neurali tendono a rimanere bloccate nei minimi locali, quindi è una buona idea dare loro molti diversi valori di partenza. Non puoi farlo se iniziano tutti da zero.

  • In secondo luogo, se i neuroni iniziano con gli stessi pesi, allora tutti i neuroni seguiranno lo stesso gradiente e finiranno sempre per fare le stesse cose l'uno con l'altro.


6
"L'importo che aggiungi è specificato dalla regola delta. Nota che wij non appare sul lato destro dell'equazione." - Questo è vero solo per le reti neurali senza strati nascosti! Ma hai menzionato altri due punti, che sono buoni argomenti contro l'inizializzazione di una ANN con pesi uguali .
alfa,

1
Penso che sia principalmente il secondo motivo, ad esempio in una rete feed-forward di base completamente connessa, se ogni livello è inizializzato con gli stessi pesi, quindi come suggerisci, tutti i nodi seguono lo stesso percorso e sono ridondanti. La mia impressione è che la maggior parte delle reti con più di una manciata di funzionalità non avrà difficoltà con i minimi locali. Inoltre, l'inizializzazione casuale da sola non impedisce alla rete di bloccarsi, ma l'uso ripetuto di diverse inizializzazioni casuali ti indicherà se una particolare iterazione ha avuto un problema minimo locale (penso che questo sia implicito, ma non esplicito).
Tahlor,

la seconda ragione è falsa? open.wolframcloud.com/env/…
user3180

input diversi rompono la simmetria del peso
user3180

si aggiungono i derivati ​​e i derivati ​​sono moltiplicazioni utilizzate attraverso la regola della catena.
David Refaeli,

7

Se pensavi ai pesi come a priori, come in una rete bayesiana, allora hai escluso ogni possibilità che quegli input possano influenzare il sistema. Un'altra spiegazione è che la backpropagation identifica l'insieme di pesi che minimizza la differenza quadrata ponderata tra i valori target e quelli osservati (E). Quindi come potrebbe essere orientato un algoritmo di discesa gradiente in termini di determinazione della direzione del sistema? Ti stai posizionando su un punto di sella dello spazio dei parametri.


1
Questa è la risposta migliore È un punto di sella. Gli algoritmi di ottimizzazione basati sulla backpropagation di solito si fermano immediatamente. Per calcolare il gradiente moltiplichiamo i delta con i pesi e il risultato sarà sempre zero.
alfa,

Penso che questa sia una buona risposta per cui un particolare peso non dovrebbe essere inizializzato a 0. Ma i delta probabilmente si propagheranno ancora - i pesi nel livello di output non dipendono dai pesi, quindi qui avremo pesi diversi da zero dopo il primo aggiornamento. Dopo il prossimo aggiornamento, questi pesi diversi da zero verranno utilizzati con un delta per regolare i pesi del livello precedente e così via. Penso che il problema più grande con l'inizializzazione di una rete con tutti gli 0 sia che hanno tutti lo stesso peso, che nella tua rete feed-forward di base completamente connessa, equivale ad avere 1 nodo per strato.
Tahlor,

6

In ogni iterazione del tuo algoritmo di backpropagation, aggiornerai i pesi moltiplicando il peso esistente per un delta determinato dalla backpropagation. Se il valore di peso iniziale è 0, moltiplicandolo per qualsiasi valore per delta non cambierà il peso, il che significa che ogni iterazione non ha alcun effetto sui pesi che si sta tentando di ottimizzare.


2
> aggiornerai i pesi moltiplicando il peso esistente per un valore determinato dalla backpropagation - non credo, non è solo moltiplicazione.
user8078,

1
Il mio punto generale è che se i pesi iniziali sono zero, rimarranno a zero dopo ogni iterazione della propagazione posteriore.
Idr

Il "valore determinato dalla backpropagation" è un delta (si veda ad esempio il documento originale "Apprendimento delle rappresentazioni mediante errori di propagazione inversa", equazione 7). La risposta è mal formulata ma non è completamente sbagliata.
alfa,

1
Questa è solo una risposta sbagliata. I pesi cambieranno, ma cambieranno insieme. Ciò è negativo perché tutte le unità nascoste saranno identiche durante l'allenamento e non può avvenire alcun apprendimento.
Amin Sammara,

θ(0)=0.5

2

Mi sembra che uno dei motivi per cui è male inizializzare i pesi sugli stessi valori (non solo zero) sia perché quindi per ogni particolare livello nascosto tutti i nodi in questo livello avrebbero esattamente gli stessi input e rimarrebbero quindi gli stessi di ciascuno altro.


1

La risposta a questa non è interamente "Minima / Maxima locali".

Quando hai più di 1 strato nascosto e ogni peso è 0, non importa quanto grande / piccolo un cambiamento in Weight_i non provochi un cambiamento nell'output.

Questo perché delta Weight_i sarà assorbito dal prossimo Hidden Layer.

Quando non vi è alcun cambiamento nell'output, non vi è alcun gradiente e quindi nessuna direzione.

Questo condivide gli stessi tratti di un Minima / Maxima locale, ma in realtà è a causa di 0, che è tecnicamente diverso


0

Il problema principale con l'inizializzazione di tutti i pesi a zero porta matematicamente a se i valori dei neuroni sono zero (per i multi strati) o il delta sarebbe zero. In uno dei commenti di @alfa nelle risposte precedenti viene già fornito un suggerimento, si dice che il prodotto di pesi e delta deve essere zero. Ciò significherebbe essenzialmente che per la discesa del gradiente si trova sulla cima della collina proprio al suo picco e non è in grado di rompere la simmetria. La casualità romperà questa simmetria e si raggiungerebbe il minimo locale. Anche se disturbiamo un po 'i pesi saremmo in pista. Riferimento: Apprendimento dai dati Lezione 10.


0

È una cattiva idea per 2 motivi:

  1. g(0)0

  2. tanhg(0)=0

Dimostriamolo (per semplicità suppongo un livello di output finale di 1 neurone):

tanh

Lun'LzL=WLun'L-1WL

dWL: =LWL=Lun'Lun'LzLzLWL
Lun'un'zLun'un'zzWun'L-1dWLWL=WL-αdWL

un'L-1dWL

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.