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 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 da effettuare inferenze accurate 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 che la tecnica di machine learning scelta utilizza per adattarsi ai dati. Ad esempio, una rete neurale profonda (DNN) è composta da nodi di elaborazione (neuroni), ognuno con un'operazione eseguita sui dati mentre attraversano la rete. Quando la DNN viene addestrata, ogni nodo ha un valore di peso che indica al modello l'impatto che ha sull'inferenza finale. Questi pesi sono un esempio dei parametri del modello. In molti modi, 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 il processo di addestramento stesso. Ad esempio, parte della progettazione di una DNN consiste nel decidere quanti strati nascosti di nodi utilizzare tra gli strati di input e output e quanti nodi deve utilizzare ogni strato nascosto. 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 in genere costanti durante un job.
I parametri del modello vengono ottimizzati (si potrebbe dire "regolati") dal processo di addestramento: esegui i dati attraverso le operazioni del modello, confronti l'inferenza risultante con il valore effettivo per ogni istanza di dati, valuti l'accuratezza e regoli fino a trovare i valori migliori. Gli iperparametri vengono regolati eseguendo l'intero job di addestramento, esaminando l'accuratezza aggregata e apportando modifiche. In entrambi i casi, stai modificando la composizione del modello per trovare la combinazione migliore per gestire il problema.
Senza una tecnologia automatizzata come l'ottimizzazione degli iperparametri di Agent Platform, 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 funziona eseguendo più prove dell'applicazione di addestramento con i valori degli iperparametri scelti, impostati entro i limiti specificati. Agent Platform tiene traccia dei risultati di ogni prova e apporta modifiche per le prove successive. Al termine del job, puoi ottenere un riepilogo di tutte le prove insieme alla configurazione di valori più efficace in base ai criteri specificati.
L'ottimizzazione degli iperparametri richiede una comunicazione esplicita tra Agent Platform e l'applicazione di addestramento. L'applicazione di addestramento definisce tutte le informazioni di cui il modello ha bisogno. Definisci gli iperparametri (variabili) che vuoi modificare e le variabili target utilizzate per valutare ogni prova.
Scopri di più sull'ottimizzazione bayesiana per l'ottimizzazione degli iperparametri .
Oltre all'ottimizzazione bayesiana, Agent Platform ottimizza i job di ottimizzazione degli iperparametri. Se esegui l'ottimizzazione degli iperparametri su modelli simili, modificando solo la funzione obiettivo o aggiungendo una nuova colonna di input, Agent Platform è 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 le variabili target specificate, chiamate metriche degli iperparametri. L'accuratezza del modello, calcolata da un passaggio di valutazione, è una metrica comune. Le metriche devono essere numeriche.
Quando configuri un job di ottimizzazione degli iperparametri, definisci il nome e l'obiettivo di ogni metrica. L'obiettivo specifica se vuoi ottimizzare il modello per massimizzare o minimizzare il valore di questa metrica.
In che modo Agent Platform ottiene le metriche
Utilizza il cloudml-hypertune pacchetto Python per passare
le metriche ad Agent Platform. Questa libreria fornisce funzioni di assistenza per la generazione di report sulle metriche ad Agent Platform.
Scopri di più sulla generazione di report sulle metriche degli iperparametri.
Il flusso dei valori degli iperparametri
Senza l'ottimizzazione degli iperparametri, puoi impostare gli iperparametri con qualsiasi mezzo preferisci nell'applicazione di addestramento. Ad esempio, puoi configurare gli iperparametri passando gli argomenti della riga di comando al modulo dell'applicazione principale o inserirli nell'applicazione in un file di configurazione.
Quando utilizzi l'ottimizzazione degli iperparametri, devi seguire 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 dell'applicazione.
Quando configuri un job di ottimizzazione degli iperparametri, definisci ogni iperparametro da ottimizzare, il relativo tipo di dati e l'intervallo di valori da provare. Identifichi ogni iperparametro utilizzando lo stesso nome dell'argomento corrispondente definito nel modulo principale. Il servizio di addestramento include gli argomenti della riga di comando che utilizzano questi nomi quando esegue l'applicazione.
Scopri di più sui requisiti per l'analisi degli argomenti della riga di comando.
Selezionare gli iperparametri da ottimizzare
Non ci sono molti consigli universali 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 trovare consigli dalle community di machine learning.
Qualunque sia la tua scelta, è importante comprenderne le implicazioni. Ogni iperparametro che scegli di ottimizzare ha il potenziale per aumentare il numero di prove richieste per un job di ottimizzazione riuscito. Quando esegui un job di ottimizzazione degli iperparametri su Agent Platform, l'importo addebitato si basa sulla durata delle prove avviate dal job di ottimizzazione degli iperparametri. Una scelta accurata degli iperparametri da ottimizzare può ridurre il tempo e il costo del job di ottimizzazione degli iperparametri.
Tipi di dati degli iperparametri
In un oggetto ParameterSpec, specifichi il tipo di dati dell'iperparametro come istanza di una specifica del valore parametro. La tabella seguente elenca le specifiche del valore parametro supportate.
| Tipo | Tipo di dati | Intervalli di valori | Dati dei valori |
|---|---|---|---|
DoubleValueSpec |
DOUBLE |
minValue e maxValue |
Valori in virgola mobile |
IntegerValueSpec |
INTEGER |
minValue e maxValue |
Valori interi |
CategoricalValueSpec |
CATEGORICAL |
categoricalValues |
Elenco di stringhe di categoria |
DiscreteValueSpec |
DISCRETE |
discreteValues |
Elenco di valori in ordine crescente |
Scalare gli iperparametri
In un oggetto ParameterSpec, puoi specificare che la scalabilità
deve essere eseguita su questo iperparametro. La scalabilità è consigliata per i tipi di dati DOUBLE e INTEGER. I tipi di scalabilità disponibili sono:
SCALE_TYPE_UNSPECIFIED: a questo iperparametro non viene applicata alcuna scalabilità.UNIT_LINEAR_SCALE: scala linearmente lo spazio disponibile da 0 a 1.UNIT_LOG_SCALE: scala logaritmicamente lo spazio disponibile da 0 a 1. L'intero spazio disponibile deve essere strettamente positivo.UNIT_REVERSE_LOG_SCALE: scala logaritmicamente lo spazio disponibile "inverso" da 0 a 1. Il risultato è che i valori vicini alla parte superiore dello spazio disponibile sono più distanziati rispetto ai punti vicini alla parte inferiore. L'intero spazio disponibile deve essere strettamente positivo.
Iperparametri condizionali
L'ConditionalParameterSpec oggetto ti consente di aggiungere
iperparametri a una prova quando il valore dell'iperparametro principale corrisponde a una
condizione specificata.
Ad esempio, potresti definire un job di ottimizzazione degli iperparametri con l'obiettivo di trovare un modello ottimale utilizzando la regressione lineare o una rete neurale profonda (DNN). Per consentire al job di ottimizzazione di specificare il metodo di addestramento, definisci un iperparametro categorico denominato training_method con le seguenti opzioni: LINEAR_REGRESSION e DNN. Quando training_method è LINEAR_REGRESSION, il job di ottimizzazione deve specificare un iperparametro per il tasso di apprendimento. Quando training_method è DNN, il job di ottimizzazione deve specificare i parametri per il tasso di apprendimento e il numero di strati nascosti.
Poiché il numero di strati nascosti è applicabile solo quando training_method di una prova è DNN, definisci un parametro condizionale che aggiunge un iperparametro denominato num_hidden_layers quando training_method è DNN.
Poiché il tasso di apprendimento viene utilizzato da entrambe le opzioni training_method, devi decidere se questo iperparametro condizionale deve essere condiviso. Se l'iperparametro è condiviso, il job di ottimizzazione utilizza ciò che ha appreso dalle prove LINEAR_REGRESSION e DNN per ottimizzare il tasso di apprendimento. In questo caso, è più logico avere tassi di apprendimento separati per ogni training_method, poiché il tasso di apprendimento per l'addestramento di un modello utilizzando LINEAR_REGRESSION non deve influire sul tasso di apprendimento per l'addestramento di un modello utilizzando DNN. Pertanto, definisci i seguenti iperparametri condizionali:
- Un iperparametro denominato
learning_rateche viene aggiunto quandotraining_methodèLINEAR_REGRESSION. - Un iperparametro denominato
learning_rateche viene aggiunto quandotraining_methodèDNN.
Gli iperparametri condizionali ti consentono di definire gli iperparametri per il job di ottimizzazione come un grafico. In questo modo puoi ottimizzare il processo di addestramento utilizzando tecniche di addestramento diverse, ognuna con le proprie dipendenze degli iperparametri.
Algoritmi di ricerca
Puoi specificare un algoritmo di ricerca nell'oggetto StudySpec.
Se non specifichi un algoritmo, il job utilizza l'algoritmo predefinito di Agent Platform. L'algoritmo predefinito applica l'ottimizzazione bayesiana per arrivare alla soluzione ottimale con una ricerca più efficace nello spazio dei parametri.
Valori disponibili:
ALGORITHM_UNSPECIFIED: è come non specificare un algoritmo. Agent Platform sceglie l'algoritmo di ricerca migliore tra i banditi del processo gaussiano , la ricerca di combinazioni lineari o le relative varianti.GRID_SEARCH: una ricerca a griglia nello spazio disponibile. Questa opzione è particolarmente utile se vuoi specificare una quantità di prove superiore al numero di punti nello spazio disponibile. In questi casi, se non specifichi una ricerca a griglia, l'algoritmo predefinito di Agent Platform potrebbe generare suggerimenti duplicati. Per utilizzare la ricerca a griglia, tutti i parametri devono essere di tipoINTEGER,CATEGORICALoDISCRETE.RANDOM_SEARCH: una ricerca casuale nello spazio disponibile.
Passaggi successivi
- Scopri come implementare l'ottimizzazione degli iperparametri per i job di addestramento
- Leggi un post del blog su ottimizzazione bayesiana e iperparametro ottimizzazione.