Panoramica dell'ottimizzazione degli iperparametri

Questa pagina descrive i concetti relativi all'ottimizzazione degli iperparametri, il potenziamento automatizzato dei modelli fornito da AI Platform Training. L'ottimizzazione degli iperparametri sfrutta 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, che massimizzano l'accuratezza predittiva del modello.

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 (detti 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 e fare previsioni con precisione su nuove istanze di dati simili. Tuttavia, i valori nei dati di input non diventano mai direttamente parte del modello.

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

  • Gli iperparametri sono le variabili che regolano il processo di addestramento. Ad esempio, parte della configurazione di una rete neurale profonda sta nel decidere quanti livelli nascosti di nodi utilizzare tra il livello di input e quello di output e quanti nodi dovrebbe usare 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 sono ottimizzati (potresti dire "ottimizzati") in base al processo di addestramento: esegui i dati attraverso le operazioni del modello, confronti la previsione risultante con il valore effettivo di ogni istanza dati, valuti la precisione e apporti modifiche finché non trovi i valori migliori. Gli iperparametri sono ottimizzati eseguendo l'intero job di addestramento, esaminando l'accuratezza aggregata e effettuando aggiustamenti. In entrambi i casi, modifichi la composizione del modello nel tentativo di trovare la combinazione migliore per gestire il problema.

Senza una tecnologia automatizzata come l'ottimizzazione degli iperparametri di AI Platform Training, devi apportare modifiche manuali agli iperparametri nel corso di molte esecuzioni di addestramento per arrivare ai valori ottimali. L'ottimizzazione degli iperparametri semplifica e rende meno noioso il processo di determinazione delle impostazioni degli iperparametri migliori.

Come funziona l'ottimizzazione degli iperparametri

L'ottimizzazione degli iperparametri esegue più prove in un singolo job di addestramento. Ogni prova è un'esecuzione completa dell'applicazione di addestramento con valori per gli iperparametri scelti, impostati entro i limiti da te specificati. Il servizio di formazione di AI Platform Training tiene traccia dei risultati di ogni prova e apporta aggiustamenti per le prove successive. Al termine del job, puoi ottenere un riepilogo di tutte le prove insieme alla configurazione più efficace dei valori in base ai criteri specificati.

L'ottimizzazione degli iperparametri richiede una comunicazione esplicita tra il servizio di addestramento AI Platform Training e la tua applicazione di addestramento. L'applicazione di addestramento definisce tutte le informazioni necessarie per il modello. Devi definire gli iperparametri (variabili) da regolare e un valore target per ciascuno di essi.

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

Oltre all'ottimizzazione bayesiana, AI Platform Training ottimizza tutti i job di ottimizzazione degli iperparametri. Se esegui l'ottimizzazione degli iperparametri in base a modelli simili, modificando solo la funzione obiettivo o aggiungendo una nuova colonna di input, AI Platform Training è in grado di migliorare nel tempo e rendere più efficiente l'ottimizzazione degli iperparametri.

Cosa ottimizza l'ottimizzazione degli iperparametri

L'ottimizzazione degli iperparametri ottimizza una singola variabile di destinazione, chiamata anche metrica iperparametro, da te specificata. L'accuratezza del modello, così come calcolata da un pass di valutazione, è una metrica comune. La metrica deve essere un valore numerico e puoi specificare se vuoi ottimizzare il modello per massimizzare o ridurre al minimo la metrica.

Quando avvii un job con l'ottimizzazione degli iperparametri, devi stabilire il nome della metrica iperparametri. Questo è il nome che assegni 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 del job in modo che corrisponda al nome scelto.

In che modo AI Platform Training ottiene la tua 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 container 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 la regolazione degli iperparametri, puoi impostare gli iperparametri in base al significato che preferisci nell'applicazione di addestramento. Ad esempio, puoi configurare gli iperparametri passando gli argomenti della riga di comando al modulo dell'applicazione principale o inviarli all'applicazione in un file di configurazione.

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

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

  • Usa il valore trasmesso 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 tipo e l'intervallo di valori da provare. Puoi identificare ciascun 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 da dare su come scegliere gli iperparametri da ottimizzare. Se hai esperienza con la tecnica di machine learning che utilizzi, potresti avere informazioni approfondite sul comportamento dei suoi iperparametri. Potresti anche ricevere consigli dalle community di machine learning.

Qualunque sia la scelta, è importante comprenderne le implicazioni. Ogni iperparametro che scegli di ottimizzare può potenzialmente aumentare il numero di prove richieste per un job di ottimizzazione riuscito. Quando ti addestra con AI Platform Training, ti viene addebitato un costo per l'intera durata del job; una scelta accurata di iperparametri da ottimizzare può ridurre i tempi e i costi di addestramento del modello.

Tipi di iperparametri

I tipi di iperparametri supportati sono elencati nella documentazione di riferimento dei job. Nell'oggetto ParameterSpec, specifichi il tipo per ogni iperparametro e i relativi intervalli di valori, come descritto nella seguente tabella:

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

Scalabilità degli iperparametri

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

  • UNIT_LINEAR_SCALE
  • UNIT_LOG_SCALE
  • UNIT_REVERSE_LOG_SCALE

Algoritmi di ricerca

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

I valori disponibili sono:

  • ALGORITHM_UNSPECIFIED: restituisce lo stesso comportamento di quando non specifichi 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 così la tecnica più efficace per il tuo set di iperparametri.

  • GRID_SEARCH: una semplice ricerca nella griglia all'interno dello spazio possibile. Questa opzione è particolarmente utile se vuoi specificare un numero di prove maggiore del numero di punti nello spazio fattibile. In questi casi, se non specifichi una ricerca nella griglia, 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 fattibile.

Passaggi successivi