Dare un senso alle curve di perdita e precisione

Aug 20 2020

Questo è un problema che ho riscontrato più e più volte. Grafici di perdita (entropia incrociata in questo caso) e accuratezza che non hanno senso. Ecco un esempio:

qui, sto addestrando un ReNet18 su CIFAR10. L'ottimizzatore è SGD con velocità di apprendimento 0,1, quantità di moto di Nesterov 0,9, decadimento del peso 1e-4. Il tasso di apprendimento viene ridotto a ⅕ alle epoche 60, 120, 160.

  • Inizialmente le curve sono tutte belle e dandy; il che significa che la perdita di formazione e convalida sta diminuendo e le precisioni stanno aumentando.
  • Intorno all'epoca 65 ~ 70 vedi segni di overfitting; come val. la perdita inizia ad aumentare e val. la precisione inizia a diminuire (il riquadro rosso ). Non c'è ancora niente di strano qui.

Ora ci sono due cose che non hanno senso per me:

  1. Dopo l'epoca 120 (dove LR è diminuito) val. la perdita e la precisione iniziano a migliorare per un paio di epoche (il riquadro verde ). Perché la riduzione del tasso di apprendimento dovrebbe migliorare improvvisamente le prestazioni di convalida di un modello che era già overfitting ?! Mi aspetto che il calo di LR acceleri effettivamente l'overfitting.

  2. Dopo l'epoca ~ 125 (la casella blu ) la perdita inizia a salire ma la precisione continua a migliorare. Capisco che la perdita potrebbe aumentare mentre l'accuratezza rimane costante (dal modello che diventa più fiducioso nelle sue previsioni sbagliate o meno sicuro nelle sue previsioni corrette). Ma non capisco come la precisione possa migliorare mentre la perdita aumenta.

Risposte

hH1sG0n3 Aug 20 2020 at 18:52

Solo un paio di punti di seguito

  • Riquadro rosso: in termini rigorosi, l'overfitting si verifica quando il modello sta andando meglio nella formazione rispetto al set di convalida. Quindi, direi che qui inizia prima di quanto indicato in rosso e probabilmente si riferisce al modello che trova parametri migliori che si applicano solo al set di addestramento. Da segnalare, nessuna diminuzione significativa della perdita di treno.
  • Green box: in allenamento, calo significativo delle perdite. Questa scoperta di un minimo significativamente migliore significa che può essere applicato anche nel set di convalida e si riflette effettivamente nella curva di perdita di val. Nonostante ciò, la perdita non è migliore del checkpoint all'inizio del riquadro rosso.
  • Riquadro blu: perdita e precisione non sono metriche dipendenti. Mentre l'accuratezza è una misura del numero di ipotesi corrette (quante), la perdita è una misura della distanza dal punto corretto dato un dato (quanto lontano).

In generale, una lr più piccola significa che il modello ha meno "libertà" di saltare molto lontano nello spazio delle caratteristiche. E quindi ci sono meno possibilità di vedere una diminuzione significativa e rapida delle perdite. Come suggerisci, c'è una leggera tendenza al rialzo overfitting nella tua perdita di val, ma è tanto significativa o veloce quanto il più piccolo lr consente in allenamento.

Inoltre, nota che la tua perdita di treno è superiore alla perdita di valore per una buona parte del tuo allenamento (~ 55a epoca). Potresti voler indagare su come il tuo modello è regolarizzato in quanto ciò potrebbe influenzare le tue curve di apprendimento in modi che potrebbero aiutarti a dedurre meglio la diagnostica. Ad esempio, in pytorch, la perdita di treno tra gli stati del modello (model.train () e model.eval ()) differisce in modo significativo.