Panoramica dell'ottimizzazione degli iperparametri

Questa pagina descrive i concetti coinvolti nell'ottimizzazione degli iperparametri, ovvero il potenziatore del modello automatizzato fornito da AI Platform Training. L'ottimizzazione degli iperparametri usa l'infrastruttura di elaborazione di Google Cloud per testare diverse configurazioni degli iperparametri durante l'addestramento del modello. Può fornire valori ottimizzati per gli iperparametri, il che massimizza l'accuratezza predittiva del modello.

Che cos'è un iperparametro?

Gli iperparametri contengono i dati che regolano il processo di addestramento stesso.

L'applicazione di addestramento gestisce tre categorie di dati durante l'addestramento del modello:

  • I dati di input (chiamati anche dati di addestramento) sono una raccolta di singoli record (istanze) contenenti le funzionalità importanti per il problema di machine learning. Questi dati vengono utilizzati durante l'addestramento per configurare il modello in modo che effettui previsioni accurate su nuove istanze di dati simili. Tuttavia, i valori nei dati di input non fanno mai parte direttamente del modello.

  • I parametri del modello sono le variabili utilizzate dalla tecnica di machine learning scelta per adattarsi ai dati. Ad esempio, una rete neurale profonda (DNN) è composta da nodi di elaborazione (neuroni), ciascuno con un'operazione eseguita sui dati mentre attraversano la rete. Quando la rete neurale profonda è addestrata, ogni nodo ha un valore di peso che indica al modello l'impatto sulla previsione finale. Questi pesi sono un esempio dei parametri del tuo modello. Per molti versi, i parametri del modello sono il modello: sono ciò che distingue il tuo modello specifico da altri modelli dello stesso tipo che lavorano su dati simili.

  • Gli iperparametri sono le variabili che regolano la procedura di addestramento stessa. Ad esempio, la configurazione di una rete neurale profonda prevede la decisione su quanti livelli nascosti di nodi utilizzare tra lo strato di input e lo strato di output e su quanti nodi deve utilizzare ogni livello. Queste variabili non sono direttamente correlate ai dati di addestramento. Sono variabili di configurazione. Tieni presente che i parametri cambiano durante un job di addestramento, mentre gli iperparametri sono solitamente costanti durante un job.

I parametri del modello vengono ottimizzati (si potrebbe dire "ottimizzati") dal processo di addestramento: esegui i dati attraverso le operazioni del modello, confronta la previsione risultante con il valore effettivo per ogni istanza di dati, valuta l'accuratezza e modifica fino a trovare i valori migliori. Gli iperparametri vengono ottimizzati eseguendo l'intero job di addestramento, esaminando l'accuratezza aggregata e apportando le modifiche necessarie. In entrambi i casi, modifichi la composizione del modello nel tentativo di trovare la combinazione migliore per gestire il problema.

Senza una tecnologia automatica come l'ottimizzazione degli iperparametri di AI Platform Training, devi apportare regolazioni manuali agli iperparametri nel corso di molte esecuzioni di addestramento per ottenere i valori ottimali. L'ottimizzazione degli iperparametri semplifica e velocizza la procedura di determinazione delle impostazioni degli iperparametri migliori.

Come funziona l'ottimizzazione degli iperparametri

L'ottimizzazione degli iperparametri funziona eseguendo più prove in un singolo job di addestramento. Ogni prova è un'esecuzione completa dell'applicazione di addestramento con i valori per gli iperparametri scelti, impostati entro i limiti specificati. Il servizio di addestramento di AI Platform Training tiene traccia dei risultati di ogni prova ed esegue aggiustamenti per le prove successive. Al termine del job, puoi visualizzare un riepilogo di tutte le prove, nonché la configurazione più efficace dei valori in base ai criteri specificati.

L'ottimizzazione degli iperparametri richiede una comunicazione esplicita tra il servizio di addestramento di AI Platform Training e la tua applicazione di addestramento. L'applicazione di addestramento definisce tutte le informazioni necessarie al modello. Devi definire gli iperparametri (variabili) che vuoi modificare e un valore target per ogni iperparametro.

Per scoprire in che modo AI Platform Training utilizza l'ottimizzazione bayesiana per la ottimizzazione degli iperparametri, leggi il post del blog Ottimizzazione degli iperparametri in Cloud Machine Learning Engine con l'ottimizzazione bayesiana.

Oltre all'ottimizzazione bayesiana, l'AI Platform Training esegue l'ottimizzazione tra i job di ottimizzazione degli iperparametri. Se esegui l'ottimizzazione degli iperparametri rispetto a modelli simili, modificando solo la funzione obiettivo o aggiungendo una nuova colonna di input, AI Platform Training può migliorare nel tempo e rendere l'ottimizzazione degli iperparametri più efficiente.

Che cosa ottimizza l'ottimizzazione degli iperparametri

L'ottimizzazione degli iperparametri ottimizza una singola variabile target, chiamata anche metrica iperparametro, specificata. L'accuratezza del modello, calcolata da un passaggio di valutazione, è una metrica comune. La metrica deve essere un valore numerico e puoi specificare se vuoi ottimizzare il modello per massimizzare o minimizzare la metrica.

Quando avvii un job con l'ottimizzazione degli iperparametri, stabilisci il nome della metrica dell'iperparametro. Si tratta del nome assegnato al riepilogo scalare che aggiungi all'applicazione di addestramento.

Il nome predefinito della metrica è training/hptuning/metric. Ti consigliamo di assegnare un nome personalizzato. L'unica differenza funzionale è che, se utilizzi un nome personalizzato, devi impostare il valore hyperparameterMetricTag nell'oggetto HyperparameterSpec nella richiesta di job in modo che corrisponda al nome scelto.

In che modo AI Platform Training ottiene la metrica

Per i modelli TensorFlow, il servizio di AI Platform Training monitora gli eventi di riepilogo di TensorFlow generati dall'applicazione di addestramento e recupera la metrica. Se il modello è stato creato con un altro framework o utilizza un contenuto personalizzato, devi utilizzare il pacchetto Python cloudml-hypertune per segnalare la metrica di addestramento ad AI Platform Training.

Il flusso dei valori degli iperparametri

Senza l'ottimizzazione degli iperparametri, puoi impostarli come preferisci nell'applicazione di addestramento. Ad esempio, puoi configurare gli iperparametri passando gli argomenti della riga di comando al modulo dell'applicazione principale o fornirli all'applicazione in un file di configurazione.

Quando utilizzi l'ottimizzazione degli iperparametri, devi utilizzare la seguente procedura per impostare i valori degli iperparametri che utilizzi per l'ottimizzazione:

  • Definisci un argomento della riga di comando nel modulo di addestramento principale per ogni iperparametro ottimizzato.

  • Utilizza il valore passato in questi argomenti per impostare l'iperparametro corrispondente nel codice TensorFlow dell'applicazione.

Quando configuri un job di addestramento con l'ottimizzazione degli iperparametri, definisci ogni iperparametro da ottimizzare, il relativo tipo e l'intervallo di valori da provare. Identifica ogni iperparametro utilizzando lo stesso nome dell'argomento corrispondente definito nel modulo principale. Il servizio di addestramento include argomenti della riga di comando che utilizzano questi nomi quando esegue l'applicazione.

Selezione degli iperparametri da ottimizzare

Esistono pochissimi consigli universali su come scegliere gli iperparametri da ottimizzare. Se hai esperienza con la tecnica di apprendimento automatico che stai utilizzando, potresti avere informazioni sul comportamento degli iperparametri. Potresti anche trovare consigli nelle community di machine learning.

Qualunque sia la tua scelta, è importante comprenderne le implicazioni. Ogni iperparametro che scegli di ottimizzare ha il potenziale di aumentare il numero di prove necessarie per un job di ottimizzazione riuscito. Quando ti alleni su AI Platform Training, ti viene addebitato il costo per la durata del job. Una scelta accurata degli iperparametri da ottimizzare può ridurre i tempi e i costi dell'addestramento del modello.

Tipi di iperparametri

I tipi di iperparametri supportati sono elencati nella documentazione di riferimento dei job. Nell'oggetto ParameterSpec, specifica il tipo per ogni iperparametro e gli intervalli di valore correlati come descritto nella tabella seguente:

Tipo Intervalli di valori Dati del valore
DOUBLE minValue e maxValue Valori in virgola mobile
INTEGER minValue e maxValue Valori interi
CATEGORICAL categoricalValues Elenco di stringhe di categoria
DISCRETE discreteValues Elenco di valori in ordine crescente

Scalatura degli iperparametri

Puoi specificare un tipo di scalatura da eseguire su un iperparametro. La scalata è consigliata per i tipi DOUBLE e INTEGER. I tipi di scalabilità disponibili sono:

  • UNIT_LINEAR_SCALE
  • UNIT_LOG_SCALE
  • UNIT_REVERSE_LOG_SCALE

Algoritmi della Ricerca

Puoi specificare un algoritmo di ricerca nell'oggetto HyperparameterSpec. Se non specifichi un algoritmo, il job utilizza l'algoritmo predefinito di AI Platform Training, che guida la ricerca dei parametri per arrivare alla soluzione ottimale con una ricerca più efficace nello spazio dei parametri.

I valori disponibili sono:

  • ALGORITHM_UNSPECIFIED: genera lo stesso comportamento che si ottiene quando non viene specificato un algoritmo di ricerca. AI Platform Training utilizza un algoritmo predefinito che applica l'ottimizzazione bayesiana per cercare nello spazio dei possibili valori degli iperparametri, ottenendo la tecnica più efficace per il tuo insieme di iperparametri.

  • GRID_SEARCH: una semplice ricerca a griglia all'interno dello spazio possibile. Questa opzione è particolarmente utile se vuoi specificare un numero di prove superiore al numero di punti nello spazio disponibile. In questi casi, se non specifichi una ricerca in tabella, l'algoritmo predefinito di AI Platform Training potrebbe generare suggerimenti duplicati. Per utilizzare la ricerca a griglia, tutti i parametri devono essere di tipo INTEGER, CATEGORICAL o DISCRETE.

  • RANDOM_SEARCH: una semplice ricerca casuale all'interno dello spazio disponibile.

Passaggi successivi