Supponiamo che tu stia cercando di ridurre al minimo la funzione obiettiva tramite il numero di iterazioni. E il valore corrente è . Nel dato set di dati, non ci sono "errori irriducibili" e puoi ridurre al minimo la perdita a per i tuoi dati di allenamento. Ora hai due modi per farlo.100,00.0
Il primo modo è "tasso di apprendimento elevato" e poche iterazioni. Supponiamo di poter ridurre la perdita di in ciascuna iterazione, quindi, in iterazioni, puoi ridurre la perdita a .10.0100.0
Il secondo modo sarebbe "tasso di apprendimento lento" ma più iterazioni. Supponiamo di poter ridurre la perdita di in ogni iterazione e di aver bisogno di iterazioni per avere una perdita di 0,0 sui dati di allenamento.1.0100
Ora pensaci: i due approcci sono uguali? e se no quale è meglio nel contesto di ottimizzazione e nel contesto di apprendimento automatico ?
Nella letteratura sull'ottimizzazione , i due approcci sono gli stessi. Poiché entrambi convergono in una soluzione ottimale . D'altra parte, nell'apprendimento automatico , non sono uguali. Perché nella maggior parte dei casi la perdita nell'allenamento non viene impostata su , causando un eccesso di adattamento.0
Possiamo pensare al primo approccio come a una "ricerca della griglia di livello grossolano" e al secondo approccio come a "una ricerca della griglia di livello fine". Il secondo approccio di solito funziona meglio, ma richiede più potenza computazionale per più iterazioni.
Per evitare un eccesso di adattamento, possiamo fare diverse cose, il primo modo sarebbe limitare il numero di iterazioni, supponiamo che stiamo usando il primo approccio, che limitiamo il numero di iterazioni a 5. Alla fine, la perdita per i dati di allenamento è . (A proposito, questo sarebbe molto strano dal punto di vista dell'ottimizzazione , il che significa che possiamo migliorare in futuro la nostra soluzione / non è convergente, ma abbiamo scelto di non farlo. Nell'ottimizzazione di solito aggiungiamo esplicitamente vincoli o termini di penalizzazione alla funzione obiettiva, ma di solito non limita il numero di iterazioni.)50
D'altra parte, possiamo anche usare il secondo approccio: se impostiamo un tasso di apprendimento su piccolo, riduciamo la perdita di per ogni iterazione, anche se abbiamo un gran numero di iterazioni che dicono iterazioni, non abbiamo ancora minimizzato la perdita a .0.15000.0
Questo è il motivo per cui un piccolo tasso di apprendimento equivale a "più regolarizzazioni".
Ecco un esempio di utilizzo di una diversa velocità di apprendimento su dati sperimentali utilizzando xgboost
. Controlla i seguenti due collegamenti per vedere cosa significa eta
o cosa n_iterations
significa.
Parametri per Tree Booster
XGBoost Controllo overfitting
Per lo stesso numero di iterazioni, diciamo . Un piccolo tasso di apprendimento è "inadeguato" (o il modello ha "un'alta propensione"), e un grande tasso di apprendimento è "insufficiente" (o il modello ha "alta varianza").50
PS. l'evidenza del sottoadattamento è che sia il set di training che i test hanno un grande errore e la curva di errore per training e test sono vicini l'uno all'altro. Il segno di un eccesso di adattamento è che l'errore del set di allenamento è molto basso e il set di test è molto alto, due curve sono molto distanti tra loro.