Ai fini del presente documento:
L'obiettivo finale dello sviluppo del machine learning è massimizzare l'utilità del modello implementato.
In genere, puoi utilizzare gli stessi passaggi e principi di base in questa sezione per qualsiasi problema di ML.
Questa sezione si basa sulle seguenti ipotesi:
- Hai già una pipeline di addestramento completamente funzionante insieme a una configurazione che ottiene un risultato ragionevole.
- Hai risorse di calcolo sufficienti per condurre esperimenti di ottimizzazione significativi ed eseguire almeno diversi job di addestramento in parallelo.
Strategia di ottimizzazione incrementale
Consiglio: inizia con una configurazione semplice. Poi, apporta miglioramenti incrementali mentre acquisisci informazioni sul problema. Assicurati che qualsiasi miglioramento si basi su prove solide.
Supponiamo che il tuo obiettivo sia trovare una configurazione che massimizzi il rendimento del modello. A volte, l'obiettivo è massimizzare il miglioramento del modello entro una scadenza fissa. In altri casi, puoi continuare a migliorare il modello indefinitamente, ad esempio migliorando continuamente un modello utilizzato in produzione.
In linea di principio, potresti massimizzare il rendimento utilizzando un algoritmo per cercare automaticamente l'intero spazio delle possibili configurazioni, ma questa non è un'opzione pratica. Lo spazio delle possibili configurazioni è estremamente ampio e non esistono ancora algoritmi sufficientemente sofisticati per eseguire ricerche in modo efficiente in questo spazio senza la guida umana. La maggior parte degli algoritmi di ricerca automatizzati si basa su uno spazio di ricerca progettato manualmente che definisce l'insieme di configurazioni in cui eseguire la ricerca e questi spazi di ricerca possono essere molto importanti.
Il modo più efficace per massimizzare il rendimento è iniziare con una configurazione semplice e aggiungere in modo incrementale funzionalità e apportare miglioramenti man mano che acquisisci informazioni sul problema.
Ti consigliamo di utilizzare algoritmi di ricerca automatizzati in ogni ciclo di ottimizzazione e di aggiornare continuamente gli spazi di ricerca man mano che la tua comprensione aumenta. Man mano che esplori, troverai naturalmente configurazioni sempre migliori e quindi il tuo modello "migliore" migliorerà continuamente.
Il termine "lancio" si riferisce a un aggiornamento della nostra migliore configurazione (che può 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 una probabilità casuale basata su una configurazione fortunata, in modo da non aggiungere inutili complessità alla pipeline di addestramento.
A livello generale, la nostra strategia di ottimizzazione incrementale prevede la ripetizione dei seguenti quattro passaggi:
- Scegli un obiettivo per il prossimo ciclo di esperimenti. Assicurati che l'ambito dell'obiettivo sia appropriato.
- Progetta il prossimo ciclo di esperimenti. Progetta ed esegui una serie di esperimenti che ti avvicinino a questo obiettivo.
- Impara dai risultati sperimentali. Valuta l'esperimento in base a una lista di controllo.
- Stabilisci se adottare la modifica proposta.
Il resto di questa sezione descrive in dettaglio 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 distinguere gli effetti separati sui risultati. Ecco alcuni esempi di obiettivi:
- Prova un potenziale miglioramento della pipeline (ad esempio, un nuovo regolarizzatore, una scelta di preelaborazione e così via).
- Comprendere l'impatto di un particolare iperparametro del modello (ad esempio, la funzione di attivazione)
- Ridurre 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: la maggior parte delle volte, il tuo obiettivo principale è ottenere informazioni sul problema di ottimizzazione.
Ti consigliamo di dedicare la maggior parte del tempo ad acquisire informazioni sul problema e di dedicare relativamente poco tempo a concentrarti avidamente sulla massimizzazione del rendimento nel set di convalida. In altre parole, dedica la maggior parte del tempo all'"esplorazione" e solo una piccola parte all'"utilizzo". Comprendere il problema è fondamentale per massimizzare il rendimento finale. Dare la priorità agli approfondimenti rispetto ai guadagni a breve termine consente di:
- Evita di lanciare modifiche non necessarie che si sono verificate in esecuzioni con un buon rendimento semplicemente per caso.
- Identifica gli iperparametri a cui l'errore di convalida è più sensibile, gli iperparametri che interagiscono maggiormente e che quindi devono essere riottimizzati insieme e gli iperparametri relativamente insensibili ad altre modifiche e che possono quindi essere corretti in esperimenti futuri.
- Suggerisci nuove funzionalità potenziali da provare, ad esempio nuovi regolarizzatori quando l'overfitting è un problema.
- Identifica le funzionalità che non sono utili e che possono quindi essere rimosse, riducendo la complessità degli esperimenti futuri.
- Riconoscere quando i miglioramenti derivanti dall'ottimizzazione degli iperparametri sono probabilmente saturi.
- Restringi gli spazi di ricerca intorno al valore ottimale per migliorare l'efficienza dell'ottimizzazione.
Alla fine, capirai il problema. In questo modo, puoi concentrarti esclusivamente sull'errore di convalida, anche se gli esperimenti non forniscono informazioni ottimali sulla struttura del problema di ottimizzazione.
Progettare il prossimo round di esperimenti
Riepilogo: identifica quali iperparametri sono scientifici, di disturbo e fissi per l'obiettivo sperimentale. Crea una sequenza di studi per confrontare diversi valori degli iperparametri scientifici ottimizzando gli iperparametri di disturbo. Scegli lo spazio di ricerca degli iperparametri di disturbo per bilanciare i costi delle risorse con il valore scientifico.
Identificare gli iperparametri scientifici, di disturbo 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 sono quelli che devono essere ottimizzati per confrontare equamente i diversi valori degli iperparametri scientifici. Gli iperparametri di disturbo sono simili ai parametri di disturbo nelle statistiche.
- Gli iperparametri fissi hanno valori costanti nell'attuale round di esperimenti. I valori degli iperparametri fissi non devono cambiare quando confronti valori diversi 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 corretti. In altre parole, gli iperparametri fissi creano avvertenze per qualsiasi conclusione tu tragga dagli esperimenti.
Ad esempio, supponiamo che il tuo obiettivo sia il seguente:
Determina se un modello con più livelli nascosti ha un errore di convalida inferiore.
In questo caso:
- Il tasso di apprendimento è un iperparametro problematico perché puoi confrontare in modo equo i modelli con un numero diverso di livelli nascosti solo se il tasso di apprendimento viene ottimizzato separatamente per ogni numero di livelli nascosti. Il tasso di apprendimento ottimale dipende in genere dall'architettura del modello.
- La funzione di attivazione potrebbe essere un iperparametro fisso se hai determinato in esperimenti precedenti che la migliore funzione di attivazione non è sensibile alla profondità del modello. In alternativa, puoi limitare le tue conclusioni sul numero di livelli nascosti per coprire questa funzione di attivazione. In alternativa, potrebbe essere un iperparametro fastidioso se sei pronto a regolarlo separatamente per ogni numero di strati nascosti.
Un iperparametro specifico può essere un iperparametro scientifico, un iperparametro di disturbo o un iperparametro fisso; la designazione dell'iperparametro cambia a seconda dell'obiettivo sperimentale. Ad esempio, la funzione di attivazione può essere una delle seguenti:
- Iperparametro scientifico: ReLU o tanh è una scelta migliore per il nostro problema?
- Iperparametro di disturbo: il miglior modello a cinque livelli è migliore del miglior modello a sei livelli quando si consentono diverse funzioni di attivazione possibili?
- Iperparametro fisso: per le reti ReLU, l'aggiunta della normalizzazione batch in una posizione specifica è utile?
Quando progetti una nuova serie di esperimenti:
- Identifica gli iperparametri scientifici per l'obiettivo sperimentale. In questa fase, puoi considerare tutti gli altri iperparametri come iperparametri di disturbo.
- Converti alcuni iperparametri di disturbo in iperparametri fissi.
Con risorse illimitate, lasceresti tutti gli iperparametri non scientifici come iperparametri di disturbo, in modo che le conclusioni che trai dai tuoi esperimenti siano prive di avvertenze sui valori degli iperparametri fissi. Tuttavia, più iperparametri di disturbo tenti di ottimizzare, maggiore è il rischio di non riuscire a ottimizzarli sufficientemente bene per ogni impostazione degli iperparametri scientifici e di trarre conclusioni errate dai tuoi esperimenti. Come descritto in una sezione successiva, puoi contrastare questo rischio aumentando il budget di calcolo. Tuttavia, il budget massimo per le risorse è spesso inferiore a quello necessario per ottimizzare tutti gli iperparametri non scientifici.
Ti consigliamo di convertire un iperparametro di disturbo in un iperparametro fisso quando le limitazioni introdotte dalla sua correzione sono meno onerose del costo di includerlo come iperparametro di disturbo. Più un iperparametro di disturbo interagisce con gli iperparametri scientifici, più è dannoso fissarne il valore. Ad esempio, il valore migliore dell'intensità del decadimento del peso in genere dipende dalle dimensioni del modello, quindi confrontare dimensioni diverse del modello presupponendo un singolo valore specifico del decadimento del peso non sarebbe molto utile.
Alcuni parametri dell'ottimizzatore
Come regola generale, alcuni iperparametri dell'ottimizzatore (ad es. il tasso di apprendimento, il momentum, i parametri di pianificazione del tasso di apprendimento, i beta di Adam e così via) sono iperparametri di disturbo perché tendono a interagire maggiormente con altre modifiche. Questi iperparametri dell'ottimizzatore sono raramente iperparametri scientifici perché un obiettivo come "Qual è il miglior tasso di apprendimento per la pipeline attuale?" non fornisce molte informazioni. Dopo tutto, la migliore impostazione potrebbe cambiare con la successiva modifica della pipeline.
Potresti correggere occasionalmente alcuni iperparametri dell'ottimizzatore a causa di vincoli delle risorse o di prove particolarmente solide che dimostrano che non interagiscono con i parametri scientifici. Tuttavia, in genere devi presumere di dover ottimizzare gli iperparametri dell'ottimizzatore separatamente per effettuare confronti equi tra le diverse impostazioni degli iperparametri scientifici, pertanto non devono essere fissati. Inoltre, non esiste un motivo a priori per preferire un valore di iperparametro dell'ottimizzatore rispetto a un altro. Ad esempio, i valori di iperparametro dell'ottimizzatore di solito non influiscono in alcun modo sul costo computazionale dei passaggi in avanti o dei gradienti.
La scelta dell'ottimizzatore
La scelta dell'ottimizzatore è in genere:
- un iperparametro scientifico
- un iperparametro fisso
Un ottimizzatore è un iperparametro scientifico se il tuo obiettivo sperimentale prevede di effettuare confronti equi tra due o più ottimizzatori diversi. Ad esempio:
Determina quale ottimizzatore produce l'errore di convalida più basso in un determinato numero di passaggi.
In alternativa, potresti impostare l'ottimizzatore come iperparametro fisso per una serie di motivi, tra cui:
- Esperimenti precedenti suggeriscono che l'ottimizzatore migliore per il tuo problema di ottimizzazione non è sensibile agli iperparametri scientifici attuali.
- Preferisci confrontare i valori degli iperparametri scientifici utilizzando questo ottimizzatore perché le sue curve di addestramento sono più facili da interpretare.
- Preferisci utilizzare questo ottimizzatore perché utilizza meno memoria rispetto alle alternative.
Iperparametri di regolarizzazione
Gli iperparametri introdotti da una tecnica di regolarizzazione sono in genere iperparametri di disturbo. Tuttavia, la scelta di includere o meno la tecnica di regolarizzazione è un iperparametro scientifico o fisso.
Ad esempio, la regolarizzazione dropout aggiunge complessità al codice. Pertanto, quando decidi se includere la regolarizzazione del dropout, puoi rendere "no dropout" e "dropout" un iperparametro scientifico, mentre il tasso di dropout un iperparametro di disturbo. Se decidi di aggiungere la regolarizzazione del dropout alla pipeline in base a questo esperimento, il tasso di dropout sarà un iperparametro di disturbo negli esperimenti futuri.
Iperparametri architettonici
Gli iperparametri architetturali 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 è in genere un iperparametro scientifico o fisso, poiché tende ad avere conseguenze drastiche sulla velocità di addestramento e sull'utilizzo della memoria.
Dipendenze dagli iperparametri scientifici
In alcuni casi, i set di iperparametri di disturbo e fissi dipendono dai valori degli iperparametri scientifici. Ad esempio, supponiamo che tu stia cercando di determinare quale ottimizzatore in Nesterov momentum e Adam produce l'errore di convalida più basso. In questo caso:
- L'iperparametro scientifico è l'ottimizzatore, che assume i valori
{"Nesterov_momentum", "Adam"}
- Il valore
optimizer="Nesterov_momentum"
introduce gli iperparametri{learning_rate, momentum}
, che potrebbero essere iperparametri di disturbo o fissi. - Il valore
optimizer="Adam"
introduce gli iperparametri{learning_rate, beta1, beta2, epsilon}
, che potrebbero essere iperparametri di disturbo o fissi.
Gli iperparametri presenti solo per determinati 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
denominato 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
funzionano bene in ciascuno degli ottimizzatori è in genere diverso di diversi ordini
di grandezza.
Crea un insieme di studi
Dopo aver identificato gli iperparametri scientifici e di disturbo, devi progettare uno studio o una sequenza di studi per fare progressi verso l'obiettivo sperimentale. Uno studio specifica un insieme di configurazioni degli iperparametri da eseguire per l'analisi successiva. Ogni configurazione viene chiamata prova. La creazione di uno studio in genere prevede la scelta di quanto segue:
- Gli iperparametri che variano nelle prove.
- I valori che possono assumere questi iperparametri (lo spazio di ricerca).
- Il numero di prove.
- Un algoritmo di ricerca automatizzato per campionare così tante prove dallo spazio di ricerca.
In alternativa, puoi creare uno studio specificando manualmente l'insieme di configurazioni degli iperparametri.
Lo scopo degli studi è quello di:
- Esegui la pipeline con valori diversi degli iperparametri scientifici.
- "Ottimizzare" (o "ottimizzare") gli iperparametri di disturbo in modo che i confronti tra diversi valori degli iperparametri scientifici siano il più equi possibile.
Nel caso più semplice, creeresti uno studio separato per ogni configurazione dei parametri scientifici, in cui ogni studio regola gli iperparametri di disturbo. Ad esempio, se il tuo obiettivo è selezionare l'ottimizzatore migliore tra Nesterov momentum e Adam, puoi creare due studi:
- Uno studio in cui
optimizer="Nesterov_momentum"
e gli iperparametri di disturbo sono{learning_rate, momentum}
- Un altro studio in cui
optimizer="Adam"
e gli iperparametri di disturbo sono{learning_rate, beta1, beta2, epsilon}
.
Confronta i due ottimizzatori selezionando la prova con il rendimento migliore di ogni studio.
Puoi utilizzare qualsiasi algoritmo di ottimizzazione senza gradiente, inclusi metodi come l'ottimizzazione bayesiana o gli algoritmi evolutivi, per ottimizzare gli iperparametri di disturbo. Tuttavia, preferiamo utilizzare la ricerca quasi casuale nella fase di esplorazione della messa a punto per i vari vantaggi che offre in questo contesto. Al termine dell'esplorazione, ti consigliamo di utilizzare un software di ottimizzazione bayesiana all'avanguardia (se disponibile).
Considera un caso più complesso in cui vuoi confrontare un numero elevato di valori degli iperparametri scientifici, ma non è pratico eseguire così tanti studi indipendenti. In questo caso, puoi procedere nel seguente modo:
- Includi i parametri scientifici nello stesso spazio di ricerca degli iperparametri di disturbo.
- Utilizza un algoritmo di ricerca per campionare i valori degli iperparametri scientifici e di disturbo in un unico 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 di disturbo non sia lo stesso per tutti i valori degli iperparametri scientifici. In questo caso, la nostra preferenza per l'utilizzo della ricerca quasi casuale rispetto a strumenti di ottimizzazione black box più sofisticati è ancora più forte, poiché garantisce che verranno campionati in modo uniforme valori diversi degli iperparametri scientifici. Indipendentemente dall'algoritmo di ricerca, assicurati che la ricerca dei parametri scientifici venga eseguita in modo uniforme.
Trovare un equilibrio tra esperimenti informativi e convenienti
Quando progetti uno studio o una sequenza di studi, assegna un budget limitato per raggiungere adeguatamente i seguenti tre obiettivi:
- Confrontare un numero sufficiente di valori diversi degli iperparametri scientifici.
- Ottimizzazione degli iperparametri di disturbo su uno spazio di ricerca sufficientemente ampio.
- Campionamento dello spazio di ricerca degli iperparametri di disturbo in modo sufficientemente denso.
Più riesci a raggiungere questi tre obiettivi, più approfondimenti puoi estrarre dall'esperimento. Il confronto del maggior numero possibile di valori degli iperparametri scientifici amplia l'ambito delle informazioni che ottieni dall'esperimento.
L'inclusione del maggior numero possibile di iperparametri di disturbo e la possibilità di variare ciascun iperparametro di disturbo in un intervallo il più ampio possibile aumenta la certezza che esista un valore "buono" degli iperparametri di disturbo nello spazio di ricerca per ogni configurazione degli iperparametri scientifici. In caso contrario, potresti effettuare confronti ingiusti tra i valori degli iperparametri scientifici non cercando possibili regioni dello spazio degli iperparametri di disturbo in cui potrebbero trovarsi valori migliori per alcuni valori dei parametri scientifici.
Campiona lo spazio di ricerca degli iperparametri di disturbo nel modo più denso possibile. In questo modo, aumenta la probabilità che la procedura di ricerca trovi impostazioni valide per gli iperparametri problematici che si trovano nello spazio di ricerca. In caso contrario, potresti effettuare confronti ingiusti tra i valori dei parametri scientifici, perché alcuni valori sono più fortunati con il campionamento degli iperparametri di disturbo.
Purtroppo, i miglioramenti in una qualsiasi di queste tre dimensioni richiedono una delle seguenti azioni:
- Aumentando il numero di prove, e quindi il costo delle risorse.
- Trovare un modo per risparmiare risorse in una delle altre dimensioni.
Ogni problema ha le sue peculiarità e i suoi vincoli di calcolo, quindi l'allocazione delle risorse per questi tre obiettivi richiede un certo livello di conoscenza del dominio. Dopo aver eseguito uno studio, cerca sempre di capire se gli iperparametri di disturbo sono stati ottimizzati in modo sufficiente. ovvero la ricerca ha esplorato uno spazio sufficientemente ampio per confrontare in modo equo gli iperparametri scientifici (come descritto in modo più dettagliato nella sezione successiva).
Imparare dai risultati sperimentali
Consiglio: oltre a cercare di raggiungere l'obiettivo scientifico originale di ogni gruppo di esperimenti, esamina un elenco di controllo di domande aggiuntive. Se riscontri problemi, rivedi ed esegui nuovamente gli esperimenti.
In definitiva, ogni gruppo di esperimenti ha un obiettivo specifico. Devi valutare le prove fornite dagli esperimenti in relazione a questo obiettivo. Tuttavia, se poni le domande giuste, spesso puoi trovare problemi da correggere prima che un determinato insieme di esperimenti possa progredire verso il suo obiettivo originale. Se non poni queste domande, potresti trarre conclusioni errate.
Poiché l'esecuzione di esperimenti può essere costosa, devi anche estrarre altre informazioni utili da ogni gruppo di esperimenti, anche se non sono immediatamente pertinenti all'obiettivo attuale.
Prima di analizzare un determinato insieme di esperimenti per fare progressi verso il loro obiettivo originale, poniti le seguenti domande aggiuntive:
- Lo spazio di ricerca è abbastanza grande? Se il punto ottimale di uno studio si trova vicino al limite 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 più ampio.
- Hai campionato un numero sufficiente di punti dallo spazio di ricerca? In caso contrario, esegui più punti o poni obiettivi di ottimizzazione meno ambiziosi.
- Quale frazione delle prove in ogni studio non è fattibile? ovvero quali prove divergono, ottengono valori di perdita molto negativi o non vengono eseguite perché violano un vincolo implicito? Quando una frazione molto grande di punti in uno studio non è fattibile, regola lo spazio di ricerca per evitare di campionare questi punti, il che a volte richiede di riparametrizzare lo spazio di ricerca. In alcuni casi, un numero elevato di punti non fattibili può indicare un bug nel codice di addestramento.
- Il modello presenta problemi di ottimizzazione?
- Cosa puoi imparare dalle curve di addestramento delle migliori prove? Ad esempio, le prove migliori hanno curve di addestramento coerenti con l'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 o intraprendere altre azioni correttive.
Dopo aver risposto alle domande precedenti, puoi valutare le prove fornite dagli esperimenti in relazione all'obiettivo originale, ad esempio valutare se una modifica è utile.
Identificare i limiti dello spazio di ricerca errati
Uno spazio di ricerca è sospetto se il punto migliore campionato è vicino al suo confine. Potresti trovare un punto ancora migliore se espandi il raggio di ricerca in quella direzione.
Per controllare i limiti dello spazio di ricerca, ti consigliamo di tracciare le prove completate su quelli che chiamiamo grafici degli assi degli iperparametri di base. In questi grafici, tracciamo il valore dell'obiettivo di convalida rispetto a uno degli iperparametri (ad esempio, il tasso di apprendimento). Ogni punto del grafico corrisponde a una singola prova.
Il valore dell'obiettivo di convalida per ogni prova dovrebbe in genere essere il migliore valore raggiunto durante l'addestramento.
Figura 1: esempi di limiti dello spazio di ricerca non validi e validi.
I grafici nella Figura 1 mostrano il tasso di errore (più basso è meglio) rispetto al tasso di apprendimento iniziale. Se i punti migliori si raggruppano verso il bordo di uno spazio di ricerca (in una determinata dimensione), potrebbe essere necessario espandere i limiti dello spazio di ricerca finché il punto migliore osservato non è più vicino al limite.
Spesso, uno studio include prove "non fattibili" che divergono o danno risultati molto scarsi (contrassegnati con X rosse nella Figura 1). Se tutte le prove non sono fattibili per tassi di apprendimento superiori a un determinato valore di soglia e se le prove con il rendimento migliore hanno tassi di apprendimento al limite di questa regione, il modello potrebbe presentare problemi di stabilità che gli impediscono di accedere a tassi di apprendimento più elevati.
Non vengono campionati abbastanza punti nello spazio di ricerca
In generale, può essere molto difficile sapere se lo spazio di ricerca è stato campionato in modo sufficientemente denso. 🤖 Eseguire più prove è meglio che eseguirne meno, ma più prove generano un costo aggiuntivo ovvio.
Poiché è difficile sapere quando hai raccolto un campione sufficiente, ti consigliamo di:
- Assaggia ciò che puoi permetterti.
- Calibrare la tua confidenza intuitiva osservando ripetutamente vari grafici degli assi degli iperparametri e cercando di capire quanti punti si trovano nella regione "buona" dello spazio di ricerca.
Esamina le curve di addestramento
Riepilogo: l'esame delle curve di perdita è un modo semplice per identificare le modalità di errore comuni e può aiutarti a dare la priorità alle potenziali azioni successive.
In molti casi, l'obiettivo principale degli esperimenti richiede solo di considerare l'errore di convalida di ogni prova. Tuttavia, fai attenzione quando riduci ogni prova a un singolo numero, perché questo approccio può nascondere dettagli importanti su ciò che sta accadendo sotto la superficie. Per ogni studio, ti consigliamo vivamente di esaminare le curve di perdita di almeno le migliori prove. Anche se non è necessario per raggiungere l'obiettivo principale dell'esperimento, esaminare le curve di perdita (inclusa la perdita di addestramento e la perdita di convalida) è un buon modo per identificare le modalità di errore comuni e può aiutarti a dare la priorità alle azioni da intraprendere successivamente.
Quando esamini le curve di perdita, concentrati sulle seguenti domande:
Qualcuno dei tentativi mostra un overfitting problematico? L'overfitting problematico si verifica quando l'errore di convalida inizia ad aumentare durante l'addestramento. Nelle impostazioni sperimentali in cui ottimizzi gli iperparametri di disturbo selezionando la prova "migliore" per ogni impostazione degli iperparametri scientifici, verifica la presenza di un overfitting problematico in almeno ciascuna delle prove migliori corrispondenti alle impostazioni degli iperparametri scientifici che stai confrontando. Se una delle prove migliori mostra un overfitting problematico, esegui una o entrambe le seguenti operazioni:
- Esegui di nuovo l'esperimento con tecniche di regolarizzazione aggiuntive
- Riassegna i parametri di regolarizzazione esistenti prima di confrontare i valori degli iperparametri scientifici. Ciò potrebbe non valere se gli iperparametri scientifici includono parametri di regolarizzazione, poiché in questo caso non sarebbe sorprendente se le impostazioni a bassa intensità di questi parametri di regolarizzazione causassero un overfitting problematico.
La riduzione dell'overfitting è spesso semplice utilizzando tecniche di regolarizzazione comuni che aggiungono una complessità del codice minima o calcoli aggiuntivi (ad esempio, regolarizzazione del dropout, smoothing delle etichette, decadimento del peso). Pertanto, in genere è banale aggiungerne uno o più al prossimo ciclo di esperimenti. Ad esempio, se l'iperparametro scientifico è "numero di strati nascosti" e la prova migliore che utilizza il numero più elevato di strati nascosti mostra un overfitting problematico, ti consigliamo di riprovare con una regolarizzazione aggiuntiva anziché selezionare immediatamente il numero inferiore di strati nascosti.
Anche se nessuna delle prove "migliori" mostra un 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 mostrano. In altre parole, la selezione della migliore prova favorisce le configurazioni con una maggiore regolarizzazione. Tuttavia, qualsiasi cosa che peggiori l'addestramento può fungere da regolarizzatore, anche se non era previsto. Ad esempio, la scelta di un tasso di apprendimento più piccolo può regolarizzare l'addestramento ostacolando il processo 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 valori "errati" di alcuni degli iperparametri scientifici o di disturbo.
Si verifica una varianza elevata passo dopo passo nell'errore di addestramento o convalida nella fase avanzata dell'addestramento? In questo caso, potrebbe interferire con:
- La tua capacità di confrontare diversi valori degli iperparametri scientifici. Questo perché ogni prova termina in modo casuale su un passaggio "fortunato" o "sfortunato".
- La tua capacità di riprodurre il risultato della migliore prova in produzione. Questo perché il modello di produzione potrebbe non terminare allo stesso passaggio "fortunato" dello studio.
Le cause più probabili della varianza passo dopo passo sono:
- Varianza del batch dovuta al campionamento casuale degli esempi dal set di addestramento per ogni batch.
- Set di convalida di piccole dimensioni
- Utilizzo di un tasso di apprendimento troppo elevato nella fase avanzata dell'addestramento.
I possibili rimedi includono:
- Aumentare la dimensione del batch.
- Ottenere più dati di convalida.
- Utilizzo del decadimento del tasso di apprendimento.
- Utilizzo della media di Polyak.
Le prove continuano a migliorare al termine dell'addestramento? In questo caso, ti trovi nel regime "compute bound" e potresti trarre vantaggio dall'aumento del numero di passaggi di addestramento o dalla modifica della pianificazione del tasso di apprendimento.
Il rendimento dei set di addestramento e convalida si è saturato molto prima dell'ultimo passaggio di addestramento? In questo caso, significa che ti trovi nel regime "non compute-bound" e che potresti essere in grado di ridurre il numero di passaggi di addestramento.
Oltre a questo elenco, molti altri comportamenti possono diventare evidenti esaminando le curve di perdita. Ad esempio, l'aumento della perdita di addestramento durante l'addestramento di solito indica un bug nella pipeline di addestramento.
Rilevare se una modifica è utile con i grafici di isolamento
Figura 2: grafico di isolamento che analizza il miglior valore di decadimento del peso per ResNet-50 addestrato su ImageNet.
Spesso, l'obiettivo di una serie di esperimenti è confrontare diversi valori di un iperparametro scientifico. Ad esempio, supponiamo di voler determinare il valore del decadimento del peso che genera l'errore di convalida migliore. Un grafico di isolamento è un caso speciale del grafico di base dell'asse degli iperparametri. Ogni punto di un grafico di isolamento corrisponde al rendimento della migliore prova in alcuni (o tutti) gli iperparametri di disturbo. In altre parole, traccia le prestazioni del modello dopo aver "ottimizzato" gli iperparametri di disturbo.
Un grafico di isolamento semplifica il confronto tra diversi valori dell'iperparametro scientifico. Ad esempio, il grafico di isolamento nella Figura 2 rivela 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 è determinare se includere o meno il decadimento del peso, confronta il punto migliore di questo grafico con la baseline di nessun decadimento del peso. Per un confronto equo, anche il baseline deve avere un tasso di apprendimento altrettanto ben ottimizzato.
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 raggruppando i valori dell'asse x del grafico di base dell'asse degli iperparametri e prendendo la prova migliore in ogni sezione verticale definita dai bucket.
Automatizzare i grafici utili in modo generico
Più è difficile generare grafici, meno è probabile che tu li esamini quanto dovresti. Pertanto, ti consigliamo di configurare la tua infrastruttura in modo che produca automaticamente il maggior numero possibile di grafici. Come minimo, ti consigliamo di generare automaticamente grafici degli assi degli iperparametri di base per tutti gli iperparametri che vari in un esperimento.
Inoltre, consigliamo di produrre automaticamente le curve di perdita per tutte le prove. Inoltre, consigliamo di semplificare il più possibile la ricerca delle migliori prove di ogni studio e di esaminare le relative curve di perdita.
Puoi aggiungere molti altri grafici e visualizzazioni potenziali utili. Per parafrasare Geoffrey Hinton:
Ogni volta che tracci qualcosa di nuovo, impari qualcosa di nuovo.
Stabilisci se adottare la modifica proposta
Riepilogo: quando decidi se apportare una modifica al nostro modello o alla procedura di addestramento o adottare una nuova configurazione degli iperparametri, tieni presente le diverse fonti di variazione dei risultati.
Quando si tenta di migliorare un modello, una particolare modifica candidata potrebbe inizialmente ottenere un errore di convalida migliore rispetto a una configurazione esistente. Tuttavia, ripetere l'esperimento potrebbe non dimostrare alcun vantaggio coerente. Informalmente, le fonti più importanti di risultati incoerenti possono essere raggruppate nelle seguenti categorie generali:
- Varianza della procedura di addestramento, varianza del riaddestramento o varianza della prova: la variazione tra le esecuzioni di addestramento che utilizzano gli stessi iperparametri, ma seed casuali diversi. Ad esempio, inizializzazioni casuali diverse, permutazioni dei dati di addestramento, maschere di dropout, pattern di operazioni di aumento dei dati e ordinamenti di operazioni aritmetiche parallele sono tutte potenziali fonti di varianza della prova.
- Varianza della ricerca degli iperparametri o varianza dello studio: la variazione dei risultati causata dalla nostra procedura di selezione degli iperparametri. Ad esempio, potresti eseguire lo stesso esperimento con uno spazio di ricerca specifico, ma con due seed diversi per la ricerca quasi casuale e finire per selezionare valori iperparametri diversi.
- Varianza della raccolta e del campionamento dei dati: la varianza dovuta a qualsiasi tipo di divisione casuale in dati di addestramento, convalida e test o la varianza dovuta al processo di generazione dei dati di addestramento in generale.
È vero che puoi confrontare i tassi di errore di convalida stimati su un set di convalida finito utilizzando test statistici meticolosi. Tuttavia, spesso la varianza della prova da sola può produrre differenze statisticamente significative tra due diversi modelli addestrati che utilizzano le stesse impostazioni degli iperparametri.
Ci preoccupa maggiormente la varianza dello studio quando cerchiamo di trarre conclusioni che vanno 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 visto casi in cui la varianza dello studio è maggiore di quella della prova e casi in cui è molto inferiore. Pertanto, prima di adottare una modifica del candidato, valuta la possibilità di eseguire la migliore prova N volte per caratterizzare la varianza della prova da esecuzione a esecuzione. In genere, puoi cavartela solo con la riqualificazione della varianza della prova dopo modifiche importanti alla pipeline, ma in alcuni casi potresti aver bisogno di stime più recenti. In altre applicazioni, caratterizzare la varianza della prova è troppo costoso per valerne la pena.
Anche se vuoi adottare solo le modifiche (incluse le nuove configurazioni degli iperparametri) che producono miglioramenti reali, non è giusto richiedere la certezza assoluta che una determinata modifica sia utile. Pertanto, se un nuovo punto iperparametro (o un'altra modifica) ottiene un risultato migliore rispetto alla base di riferimento (tenendo conto della varianza del riaddestramento sia del nuovo punto sia della base di riferimento nel miglior modo possibile), probabilmente dovresti adottarlo come nuova base di riferimento per i confronti futuri. Tuttavia, ti consigliamo di adottare solo le modifiche che producono miglioramenti che superano qualsiasi complessità aggiuntiva.
Al termine dell'esplorazione
Riepilogo: gli strumenti di ottimizzazione bayesiana sono un'opzione interessante una volta terminata la ricerca di spazi di ricerca validi e dopo aver deciso quali iperparametri vale la pena ottimizzare.
Alla fine, le tue priorità cambieranno: non ti concentrerai più sul problema di ottimizzazione, ma sulla produzione di una singola configurazione ottimale da lanciare o utilizzare in altro modo. A questo punto, dovrebbe esserci uno spazio di ricerca raffinato che contenga comodamente la regione locale intorno alla migliore prova osservata e che sia stato campionato in modo adeguato. Il lavoro di esplorazione dovrebbe aver rivelato gli iperparametri più essenziali da ottimizzare e i loro intervalli ragionevoli che puoi utilizzare per costruire uno spazio di ricerca per uno studio di ottimizzazione automatica finale utilizzando un budget di ottimizzazione il più ampio possibile.
Poiché non ti interessa più massimizzare le informazioni sul problema di ottimizzazione, molti dei vantaggi della ricerca quasi casuale non si applicano più. Pertanto, devi utilizzare gli strumenti di ottimizzazione bayesiana per trovare automaticamente la migliore configurazione degli iperparametri. Open-Source Vizier implementa una serie di algoritmi sofisticati per l'ottimizzazione dei modelli di ML, inclusi gli algoritmi di ottimizzazione bayesiana.
Supponiamo che lo spazio di ricerca contenga un volume non trascurabile di punti divergenti, ovvero punti che ottengono una perdita di addestramento NaN o addirittura una perdita di addestramento di molte deviazioni standard peggiore della media. In questo caso, ti consigliamo di utilizzare strumenti di ottimizzazione black box che gestiscono correttamente le prove divergenti. Per un modo eccellente di risolvere questo problema, consulta la sezione Ottimizzazione bayesiana con vincoli sconosciuti. Vizier open source supporta la marcatura dei punti divergenti contrassegnando le prove come non fattibili, anche se potrebbe non utilizzare il nostro approccio preferito di Gelbart et al., a seconda della configurazione.
Al termine dell'esplorazione, valuta il rendimento sul set di test. In linea di principio, potresti persino includere il set di convalida nel set di addestramento e riaddestrare la migliore configurazione trovata con l'ottimizzazione bayesiana. Tuttavia, questa operazione è appropriata solo se non sono previsti lanci futuri con questo specifico carico di lavoro (ad esempio, una competizione Kaggle una tantum).