Sto cercando di formare una rete neurale profonda per la classificazione, usando la propagazione posteriore. In particolare, sto usando una rete neurale convoluzionale per la classificazione delle immagini, usando la libreria Tensor Flow. Durante l'allenamento, sto sperimentando uno strano comportamento e mi chiedo solo se questo è tipico o se potrei fare qualcosa di sbagliato.
Quindi, la mia rete neurale convoluzionale ha 8 strati (5 convoluzionali, 3 completamente connessi). Tutti i pesi e le inclinazioni vengono inizializzati con piccoli numeri casuali. Ho quindi impostato una dimensione del passo e procedo all'allenamento con mini-batch, usando Adam Optimizer di Tensor Flow.
Lo strano comportamento di cui sto parlando è che per circa i primi 10 cicli attraverso i miei dati di allenamento, la perdita di allenamento non diminuisce, in generale. I pesi vengono aggiornati, ma la perdita di allenamento rimane all'incirca allo stesso valore, a volte salendo e talvolta scendendo tra i mini-lotti. Rimane così per un po 'e ho sempre l'impressione che la perdita non diminuirà mai.
Quindi, all'improvviso, la perdita di allenamento diminuisce drasticamente. Ad esempio, entro circa 10 cicli attraverso i dati di allenamento, la precisione dell'allenamento va da circa il 20% a circa l'80%. Da allora in poi, tutto finisce per convergere piacevolmente. La stessa cosa accade ogni volta che eseguo la pipeline di allenamento da zero e di seguito è riportato un grafico che illustra una corsa di esempio.
Quindi, quello che mi chiedo, è se si tratta di un comportamento normale con l'allenamento di reti neurali profonde, per cui ci vuole un po 'di tempo per "dare il calcio". O è probabile che ci sia qualcosa che sto facendo di sbagliato che sta causando questo ritardo?
Grazie mille!