Come utilizzare l'arresto anticipato correttamente per allenare una rete neurale profonda?


20

Ho un modello di rete neurale profondo e ho bisogno di addestrarlo sul mio set di dati che comprende circa 100.000 esempi, i miei dati di validazione contengono circa 1000 esempi. Poiché ci vuole tempo per addestrare ogni esempio (circa 0,5 secondi per ogni esempio) e per evitare un eccesso di adattamento, vorrei applicare l'arresto anticipato per evitare calcoli non necessari. Ma non sono sicuro di come addestrare correttamente la mia rete neurale con l'arresto anticipato, molte cose che non capisco proprio ora:

  • Quale sarebbe una buona frequenza di validazione? Devo controllare il mio modello sui dati di validazione alla fine di ogni epoca? (La mia dimensione del lotto è 1)

  • È il caso che le prime epoche potrebbero produrre risultati peggiori prima che inizi a convergere in un valore migliore? In tal caso, dovremmo addestrare la nostra rete per diverse epoche prima di verificare l'arresto anticipato?

  • Come gestire il caso in cui la perdita di convalida potrebbe andare su e giù? In tal caso, l'arresto anticipato potrebbe impedire al mio modello di apprendere ulteriormente, giusto?

Grazie in anticipo.


Consiglio vivamente una dimensione del lotto superiore a una. Le dimensioni abituali sono 32, 64 e 128.
ComputerScientist,

Risposte:


20

Quale sarebbe una buona frequenza di validazione? Devo controllare il mio modello sui dati di validazione alla fine di ogni epoca? (La mia dimensione del lotto è 1)

Non esiste una regola d'oro, calcolare l'errore di validazione dopo ogni epoca è abbastanza comune. Poiché il tuo set di validazione è molto più piccolo del tuo set di allenamento, non rallenterà molto l'allenamento.

È il caso che le prime epoche potrebbero produrre risultati peggiori prima che inizi a convergere in un valore migliore?

In tal caso, dovremmo addestrare la nostra rete per diverse epoche prima di verificare l'arresto anticipato?

Potresti, ma il problema è quante epoche dovresti saltare. Quindi, in pratica, la maggior parte delle persone non salta alcuna epoca.

Come gestire il caso in cui la perdita di convalida potrebbe andare su e giù? In tal caso, l'arresto anticipato potrebbe impedire al mio modello di apprendere ulteriormente, giusto?

Le persone in genere definiscono una pazienza, vale a dire il numero di epoche da attendere prima dell'arresto anticipato se non si registrano progressi nel set di convalida. La pazienza è spesso impostata tra 10 e 100 (10 o 20 è più comune), ma dipende davvero dal set di dati e dalla rete.

Esempio con pazienza = 10:

inserisci qui la descrizione dell'immagine


Si dovrebbe usare il modello quando si è fermato presto o l' patienceepoca del modello prima si è fermata (la "migliore" senza ulteriori miglioramenti)?
stackunderflow

2
@displayname epoche di pazienza prima di fermarsi
Franck Dernoncourt

11

Di recente mi sono imbattuto in un documento intitolato "Early Stopping - ma quando?" di Lutz Prechelt che ha molti grandi esempi di come usare la fermata anticipata con spiegazioni chiare su ciò che ciascuno fa e le formule per loro.

Spero che dare un'occhiata a ciò possa aiutare.


Il documento è scritto in uno stile strano ma le informazioni sono state utili.
Josiah,

3

Per aggiungere ad altre risposte eccellenti, puoi anche - non fermarti. Io di solito:

  • correre NN per molto più tempo che avrei pensato fosse sensato,
  • salvare il modello pesi ogni N epoche e
  • quando vedo che la perdita di allenamento si è stabilizzata, scelgo solo il modello con la perdita di validazione più bassa.

Naturalmente questo ha senso solo quando non paghi al minuto (o il costo è abbastanza piccolo) e quando puoi interrompere l'allenamento manualmente. Il lato positivo è che è molto più facile determinare il minimo errore di validazione a posteriori.


1
Faccio anche questo. Anche se come te sono consapevole che è un lusso. Quando i modelli hanno iniziato a occupare molto spazio, ho scoperto che utilizzando le cifre precedenti di perdita e f-score potevo determinare a livello di codice quando eliminare anche i modelli precedenti, quindi si finisce con una finestra mobile dei migliori modelli candidati che consumano all'incirca come molto spazio sul disco rigido in quanto probabilmente valgono.
Collettivo di garanzia della qualità
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.