Perché è pericoloso inizializzare i pesi con zeri? C'è un semplice esempio che lo dimostra?
Perché è pericoloso inizializzare i pesi con zeri? C'è un semplice esempio che lo dimostra?
Risposte:
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.
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.
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.
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
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.
È una cattiva idea per 2 motivi:
Dimostriamolo (per semplicità suppongo un livello di output finale di 1 neurone):