Comprensione delle strategie di ottimizzazione degli iperparametri disponibili in Amazon SageMaker AI
Quando crei sistemi di Machine Learning complessi, ad esempio reti neurali di Deep Learning, è impossibile esplorare tutte le combinazioni possibili. L'ottimizzazione degli iperparametri può accelerare la produttività provando molte varianti di un modello. Cerca automaticamente il modello migliore concentrandosi sulle combinazioni più promettenti di valori degli iperparametri all'interno degli intervalli specificati. Per ottenere buoni risultati, devi scegliere gli intervalli giusti. Questa pagina fornisce una breve spiegazione delle varie strategie di ottimizzazione degli iperparametri che puoi utilizzare con Amazon SageMaker AI.
Per capire come interagire con l'ottimizzazione degli iperparametri utilizza la guida API Reference. Puoi utilizzare le strategie di ottimizzazione descritte in questa pagina con le API HyperParameterTuningJobConfig e HyperbandStrategyConfig.
Nota
Poiché l’algoritmo è stocastico, è possibile che il modello di ottimizzazione degli iperparametri non riesca a convergere sulla risposta migliore. Ciò può verificarsi anche se la migliore combinazione possibile di valori rientra negli intervalli scelti.
Ricerca a griglia
Quando si utilizza la ricerca a griglia, l'ottimizzazione degli iperparametri sceglie combinazioni di valori dall'intervallo di valori categorici specificato al momento della creazione del processo. Quando si utilizza la strategia di ricerca a griglia sono supportati solo i parametri categorici. Non è necessario specificare MaxNumberOfTrainingJobs. Il numero di job di addestramento creati dallo stesso processo di ottimizzazione viene calcolato automaticamente come numero totale di combinazioni categoriche distinte possibili. Se specificato, il valore di MaxNumberOfTrainingJobs deve essere uguale al numero totale di combinazioni categoriche distinte possibili.
Ricerca casuale
Quando si utilizza una ricerca random, l’ottimizzazione degli iperparametri sceglie una combinazione casuale di valori compresi in intervalli specificati per gli iperparametri di ogni job di addestramento che avvia. La scelta dei valori degli iperparametri non dipende dai risultati dei job di addestramento precedenti. Di conseguenza, puoi eseguire il numero massimo di job di addestramento simultanei senza influire sulle prestazioni dell’ottimizzazione.
Per un notebook di esempio che utilizza la ricerca casuale, consulta il notebook Ricerca casuale e dimensionamento degli iperparametri con SageMaker XGBoost e Ottimizzazione automatica dei modelli
Ottimizzazione bayesiana
L'ottimizzazione bayesiana considera l'ottimizzazione degli iperparametri come un problema di regressione. Dato un set di caratteristiche di input (iperparametri), l'ottimizzazione degli iperparametri ottimizza un modello per il parametro scelto. Per risolvere un problema di regressione, l’ottimizzazione degli iperparametri cerca di indovinare quali combinazioni di iperparametri hanno maggiori probabilità di ottenere i migliori risultati. Quindi esegue dei job di addestramento per testare questi valori. Dopo aver provato un set di valori per gli iperparametri, l'ottimizzazione degli iperparametri utilizza la regressione per scegliere il set di valori successivo da testare.
L’ottimizzazione degli iperparametri utilizza un’implementazione Amazon SageMaker AI dell’ottimizzazione bayesiana.
Quando si scelgono gli iperparametri migliori per il processo di addestramento successivo, l'ottimizzazione degli iperparametri prende in considerazione tutto ciò che sa sul problema, fino al momento attuale. A volte, sceglie una combinazione di valori di iperparametri simile alla combinazione che ha generato il miglior processo di addestramento precedente per migliorare le prestazioni in modo incrementale. In questo modo, l’ottimizzazione degli iperparametri può utilizzare i migliori risultati noti. Altre volte, sceglie un set di valori di iperparametri molto diversi da quelli che ha già provato. Ciò consente di esplorare l'intervallo di valori degli iperparametri per cercare nuove aree non ancora completamente comprese. Il compromesso tra esplorazione e sfruttamento è comune in molti problemi di Machine Learning.
Per ulteriori informazioni sull'ottimizzazione bayesiana, vedi quanto segue:
Argomenti di base sull'ottimizzazione bayesiana
Velocizzazione dell'ottimizzazione bayesiana
Modellazione avanzata e trasferimento dell'apprendimento
Hyperband
Hyperband è una strategia di ottimizzazione basata sulla multi-fedeltà che rialloca dinamicamente le risorse. Hyperband utilizza sia i risultati intermedi che quelli finali dei processi di addestramento per riassegnare le epoche alle configurazioni di iperparametri ben utilizzate e interrompere automaticamente quelle che hanno prestazioni inferiori. Inoltre, si adatta perfettamente all'utilizzo di molti processi di addestramento paralleli. Queste caratteristiche possono accelerare in modo significativo l'ottimizzazione degli iperparametri rispetto alla ricerca casuale e alle strategie di ottimizzazione bayesiana.
Hyperband deve essere usato solo per ottimizzare algoritmi iterativi che pubblicano risultati a diversi livelli di risorse. Ad esempio, Hyperband può essere utilizzato per ottimizzare una rete neurale per la classificazione delle immagini che pubblica parametri di precisione dopo ogni epoca.
Per ulteriori informazioni su Hyperband, vedi i seguenti collegamenti:
Hyperband con arresto anticipato
I processi di addestramento possono essere interrotti in anticipo quando è improbabile che migliorino i parametri obiettivi del processo di ottimizzazione degli iperparametri. Questo può aiutare a ridurre i tempi di calcolo e a evitare un overfitting del modello. Hyperband utilizza un meccanismo interno avanzato per applicare l'arresto anticipato. Il parametro TrainingJobEarlyStoppingType nell’API HyperParameterTuningJobConfig deve essere impostato su OFF quando si utilizza la funzionalità di arresto anticipato interna di Hyperband.
Nota
L'ottimizzazione degli iperparametri potrebbe non migliorare il modello. È uno strumento avanzato per la creazione di soluzioni automatiche. In quanto tale, dovrebbe essere considerato parte del processo di sviluppo scientifico.