Un approccio scientifico per migliorare le prestazioni del modello

Ai fini del presente documento:

L'obiettivo principale dello sviluppo del machine learning è massimizzare l'utilità del modello di cui è stato eseguito il deployment.

In genere, puoi utilizzare gli stessi passaggi e principi di base in questa sezione per qualsiasi problema relativo al machine learning.

Questa sezione fa le seguenti ipotesi:

  • Hai già una pipeline di addestramento in esecuzione insieme a una configurazione che ottiene un risultato ragionevole.
  • Disponi di risorse di calcolo sufficienti per condurre esperimenti di ottimizzazione significativi e per eseguire almeno diversi job di addestramento in parallelo.

Strategia di ottimizzazione incrementale

Consiglio: inizia con una configurazione semplice. A questo punto, apporta miglioramenti in modo incrementale e ottieni insight sul problema. Assicurati che ogni miglioramento sia basato su prove solide.

Si presume che il tuo obiettivo sia trovare una configurazione che massimizzi le prestazioni del tuo modello. A volte il tuo obiettivo è massimizzare il miglioramento del modello entro una scadenza fissa. In altri casi, puoi continuare a migliorare il modello a tempo indeterminato, ad esempio migliorando continuamente il modello utilizzato in produzione.

In linea di principio, puoi massimizzare le prestazioni utilizzando un algoritmo per cercare automaticamente l'intero spazio delle possibili configurazioni, ma non è un'opzione pratica. Lo spazio delle possibili configurazioni è estremamente ampio e non esistono ancora algoritmi abbastanza sofisticati da consentire una ricerca efficiente in questo spazio senza il intervento umano. La maggior parte degli algoritmi di ricerca automatizzata si basa su uno spazio di ricerca progettato a mano che definisce il set di configurazioni in cui eseguire le ricerche. Questi spazi di ricerca possono essere abbastanza importanti.

Il modo più efficace per massimizzare il rendimento è iniziare con una configurazione semplice e aggiungere in modo incrementale le funzionalità e apportare miglioramenti, aggiungendo al contempo approfondimenti sul problema.

Ti consigliamo di utilizzare algoritmi di ricerca automatica in ogni fase di ottimizzazione, nonché di aggiornare continuamente gli spazi di ricerca di pari passo con la crescita della tua comprensione. Man mano che esplori, troverai configurazioni migliori e migliori, quindi il tuo modello "migliore" migliorerà continuamente.

Il termine "lancio" si riferisce a un aggiornamento della nostra configurazione migliore, che potrebbe corrispondere o meno a un lancio effettivo di un modello di produzione. Per ogni "lancio", devi assicurarti che la modifica si basi su prove solide, non solo su casualità basate su una configurazione fortunata, in modo da non aggiungere complessità superflua alla pipeline di addestramento.

In generale, la strategia di ottimizzazione incrementale prevede la ripetizione dei seguenti quattro passaggi:

  1. Scegli un obiettivo per il prossimo ciclo di esperimenti. Assicurati che l'ambito dell'obiettivo sia appropriato.
  2. Progetta il prossimo ciclo di esperimenti. Progetta ed esegui una serie di esperimenti in linea con questo obiettivo.
  3. Impara dai risultati sperimentali. Valuta l'esperimento in base a un elenco di controllo.
  4. Decidi se adottare la modifica del candidato.

Il resto di questa sezione descrive questa strategia.

Scegli un obiettivo per il prossimo ciclo di esperimenti

Se provi ad aggiungere più funzionalità o a rispondere a più domande contemporaneamente, potresti non essere in grado di separare i diversi effetti sui risultati. Esempi di obiettivi includono:

  • Prova un potenziale miglioramento per la pipeline (ad esempio, un normalizzatore, una scelta di pre-elaborazione ecc.).
  • Comprendere l'impatto di un particolare modello di iperparametro (ad esempio, la funzione di attivazione)
  • Riduci al minimo l'errore di convalida.

Dai la priorità ai progressi a lungo termine rispetto ai miglioramenti degli errori di convalida a breve termine

Riepilogo: il più delle volte, il tuo obiettivo principale è acquisire informazioni sul problema di ottimizzazione.

Ti consigliamo di dedicare la maggior parte del tuo tempo ad approfondire il problema e di dedicare relativamente meno tempo a massimizzare il rendimento nel set di convalida. In altre parole, dedichi gran parte del tempo all'"esplorazione" e soltanto una piccola parte allo "sfruttamento". Comprendere il problema è fondamentale per massimizzare il rendimento finale. Assegnare la priorità agli approfondimenti sui miglioramenti a breve termine consente di:

  • Evita di lanciare modifiche inutili che si sono verificate nelle prestazioni ad alte prestazioni.
  • Identifica gli iperparametri a cui l'errore di convalida è più sensibile, gli iperparametri che interagiscono di più e devono quindi essere ottimizzati di nuovo, nonché gli iperparametri relativamente insensibili ad altri cambiamenti e che possono quindi essere corretti negli esperimenti futuri.
  • Suggerisci potenziali nuove funzionalità da provare, ad esempio i nuovi regolari regolari in caso di overfitting.
  • Identifica funzionalità che non aiutano e che possono quindi essere rimosse, riducendo la complessità degli esperimenti futuri.
  • Riconosce quando i miglioramenti dell'ottimizzazione degli iperparametri hanno probabilmente saturato.
  • Restringi gli spazi di ricerca in base al valore ottimale per migliorare l'efficienza di ottimizzazione.

Alla fine, capirai il problema. Puoi quindi concentrarti solo sull'errore di convalida, anche se gli esperimenti non sono massimamente informativi sulla struttura del problema di ottimizzazione.

Progetta il prossimo ciclo di esperimenti

Riepilogo: identifica quali iperparametri sono scientifici, fastidiosi e iperparametri fissi per l'obiettivo sperimentale. Crea una sequenza di studi per confrontare diversi valori degli iperparametri scientifici, ottimizzando al contempo gli iperparametri fastidiosi. Scegli lo spazio di ricerca degli iperparametri in modo da bilanciare i costi delle risorse con il valore scientifico.

Identifica gli iperparametri scientifici, fastidiosi e fissi

Per un determinato obiettivo, tutti gli iperparametri rientrano in una delle seguenti categorie:

  • Gli iperparametri scientifici sono quelli il cui effetto sulle prestazioni del modello è ciò che stai cercando di misurare.
  • Gli iperparametri di disturbo devono essere ottimizzati per confrontare equamente i diversi valori degli iperparametri scientifici. Gli iperparametri di fastidio sono simili ai parametri di disturbo nelle statistiche.
  • Gli iperparametri fissi hanno valori costanti nella serie di esperimenti corrente. I valori degli iperparametri fissi non dovrebbero cambiare se confronti diversi valori degli iperparametri scientifici. Se correggi determinati iperparametri per un insieme di esperimenti, devi accettare che le conclusioni derivate dagli esperimenti potrebbero non essere valide per altre impostazioni degli iperparametri fissi. In altre parole, gli iperparametri fissi creano avvertenze per le conclusioni tratte dagli esperimenti.

Ad esempio, supponiamo che il tuo obiettivo sia il seguente:

Determina se un modello con più livelli nascosti presenta un errore di convalida inferiore.

In questo caso:

  • Il tasso di apprendimento è un iperparametro fastidioso perché puoi confrontare equamente i modelli con diversi numeri di livelli nascosti solo se il tasso di apprendimento è ottimizzato separatamente per ogni numero di livelli nascosti. Il tasso di apprendimento ottimale dipende generalmente dall'architettura del modello.
  • La funzione di attivazione potrebbe essere un iperparametro fisso se hai stabilito negli esperimenti precedenti che la funzione di attivazione migliore non è sensibile alla profondità del modello. In alternativa, potete limitare le vostre considerazioni sul numero di livelli nascosti per questa funzione di attivazione. In alternativa, potrebbe trattarsi di un iperparametro, se preparati a sintonizzarlo separatamente per ogni numero di livelli nascosti.

Un determinato iperparametro può essere un iperparametro scientifico o iperparametro o un iperparametro fisso; la designazione dell'iperparametro cambia a seconda dell'obiettivo sperimentale. Ad esempio, la funzione di attivazione potrebbe essere una delle seguenti:

  • Iperparametro scientifico: ReLU o tanh è una scelta migliore per il nostro problema?
  • Iperparametro fastidioso: il miglior modello a cinque livelli è migliore del miglior modello a sei livelli quando consenti diverse funzioni di attivazione diverse?
  • Iperparametro fisso: per le reti ReLU, l'aggiunta della normalizzazione batch in una determinata posizione aiuta?

Quando progetti un nuovo ciclo di esperimenti:

  1. Identificare gli iperparametri scientifici per l'obiettivo sperimentale. In questa fase, puoi considerare tutti gli altri iperparametri come iperparametri.
  2. Converti alcuni iperparametri in fastidiosi in iperparametri.

Con risorse illimitate, lasceresti tutti gli iperparametri non scientifici come iperparametri fastidiosi, in modo che le conclusioni tratte dai tuoi esperimenti siano prive di avvertenze sui valori fissi di iperparametri. Tuttavia, maggiori sono gli iperparametri fastidiosi che cerchi di regolare, maggiore è il rischio che tu non li ottimizzi sufficientemente bene per ogni impostazione degli iperparametri scientifici e finisca per raggiungere le conclusioni errate dai tuoi esperimenti. Come descritto in una sezione successiva, potresti contrastare questo rischio aumentando il budget di calcolo. Tuttavia, il budget massimo delle tue risorse è spesso inferiore a quello necessario per ottimizzare tutti gli iperparametri non scientifici.

Ti consigliamo di convertire un iperparametro fastidioso in un iperparametro fisso quando le avvertenze correggendole sono meno gravose rispetto al costo di includerlo come iperparametro. Più un iperparametro è fastidioso e interagisce con gli iperparametri scientifica, più viene modificato il valore. Ad esempio, il valore migliore dell'intensità del decadimento del peso in genere dipende dalle dimensioni del modello, per cui il confronto tra diverse dimensioni del modello supponendo che un singolo valore specifico del decadimento del peso non sarebbe molto accurato.

Alcuni parametri di ottimizzazione

Come regola generale, alcuni iperparametri (ad es. il tasso di apprendimento, il momento di apprendimento, i parametri di pianificazione del tasso di apprendimento, i beta beta di Ad Exchange e così via) sono considerati iperparametri perché tendono a interagire maggiormente con altri cambiamenti. Questi iperparametri raramente sono strumenti di ottimizzazione scientifica perché un obiettivo come "Qual è il tasso di apprendimento migliore per la pipeline attuale?" non fornisce molte informazioni. Dopo tutto, la migliore impostazione potrebbe cambiare con la successiva modifica della pipeline.

Occasionalmente, puoi correggere alcuni iperparametri dell'ottimizzazione a causa di vincoli di risorse o prove particolarmente forti dell'interazione con i parametri scientifici. Tuttavia, in genere devi supporre di regolare gli iperparametri dell'ottimizzazione separatamente per fare confronti equilibrati tra impostazioni diverse degli iperparametri scientifici, quindi non dovresti essere corretto. Inoltre, non esiste un motivo prioritario per preferire un valore di iperparametri dell'ottimizzatore rispetto a un altro; ad esempio, i valori di iperparametri dell'ottimizzatore di solito non influiscono in alcun modo sul costo di calcolo dei pass o gradienti.

La scelta di un ottimizzatore

In genere, la scelta dello strumento di ottimizzazione è:

  • un iperparametro scientifico
  • un iperparametro fisso

Un ottimizzatore è un iperparametro scientifico se il tuo obiettivo sperimentale prevede un confronto equilibrato tra due o più ottimizzatori diversi. Ad esempio:

Determina quale ottimizzatore genera l'errore di convalida minimo in un determinato numero di passaggi.

In alternativa, puoi impostare lo strumento di ottimizzazione come iperparametro fisso per diversi motivi, tra cui:

  • Esperimenti precedenti suggeriscono che il miglior ottimizzatore per il tuo problema di ottimizzazione non sia sensibile agli attuali iperparametri scientifici.
  • Preferisci confrontare i valori degli iperparametri scientifici utilizzando questo ottimizzatore, poiché le curve di addestramento sono più semplici da ragionare.
  • Preferisci utilizzare questo strumento di ottimizzazione perché usa meno memoria delle alternative.

Iperparametri di regolarizzazione

Gli iperparametri introdotti da una tecnica di regolarizzazione sono in genere iperparametri fastidiosi. Tuttavia, la scelta se includere o meno la tecnica di regolarizzazione è un iperparametro scientifico o fisso.

Ad esempio, la regolarizzazione degli abbandoni aggiunge complessità al codice. Pertanto, quando decidi se includere la regolarizzazione degli abbandoni, potresti stabilire che "nessuna interruzione" rispetto a "abbandono" sia un iperparametro scientifico, ma un tasso di abbandono che è un fastidioso iperparametro. Se decidi di aggiungere la regolarizzazione degli abbandoni alla pipeline in base a questo esperimento, la percentuale di abbandono sarebbe un iperparametro fastidioso negli esperimenti futuri.

Iperparametri architettonici

Gli iperparametri dell'architettura sono spesso iperparametri scientifici o fissi perché le modifiche all'architettura possono influire sui costi di pubblicazione e addestramento, sulla latenza e sui requisiti di memoria. Ad esempio, il numero di livelli è generalmente un iperparametro scientifico o fisso, poiché tende ad avere conseguenze significative per l'uso di velocità di addestramento e memoria.

Dipendenze da iperparametri scientifici

In alcuni casi, gli insiemi di fastidi e iperparametri fissi dipendono dai valori degli iperparametri scientifici. Ad esempio, supponiamo che tu stia cercando di determinare quale strumento di ottimizzazione nel momento di Nesterov e Adam genera l'errore di convalida più basso. In questo caso:

  • L'iperparametro scientifico è lo strumento di ottimizzazione, che prende i valori {"Nesterov_momentum", "Adam"}
  • Il valore optimizer="Nesterov_momentum" introduce gli iperparametri {learning_rate, momentum}, che potrebbero essere fastidiosi o iperparametri fissi.
  • Il valore optimizer="Adam" introduce gli iperparametri {learning_rate, beta1, beta2, epsilon}, che potrebbero essere fastidiosi o iperparametri fissi.

Gli iperparametri presenti solo per alcuni valori degli iperparametri scientifici sono chiamati iperparametri condizionali. Non dare per scontato che due iperparametri condizionali siano uguali solo perché hanno lo stesso nome. Nell'esempio precedente, l'iperparametro condizionale chiamato learning_rate è un iperparametro diverso per optimizer="Nesterov_momentum" rispetto a optimizer="Adam". Il suo ruolo è simile (anche se non identico) nei due algoritmi, ma l'intervallo di valori che funziona bene in ciascuno degli strumenti di ottimizzazione è in genere diverso a seconda dell'ordine di grandezza.

Crea un insieme di studi

Dopo aver identificato gli iperparametri scientifici e fastidiosi, dovresti progettare uno studio o una sequenza di studi per fare progressi verso l'obiettivo sperimentale. Uno studio specifica un insieme di configurazioni di iperparametri da eseguire per l'analisi successiva. Ogni configurazione è chiamata prova. In genere, per creare uno studio occorre scegliere quanto segue:

  • Gli iperparametri che variano nelle diverse prove.
  • I valori che tali iperparametri possono assumere (lo spazio di ricerca).
  • Il numero di prove.
  • Un algoritmo di ricerca automatica per campionare molte prove dallo spazio di ricerca.

In alternativa, puoi creare uno studio specificando manualmente l'insieme di configurazioni degli iperparametri.

Lo scopo degli studi è:

  • Esegui la pipeline con valori diversi degli iperparametri scientifici.
  • "Ottimizzazione" (o "ottimizzazione in eccesso") gli iperparametri fastidiosi in modo che i confronti tra valori diversi degli iperparametri scientifici siano il più equo possibile.

Nel caso più semplice, eseguiresti uno studio separato per ogni configurazione dei parametri scientifici, in cui ogni studio esegue l'ottimizzazione degli iperparametri. Ad esempio, se il tuo obiettivo è scegliere il miglior ottimizzatore di Nesterov e di Adam, potresti creare due studi:

  • Uno studio in cui gli optimizer="Nesterov_momentum" e gli iperparametri fastidiosi sono {learning_rate, momentum}
  • Un altro studio in cui gli optimizer="Adam" e gli iperparametri fastidiosi sono {learning_rate, beta1, beta2, epsilon}.

Devi confrontare i due ottimizzatori selezionando la prova con il miglior rendimento per ogni studio.

Puoi utilizzare qualsiasi algoritmo di ottimizzazione senza gradienti, inclusi metodi come l'ottimizzazione bayesiana o gli algoritmi evolutivi, per ottimizzare gli iperparametri. Tuttavia, preferiamo utilizzare la ricerca quasi casuale nella fase di ottimizzazione dell'esplorazione a causa di una serie di vantaggi che ha in questa impostazione. Al termine dell'esplorazione, ti consigliamo di utilizzare un software di ottimizzazione bayesiano all'avanguardia (se disponibile).

Considera un caso più complicato in cui vuoi confrontare un gran numero di valori degli iperparametri scientifici, ma è poco pratico effettuare molti studi indipendenti. In questo caso, puoi procedere come segue:

  • Includi i parametri scientifici nello stesso spazio di ricerca degli iperparametri.
  • Utilizzare un algoritmo di ricerca per campionare i valori degli iperparametri sia scientifici che dannosi in un singolo studio.

Quando si adotta questo approccio, gli iperparametri condizionali possono causare problemi. Dopo tutto, è difficile specificare uno spazio di ricerca a meno che l'insieme di iperparametri non conformi sia lo stesso per tutti i valori degli iperparametri scientifici. In questo caso, la nostra preferenza per l'utilizzo di una ricerca quasi casuale rispetto agli strumenti di ottimizzazione degli schemi neri è ancora più forte, poiché garantisce valori diversi degli iperparametri scientifici verranno campionati in modo uniforme. Indipendentemente dall'algoritmo di ricerca, assicurati che esegua la ricerca dei parametri scientifici in modo uniforme.

Trova un equilibrio tra esperimenti informativi e convenienti

Quando progetti uno studio o una sequenza di studi, assegna un budget limitato per raggiungere in modo adeguato i seguenti tre obiettivi:

  • Confrontando abbastanza valori diversi degli iperparametri scientifici.
  • Messa a punto degli iperparametri in un spazio di ricerca sufficientemente ampio.
  • Campionamento sufficientemente elevato dello spazio di ricerca degli iperparametri fastidiosi.

Migliore è la possibilità di raggiungere questi tre obiettivi, maggiore sarà il numero di informazioni che è possibile estrarre dall'esperimento. Confrontando il maggior numero possibile di iperparametri scientifici, amplia l'ambito delle informazioni ottenute dall'esperimento.

L'inclusione del maggior numero possibile di iperparametri fastidiosi e di consentire a ogni iperparametro fastidioso di variare nel più ampio intervallo possibile aumenta la certezza che un valore "buono" degli iperparametri fastidiosi esista nello spazio di ricerca per ogni configurazione degli iperparametri scientifici. In caso contrario, potrebbe effettuare confronti sleali tra i valori degli iperparametri scientifici non cercando possibili regioni dello spazio iperparametri fastidiosi in cui potrebbero ricadere valori migliori per alcuni valori dei parametri scientifici.

Campiona lo spazio di ricerca degli iperparametri nel modo più denso possibile. In questo modo, avrai la certezza che la procedura di ricerca troverà le impostazioni valide per gli iperparametri fastidiosi che si verificano nello spazio di ricerca. In caso contrario, potresti fare confronti sleali tra i valori dei parametri scientifici, poiché alcuni valori danno più fortuna con il campionamento degli iperparametri.

Purtroppo, i miglioramenti in una di queste tre dimensioni richiedono uno dei seguenti:

  • Aumento del numero di prove e, di conseguenza, aumento del costo delle risorse.
  • Trovare un modo per risparmiare risorse in una delle altre dimensioni.

Ogni problema ha le proprie idiosincrasie e vincoli computazionali, per cui l'allocazione delle risorse in questi tre obiettivi richiede un certo livello di conoscenza del dominio. Dopo aver eseguito uno studio, prova sempre a capire se lo studio ha adattato abbastanza gli iperparametri. In altre parole, lo studio ha cercato uno spazio sufficientemente ampio per confrontare equamente gli iperparametri scientifici (come descritto in maggiore dettaglio nella sezione successiva).

Impara dai risultati sperimentali

Suggerimento: oltre a provare a raggiungere l'obiettivo scientifico originale di ogni gruppo di esperimenti, esamina un elenco di controllo con domande aggiuntive. Se riscontri problemi, rivedi ed esegui di nuovo gli esperimenti.

In definitiva, ogni gruppo di esperimenti ha un obiettivo specifico. Dovresti valutare le prove fornite dagli esperimenti per raggiungere questo obiettivo. Tuttavia, se fai le domande giuste, puoi spesso riscontrare problemi da risolvere prima che un determinato insieme di esperimenti possa raggiungere l'obiettivo originale. Se non fai queste domande, potresti avere delle perplessità errate.

Poiché l'esecuzione di esperimenti può essere costosa, dovresti anche estrarre altre informazioni utili da ciascun gruppo di esperimenti, anche se non sono immediatamente pertinenti all'obiettivo corrente.

Prima di analizzare un determinato insieme di esperimenti per fare progressi verso l'obiettivo originale, poniti le seguenti domande aggiuntive:

  • Lo spazio di ricerca è abbastanza grande? Se il punto ottimale di uno studio si trova vicino al confine dello spazio di ricerca in una o più dimensioni, probabilmente la ricerca non è abbastanza ampia. In questo caso, esegui un altro studio con uno spazio di ricerca espanso.
  • Hai campionato abbastanza punti dallo spazio di ricerca? In caso contrario, guadagna più punti o usa obiettivi meno ambiziosi.
  • Quale parte delle prove in ogni studio non è fattibile? In altre parole, quali prove divergono, ricevono valori di perdita non validi o non vengono eseguite affatto perché violano un vincolo implicito? Quando una gran parte dei punti di uno studio non è fattibile, modifica lo spazio di ricerca per evitare di campionare questi punti, che a volte richiedono la reparametrizzazione dello spazio di ricerca. In alcuni casi, un gran numero di punti inaccessibili può indicare un bug del codice di addestramento.
  • Il modello mostra problemi di ottimizzazione?
  • Cosa puoi imparare dalle curve di addestramento delle prove migliori? Ad esempio, le prove migliori hanno curve di addestramento coerenti con un overfitting problematico?

Se necessario, in base alle risposte alle domande precedenti, perfeziona lo studio o il gruppo di studi più recente per migliorare lo spazio di ricerca e/o campionare più prove oppure intraprendere altre azioni correttive.

Dopo aver risposto alle domande precedenti, puoi valutare le prove fornite dagli esperimenti per il tuo obiettivo originale, ad esempio valutare se una modifica è utile.

Uno spazio di ricerca è sospetto se il punto migliore campionato da esso è vicino al suo confine. Potresti trovare un punto ancora migliore se espandi l'intervallo di ricerca in quella direzione.

Per verificare i confini degli spazi di ricerca, ti consigliamo di tracciare le prove completate su quelle che chiamiamo grafici di base degli assi degli iperparametri. In questi casi, il grafico mostra il valore dell'obiettivo di convalida rispetto a uno degli iperparametri (ad es. tasso di apprendimento). Ogni punto sul grafico corrisponde a una singola prova.

In genere, il valore dell'obiettivo di convalida per ogni prova deve corrispondere al valore migliore raggiunto nel corso dell'addestramento.

Grafico del tasso di errore sul set di convalida (asse y) rispetto al tasso di apprendimento di picco (asse x) che mostra i limiti degli spazi di ricerca non validi. In questo grafico, le prove migliori (tassi di errore più bassi) sono vicine al margine dello spazio di ricerca, dove il tasso di apprendimento di picco è più alto. Grafico del tasso di errore sul set di convalida (asse y) rispetto al tasso di apprendimento di picco (asse x) che mostra i confini degli spazi di ricerca corretti. In questo grafico, le prove migliori (tasso di errore più basso) si trovano a metà dello spazio di ricerca, dove il tasso di apprendimento di picco è 0,001, non quando il tasso di apprendimento di picco è 0,00001 o 0,1.

Figura 1: esempi di confini errati dello spazio di ricerca e di spazio di ricerca accettabile.

I grafici nella Figura 1 mostrano il tasso di errore (il valore più basso è migliore) rispetto al tasso di apprendimento iniziale. Se i punti migliori si concentrano verso il bordo di uno spazio di ricerca (in una determinata dimensione), potrebbe essere necessario espandere i confini dello spazio di ricerca fino a quando il punto di visualizzazione migliore non è più vicino al confine.

Spesso uno studio include studi "non fattibili" che si discostano o ottengono risultati molto pessimi (contrassegnati da una X rossa nella Figura 1). Se tutte le prove non sono possibili per tassi di apprendimento superiori a un certo valore di soglia e se le prove con il rendimento migliore hanno tassi di apprendimento ai margini della regione, il modello potrebbe presentare problemi di stabilità che gli impediscono di accedere a tassi di apprendimento più elevati.

Non campionare un numero sufficiente di punti nello spazio di ricerca

In generale, può essere molto difficile sapere se lo spazio di ricerca è stato sufficientemente campionato. 🤖 Eseguire più prove è meglio che eseguire meno prove, ma un numero maggiore di prove genera un costo extra evidente.

Dal momento che è così difficile sapere quando è stato eseguito un campione sufficiente, ti consigliamo:

  • Campionamento di quello che puoi permetterti.
  • Calibrare la tua sicurezza intuitiva esaminando ripetutamente vari grafici degli assi degli iperparametri e cercando di avere un'idea di quanti punti si trovano nella regione "buona" dello spazio di ricerca.

Esaminare le curve di addestramento

Riepilogo: l'analisi delle curve di perdita è un modo semplice per identificare le modalità di errore più comuni e consente di stabilire la priorità delle potenziali azioni successive.

In molti casi, l'obiettivo principale degli esperimenti richiede solo considerare l'errore di convalida di ogni prova. Tuttavia, fai attenzione quando riduci ogni prova a un singolo numero, perché l'attenzione può nascondere dettagli importanti su ciò che accade sotto la superficie. Per ogni studio, ti consigliamo vivamente di guardare le curve di perdita di almeno le migliori prove. Anche se ciò non è necessario per affrontare l'obiettivo sperimentale principale, esaminare le curve di perdita (comprese sia la perdita di addestramento che la perdita di convalida) è un buon modo per identificare le modalità di errore comuni e può aiutarti a stabilire le priorità delle azioni da intraprendere.

Quando esamini le curve di perdita, concentrati sulle seguenti domande:

  • Alcuni dei test hanno mostrato problemi di compatibilità? Un sovrafitto problematico si verifica quando l'errore di convalida inizia ad aumentare durante l'addestramento. Nelle impostazioni sperimentali in cui ottimizzi gli iperparametri indesiderati, seleziona la prova "migliore" per ogni impostazione degli iperparametri scientifici, verifica l'eventuale sovradimensionamento problematico almeno le migliori prove corrispondenti alle impostazioni degli iperparametri scientifici che stai confrontando. Se una delle prove migliori presenta un overfitting problematico, esegui una o entrambe le seguenti operazioni:

    • Ripeti l'esperimento con tecniche di regolarizzazione aggiuntive
    • Perfeziona i parametri di regolarizzazione esistenti prima di confrontare i valori degli iperparametri scientifici. Questo non può valere se gli iperparametri scientifici includono parametri di regolarizzazione, da allora non sorprende che le impostazioni di bassa intensità di questi parametri di regolazione abbiano portato a problemi di overfitting problematico.

    La riduzione dell'overfitting è spesso semplice utilizzando tecniche di regolarizzazione comuni che aggiungono complessità minima del codice o calcoli aggiuntivi (ad esempio, regolarizzazione degli abbandoni, attenuazione delle etichette, decadimento del peso). Di conseguenza, solitamente è banale aggiungerne uno o più al prossimo ciclo di esperimenti. Ad esempio, se l'iperparametro scientifico è "numero di livelli nascosti" e la migliore prova che utilizza il maggior numero di livelli nascosti presenta problemi di overfit problematici, consigliamo di riprovare con una regolarizzazione aggiuntiva anziché selezionare immediatamente il numero minore di livelli nascosti.

    Anche se nessuna delle prove "migliori" presenta problemi di overfitting problematico, potrebbe comunque esserci un problema se si verifica in una delle prove. La selezione della prova migliore sopprime le configurazioni che mostrano un overfitting problematico e favorisce quelle che non lo fanno. In altre parole, la selezione della prova migliore favorisce le configurazioni con una maggiore regolarizzazione. Tuttavia, qualsiasi cosa che peggiori l'addestramento può fungere da regolare, anche se non era intenzionale in quel modo. Ad esempio, scegliere un tasso di apprendimento più basso può regolarizzare l'addestramento limitando la procedura di ottimizzazione, ma in genere non vogliamo scegliere il tasso di apprendimento in questo modo. Tieni presente che la prova "migliore" per ogni impostazione degli iperparametri scientifici potrebbe essere selezionata in modo da favorire i valori "cattivi" di alcuni degli iperparametri scientifici o fastidiosi.

  • C'è un'elevata varianza passo passo nell'addestramento o nell'errore di convalida nell'addestramento? In tal caso, ciò potrebbe interferire con entrambi i seguenti comportamenti:

    • La tua capacità di confrontare diversi valori degli iperparametri scientifici. Questo perché ogni prova termina in modo casuale con un passaggio "fortunato" o "sfortunato".
    • La tua capacità di riprodurre il risultato del miglior test in produzione. Il motivo potrebbe essere che il modello di produzione potrebbe non terminare sullo stesso passaggio "fortunato" dello studio.

    Le cause più probabili della variazione passo passo sono:

    • Variazione del batch a causa di esempi di campionamento casuale dal set di addestramento per ogni batch.
    • Piccoli insiemi di convalide
    • Utilizzo di un tasso di apprendimento troppo alto nell'addestramento.

    I possibili rimedi includono:

    • Aumento delle dimensioni del batch.
    • Ottenere più dati di convalida.
    • Utilizzare il decadimento del tasso di apprendimento.
    • Utilizzare la media di Polyak.
  • Le prove migliorano ancora alla fine dell'addestramento? In questo caso, fai parte del regime basato sul calcolo e potresti trarre vantaggio dall'aumento del numero di passaggi di addestramento o dalla modifica della pianificazione del tasso di apprendimento.

  • Le prestazioni dei set di addestramento e convalida si sono esaurite molto prima dell'ultimo passaggio dell'addestramento? In tal caso, significa che ti trovi nel regime "non legato al calcolo" e che potresti ridurre il numero di passaggi di addestramento.

Al di là di questo elenco, molti comportamenti aggiuntivi possono diventare evidenti dall'esame delle curve di perdita. Ad esempio, l'aumento della perdita di addestramento durante l'addestramento indica in genere un bug nella pipeline di addestramento.

Rilevare se una modifica è utile con i grafici di isolamento

Grafico di isolamento che esamina il miglior valore del decadimento del peso per ResNet-50 addestrato su ImageNet. In questo caso, il tasso di errore di convalida più basso si verifica quando il decadimento del peso è ~ 0,00005.

Figura 2: Grafico di isolamento che esamina il valore migliore del decadimento del peso per ResNet-50 addestrato su ImageNet.

 

Spesso l'obiettivo di un insieme di esperimenti è confrontare diversi valori di un iperparametro scientifico. Ad esempio, supponi di voler determinare il valore di decadimento del peso che genera il miglior errore di convalida. Un grafico di isolamento è un caso speciale del grafico di base dell'asse degli iperparametri. Ogni punto su un grafico di isolamento corrisponde alle prestazioni della prova migliore in alcuni (o tutti) degli iperparametri. In altre parole, traccia le prestazioni del modello dopo aver "ottimizzato" gli iperparametri.

Un grafico di isolamento semplifica il confronto tra elementi diversi tra i diversi valori dell'iperparametro scientifico. Ad esempio, il grafico di isolamento nella Figura 2 mostra il valore del decadimento del peso che produce le migliori prestazioni di convalida per una particolare configurazione di ResNet-50 addestrata su ImageNet.

Se l'obiettivo è stabilire se includere o meno il decadimento del peso, confronta il punto migliore di questo grafico con il valore di riferimento senza decadimento del peso. Per un confronto equo, anche il tasso di apprendimento della base di riferimento dovrebbe essere altrettanto adeguato.

Quando hai dati generati dalla ricerca (quasi)casuale e stai prendendo in considerazione un iperparametro continuo per un grafico di isolamento, puoi approssimare il grafico di isolamento eseguendo il bucket dei valori dell'asse x del grafico dell'asse di iperparametro di base ed eseguendo la prova migliore in ogni sezione verticale definita dai bucket.

Automatizza grafici utili dal punto di vista generico

Maggiore è lo sforzo generato al numero di trame, minore è la probabilità che tu le osservi nel modo giusto. Ti consigliamo quindi di configurare la tua infrastruttura in modo da produrre automaticamente il maggior numero possibile di grafici. Consigliamo almeno di generare automaticamente i grafici degli assi degli iperparametri di base per tutti gli iperparametri che variano in un esperimento.

Inoltre, consigliamo di produrre automaticamente curve di perdita per tutte le prove. Inoltre, consigliamo di semplificare il più possibile la ricerca delle poche prove migliori per ogni studio e di esaminare le relative curve di perdita.

Puoi aggiungere molte altre trame e visualizzazioni potenziali. Per parafrasare Geoffrey Hinton:

Ogni volta che tracci qualcosa di nuovo, impari qualcosa di nuovo.

Decidi se adottare la modifica dei candidati

Riepilogo: quando decidi se apportare una modifica al modello o alla procedura di addestramento oppure adottare una nuova configurazione di iperparametri, prendi nota delle diverse fonti di variazione dei risultati.

Quando si cerca di migliorare un modello, una particolare modifica del candidato potrebbe inizialmente comportare un errore di convalida migliore rispetto a una configurazione precedente. Tuttavia, la ripetizione dell'esperimento potrebbe non dimostrare un vantaggio coerente. In modo informale, le fonti più importanti di risultati incoerenti possono essere raggruppate nelle seguenti categorie generali:

  • Varianza della procedura di addestramento, variazione della riaddestramento o varianza di prova: la variazione tra le esecuzioni di addestramento che utilizzano gli stessi iperparametri, ma semi casuali diversi. Ad esempio, inizializzazioni casuali diverse, ordinamento casuale dei dati, maschere di abbandono, pattern di operazioni di aumento dei dati e ordinazioni di operazioni aritmetiche parallele sono tutte potenziali fonti di variazione della prova.
  • Varianza della ricerca iperparametri o varianza studio: la variazione nei risultati causata dalla nostra procedura per la selezione degli iperparametri. Ad esempio, potresti eseguire lo stesso esperimento con un particolare spazio di ricerca, ma con due elementi di ricerca diversi per la ricerca quasi casuale e finendo per selezionare valori di iperparametri diversi.
  • Varianza della raccolta e del campionamento dei dati: la varianza di qualsiasi tipo di suddivisione casuale in dati di addestramento, convalida e test a causa del processo di generazione dei dati di addestramento, in genere più generale.

È vero, puoi confrontare i tassi di errore di convalida stimati su un set di convalida limitato utilizzando test statistici fastidiosi. Tuttavia, spesso la variazione della prova da sola può produrre differenze statisticamente significative tra due diversi modelli addestrati che utilizzano le stesse impostazioni di iperparametri.

La nostra preoccupazione è quella di variare la studio quando si cerca di trarre conclusioni che vadano oltre il livello di un singolo punto nello spazio degli iperparametri. La varianza dello studio dipende dal numero di prove e dallo spazio di ricerca. Abbiamo riscontrato casi in cui la varianza dello studio è maggiore della variazione della prova e casi in cui è molto più piccola. Pertanto, prima di adottare una modifica dei candidati, valuta la possibilità di eseguire il miglior periodo di prova N per definire la variazione della prova run-to-run. In genere, puoi evitare di caratterizzare la varianza della prova solo in seguito a importanti modifiche alla pipeline, ma in alcuni casi potresti avere bisogno di stime più aggiornate. In altre applicazioni, caratterizzare la variazione della prova è troppo costosa per essere utile.

Sebbene tu voglia adottare solo le modifiche (incluse le nuove configurazioni di iperparametri) che generano miglioramenti reali, richiedere la completa certezza che una determinata modifica non sia nemmeno la risposta esatta. Pertanto, se un nuovo punto di iperparametro (o un'altra modifica) ottiene un risultato migliore rispetto alla base di riferimento (considerando la varianza di riaddestramento sia del nuovo punto che della base di riferimento nel miglior modo possibile), probabilmente dovresti adottarla come nuova base di riferimento per i confronti futuri. Tuttavia, ti consigliamo di adottare solo le modifiche che producono miglioramenti che superano ogni complessità aggiunta.

Al termine dell'esplorazione

Riepilogo: gli strumenti di ottimizzazione bayesiani sono un'opzione convincente quando hai finito di cercare gli spazi di ricerca validi e hai deciso quali iperparametri vale la pena perfezionare.

Alla fine, le tue priorità passeranno da scoprire di più sul problema di ottimizzazione a produrre una singola configurazione migliore da usare o altrimenti utilizzare. A quel punto, deve esserci uno spazio di ricerca raffinato che contenga comodamente la regione locale intorno alla migliore prova osservata ed è stato campionato adeguatamente. Il tuo lavoro di esplorazione avrebbe dovuto rivelare gli iperparametri più essenziali da ottimizzare e i relativi intervalli sensibili che puoi utilizzare per creare uno spazio di ricerca per uno studio di ottimizzazione automatico finale che utilizza quanto più possibile il budget di ottimizzazione.

Poiché non ti interessa più massimizzare la comprensione del problema di ottimizzazione, molti dei vantaggi della ricerca quasi casuale non sono più applicabili. Pertanto, dovresti utilizzare gli strumenti di ottimizzazione bayesiani per trovare automaticamente la configurazione di iperparametri migliore. Open-Source Vizier implementa una serie di sofisticati algoritmi per l'ottimizzazione di modelli di ML, tra cui algoritmi di ottimizzazione bayesiana.

Supponiamo che lo spazio di ricerca contenga un volume non banale di punti divergenti, ovvero punti che ricevono una perdita di addestramento NaN o persino una perdita di addestramento molte deviazioni standard peggiori della media. In questo caso, consigliamo l'utilizzo di strumenti di ottimizzazione black-box che gestiscono correttamente le prove che si discostano. Per ottimizzare questo problema, consulta l'articolo sull'ottimizzazione bayesiana con vincoli sconosciuti. Open-Source Vizier offre supporto per contrassegnare i punti divergenti contrassegnando le prove come inattuabili, anche se potrebbe non utilizzare il nostro approccio preferito di Gelbart et al., a seconda di come è configurato.

Al termine dell'esplorazione, controlla il rendimento del set di test. In linea di principio, potresti anche integrare il set di convalida nel set di addestramento e reimpostare la configurazione migliore disponibile con l'ottimizzazione bayesiana. Tuttavia, ciò è appropriato solo se non ci saranno lanci futuri con questo carico di lavoro specifico (ad esempio, una competizione a Kaggle una tantum).