In questa pagina vengono descritti i concetti inclusi nell'ottimizzazione degli iperparametri, che è il potenziatore automatico del modello fornito da AI Platform Training. L'ottimizzazione degli iperparametri usa l'infrastruttura di elaborazione di Google Cloud per testare diverse configurazioni per l'addestramento del modello. Può fornire valori ottimizzati per gli iperparametri, massimizzando l'accuratezza predittiva del tuo 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 tuoi dati di input (chiamati anche dati di addestramento) sono una raccolta di singoli record (istanze) contenenti le funzionalità importanti per il tuo problema di machine learning. Questi dati vengono utilizzati durante l'addestramento per configurare il modello in modo da fare previsioni accurate sulle nuove istanze di dati simili. Tuttavia, i valori nei dati di input non vengono mai inseriti direttamente nel modello.
I parametri del modello sono le variabili utilizzate dalla tecnica di machine learning scelta per adattare i dati. Ad esempio, una rete neurale profonda (DNN) è composta da nodi di elaborazione (neuroni), ciascuno con un'operazione eseguita sui dati mentre viaggia attraverso la rete. Quando il DNN viene addestrato, ogni nodo ha un valore di peso che indica al modello l'impatto che ha sulla previsione finale. Questi valori sono un esempio dei parametri del tuo modello. Per molti aspetti, i parametri del modello sono il modello che contraddistingue il tuo modello specifico rispetto ad altri modelli dello stesso tipo che utilizzano dati simili.
Gli iperparametri sono le variabili che regolano il processo di addestramento stesso. Ad esempio, una parte della configurazione di una rete neurale profonda è decidere quanti livelli nascosti di nodi utilizzare tra il livello di input e il livello di output e quanti nodi devono essere utilizzati da 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 generalmente costanti durante un job.
I parametri del tuo modello sono ottimizzati (potresti dire "tuned") in base al 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 apporta modifiche fino a trovare i valori migliori. Gli iperparametri vengono ottimizzati eseguendo il tuo intero job di addestramento, esaminando l'accuratezza aggregata e regolando. In entrambi i casi stai modificando la composizione del modello in uno sforzo per trovare la combinazione migliore per gestire il problema.
Senza una tecnologia automatizzata come l'ottimizzazione degli iperparametri di AI Platform Training, devi apportare regolazioni manuali agli iperparametri nel corso di molte esecuzioni di addestramento per arrivare ai valori ottimali. L'ottimizzazione degli iperparametri rende il processo di determinazione delle migliori impostazioni per gli iperparametri più facili e meno noiose.
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 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 e apporta modifiche per le prove successive. Al termine del job, potrai ottenere un riepilogo di tutte le prove insieme alla configurazione dei valori più efficace in base ai criteri specificati.
L'ottimizzazione degli iperparametri richiede una comunicazione esplicita tra il servizio di addestramento AI Platform Training e l'applicazione di addestramento. L'applicazione di addestramento definisce tutte le informazioni necessarie al modello. Devi definire gli iperparametri (variabili) da modificare e un valore target per ogni iperparametro.
Per scoprire in che modo AI Platform Training utilizza l'ottimizzazione bayesiana per l'ottimizzazione degli iperparametri, leggi il post del blog denominato Iperparametri Tuning in Cloud Machine Learning Engine utilizzando l'ottimizzazione bayesiana.
Oltre all'ottimizzazione bayesiana, AI Platform Training ottimizza i job di ottimizzazione degli iperparametri. Se stai eseguendo l'ottimizzazione degli iperparametri in base a modelli simili, modificando solo la funzione dell'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.
Ottimizzazione degli iperparametri ottimizzata
L'ottimizzazione degli iperparametri ottimizza una singola variabile di destinazione, chiamata anche metrica di iperparametri, che specifichi. L'accuratezza del modello, calcolata da un pass per la valutazione, è una metrica comune. La metrica deve essere un valore numerico e puoi specificare se vuoi ottimizzare il modello per massimizzarla o ridurla a icona.
Quando avvii un job con ottimizzazione degli iperparametri, stabilisci il nome della metrica degli 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 acquisisce la tua metrica
Per i modelli TensorFlow, il servizio AI Platform Training monitora gli
eventi di riepilogo TensorFlow generati dalla tua 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 l'ottimizzazione degli iperparametri, puoi impostare gli iperparametri in base alle tue preferenze nell'applicazione di addestramento. Ad esempio, puoi configurare gli iperparametri passando gli argomenti della riga di comando al modulo della tua applicazione principale o inserirli nella tua applicazione in un file di configurazione.
Quando utilizzi l'ottimizzazione degli iperparametri, devi utilizzare la procedura seguente 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 sintonizzato.
Utilizza il valore passato in questi argomenti per impostare l'iperparametro corrispondente nel codice TensorFlow dell'applicazione.
Quando configuri un job di addestramento con un ottimizzazione degli iperparametri, definisci ogni iperparametro per regolare, il tipo e l'intervallo di valori da provare. Puoi identificare ogni iperparametro con 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 regolare
C'è davvero un piccolo consiglio universale da dare su come scegliere gli iperparametri da ottimizzare. Se hai esperienza con la tecnica di machine learning che stai utilizzando, potresti avere informazioni sul comportamento dei suoi iperparametri. Potresti anche ricevere consigli dalle community di machine learning.
Indipendentemente dalla tua scelta, è importante comprendere le implicazioni. Ogni iperparametro che scegli di regolare ha il potenziale di aumentare il numero di prove necessarie per un job di ottimizzazione riuscito. Addestrando con AI Platform Training ti viene addebitato il costo per la durata del job; un'attenta selezione di iperparametri da regolare può ridurre il tempo e il costo dell'addestramento del modello.
Tipi di iperparametri
I tipi di iperparametri supportati sono elencati nella documentazione di riferimento del job. Nell'oggetto ParameterSpec, puoi specificare il tipo di ciascun iperparametro e gli intervalli di valori correlati, come descritto nella tabella seguente:
Tipo | Intervalli di valori | Dati valore |
---|---|---|
DOUBLE |
minValue & maxValue ; |
Valori in virgola mobile |
INTEGER |
minValue & maxValue ; |
Valori interi |
CATEGORICAL |
categoricalValues |
Elenco di stringhe di categoria |
DISCRETE |
discreteValues |
Elenco dei 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 tuo job utilizza l'algoritmo AI Platform Training predefinito, che determina la ricerca parametri per arrivare alla soluzione ottimale con una ricerca più efficace sullo spazio parametri.
I valori disponibili sono:
ALGORITHM_UNSPECIFIED
: viene restituito lo stesso comportamento di quando non si specifica 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, risultando nella tecnica più efficace per l'insieme di iperparametri.GRID_SEARCH
: una semplice ricerca a griglia all'interno dello spazio fattibile. Questa opzione è particolarmente utile se vuoi specificare un numero di prove superiore al numero di punti nello spazio fattibile. In questi casi, se non specifichi una ricerca nella griglia, l'algoritmo predefinito di AI Platform Training può generare suggerimenti duplicati. Per utilizzare la ricerca griglia, tutti i parametri devono essere di tipoINTEGER
,CATEGORICAL
oDISCRETE
.RANDOM_SEARCH
: una semplice ricerca casuale all'interno dello spazio fattibile.
Passaggi successivi
- Scopri come implementare l'ottimizzazione degli iperparametri per i job di addestramento
- Consulta un esempio di come eseguire l'ottimizzazione degli iperparametri di Bayes su un modello blackbox e del codice corrispondente su GitHub.
- Leggi un post del blog sull'ottimizzazione bayesiana e l'ottimizzazione degli iperparametri.
- Leggi un post del blog sugli ulteriori progressi nell'ottimizzazione degli iperparametri.