Sto usando tensorflow per scrivere semplici reti neurali per un po 'di ricerca e ho avuto molti problemi con i pesi' nan 'durante l'allenamento. Ho provato molte soluzioni diverse come cambiare l'ottimizzatore, cambiare la perdita, la dimensione dei dati, ecc. Ma senza alcun risultato. Infine, ho notato che un cambiamento nel tasso di apprendimento ha fatto un'incredibile differenza nei miei pesi.
Usando un tasso di apprendimento di 0,001 (che pensavo fosse piuttosto conservativo), la funzione di minimizzazione avrebbe effettivamente aumentato esponenzialmente la perdita. Dopo un'epoca la perdita potrebbe passare da un numero di migliaia a un trilione e poi all'infinito ('nan'). Quando ho abbassato il tasso di apprendimento a 0,0001, tutto ha funzionato bene.
1) Perché un singolo ordine di grandezza ha un tale effetto?
2) Perché la funzione di minimizzazione esegue letteralmente l'opposto della sua funzione e massimizza la perdita? Mi sembra che ciò non dovrebbe accadere, indipendentemente dal tasso di apprendimento.