Panoramica dell'ottimizzazione degli iperparametri

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, che massimizza l'accuratezza predittiva del modello.

Cos'è un iperparametro?

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

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 e fare previsioni accurate su nuove istanze di dati simili. Tuttavia, i valori nei dati di input non entrano mai direttamente a far 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), ognuno dei quali con un'operazione eseguita sui dati mentre viaggia attraverso la rete. Quando il DNN è addestrato, ogni nodo ha un valore di peso che indica al tuo modello il suo impatto sulla previsione finale. Tali ponderazioni sono un esempio dei parametri del modello. Per molti aspetti, i parametri del tuo modello sono il modello che lo distingue da altri modelli dello stesso tipo che lavorano su dati simili.

  • Gli iperparametri sono le variabili che regolano il processo di addestramento. Ad esempio, parte della progettazione di un DNN è la decisione di quanti livelli nascosti di nodi utilizzare tra i livelli di input e di output e quanti nodi devono essere utilizzati da ogni livello nascosto. Queste variabili non sono direttamente correlate ai dati di addestramento. Si tratta di 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, confronti la previsione risultante con il valore effettivo per ogni istanza dei dati, valuta la precisione e correggi finché non trovi i valori migliori. Gli iperparametri vengono regolati eseguendo l'intero job di addestramento, esaminando l'accuratezza aggregata e la regolazione. 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 Vertex AI, devi apportare modifiche manuali agli iperparametri nel corso di molte esecuzioni di addestramento per ottenere i valori ottimali. L'ottimizzazione degli iperparametri semplifica e velocizza la definizione delle impostazioni migliori.

Come funziona l'ottimizzazione degli iperparametri

L'ottimizzazione degli iperparametri funziona eseguendo più prove dell'applicazione di addestramento con valori per gli iperparametri selezionati, impostati entro i limiti specificati. Vertex AI 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 dei valori più efficace in base ai criteri che hai specificato.

L'ottimizzazione degli iperparametri richiede una comunicazione esplicita tra Vertex AI e la tua applicazione di addestramento. L'applicazione di addestramento definisce tutte le informazioni necessarie al modello. Devi definire gli iperparametri (variabili) da modificare e scegliere come target le variabili utilizzate per valutare ogni prova.

Scopri di più sull'ottimizzazione bayesiana per l'ottimizzazione degli iperparametri.

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

Cosa ottimizza la ottimizzazione degli iperparametri

L'ottimizzazione degli iperparametri ottimizza le variabili di destinazione specificate, chiamate metriche iperparametri. La precisione del modello, calcolata da un pass 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 ridurre al minimo il valore di questa metrica.

In che modo Vertex AI ottiene le metriche

Utilizza il pacchetto Python cloudml-hypertune per passare le metriche a Vertex AI. Questa libreria fornisce funzioni di supporto per la creazione di rapporti sulle metriche a Vertex AI.

Scopri di più sulla segnalazione di metriche sugli iperparametri.

Il flusso dei valori degli iperparametri

Senza l'ottimizzazione degli iperparametri, puoi impostare gli iperparametri in base alle opzioni che preferisci nell'applicazione di addestramento. Ad esempio, puoi configurare gli iperparametri passando dagli argomenti della riga di comando al modulo dell'applicazione principale o inviandoli all'applicazione in un file di configurazione.

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

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

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

Quando configuri un job di ottimizzazione degli iperparametri, definisci ogni iperparametro in modo da ottimizzarlo, il tipo di dati e l'intervallo di valori da provare. Puoi identificare ogni iperparametro utilizzando lo stesso nome dell'argomento corrispondente definito nel modulo principale. Il servizio di addestramento include argomenti a 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.

Seleziona iperparametri da regolare

Sono disponibili pochi consigli universali su come scegliere gli iperparametri da regolare. Se hai esperienza con la tecnica di machine learning che stai utilizzando, potresti avere informazioni sul comportamento degli iperparametri. Potresti anche ricevere consigli dalle community di machine learning.

Indipendentemente da come li scegli, è importante comprenderne le implicazioni. Ogni iperparametro che scegli di regolare può aumentare il numero di prove necessarie per un job di ottimizzazione riuscito. Quando esegui un job di ottimizzazione degli iperparametri su Vertex AI, l'importo che ti viene addebitato si basa sulla durata delle prove avviate dal job di ottimizzazione degli iperparametri. Una scelta accurata degli iperparametri per regolarne il tempo può ridurre i tempi e i costi del job di ottimizzazione degli iperparametri.

Tipi di dati iperparametri

In un oggetto ParameterSpec, devi specificare il tipo di dati iperparametri come istanza di una specifica del valore del parametro. La tabella seguente elenca le specifiche dei valori dei parametri supportati.

Tipo Tipo di dati Intervalli di valori Dati valore
DoubleValueSpec DOUBLE minValue & maxValue; Valori in virgola mobile
IntegerValueSpec INTEGER minValue &maxValue; Valori interi
CategoricalValueSpec CATEGORICAL categoricalValues Elenco di stringhe di categoria
DiscreteValueSpec DISCRETE discreteValues Elenco dei valori in ordine crescente

Ridimensionare 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 la scalabilità.
  • UNIT_LINEAR_SCALE: ridimensiona lo spazio fattibile su un valore lineare da 0 a 1.
  • UNIT_LOG_SCALE: ridimensiona lo spazio fattibile in modo logico da 0 a 1. L'intero spazio fattibile deve essere rigorosamente positivo.
  • UNIT_REVERSE_LOG_SCALE: ridimensiona lo spazio fattibile "inverti" logaritmica da 0 a 1. Il risultato è che i valori vicini alla parte superiore dello spazio possibile sono distribuiti in più punti rispetto alla parte inferiore. L'intero spazio possibile deve essere rigorosamente positivo.

Iperparametri condizionali

L'oggetto ConditionalParameterSpec consente di aggiungere iperparametri a una prova quando il valore dell'iperparametro principale corrisponde a una condizione specificata.

Ad esempio, puoi definire un job di ottimizzazione degli iperparametri con l'obiettivo di trovare un modello ottimale utilizzando una regressione lineare o una rete neurale profonda (DNN). Per consentire al job di ottimizzazione di specificare il metodo di addestramento, devi definire un iperparametro categorico denominato training_method con le seguenti opzioni: LINEAR_REGRESSION e DNN. Quando training_method è LINEAR_REGRESSION, il tuo job di ottimizzazione deve specificare un iperparametro per la frequenza di apprendimento. Quando training_method è DNN, il job di ottimizzazione deve specificare i parametri per la tariffa di apprendimento e il numero di livelli nascosti.

Poiché il numero di livelli nascosti è applicabile solo quando una provatraining_method è DNN, definisci un parametro condizionale che aggiunge un iperparametro denominato num_hidden_layers quando training_method è DNN.

Poiché la velocità di apprendimento viene utilizzata da entrambe le opzioni training_method, devi decidere se l'iperparametro condizionale deve essere condiviso. Se l'iperparametro è condiviso, il job di ottimizzazione utilizza quanto appreso dalle prove LINEAR_REGRESSION e DNN per regolare il tasso di apprendimento. In questo caso, è più opportuno avere tariffe di apprendimento separate per ogni training_method, poiché la frequenza di apprendimento per l'addestramento di un modello che utilizza LINEAR_REGRESSION non deve influire sulla percentuale di apprendimento per l'addestramento di un modello che utilizza DNN. Pertanto, definisci i seguenti iperparametri condizionali:

  • Un iperparametro denominato learning_rate che viene aggiunto quando training_method è LINEAR_REGRESSION.
  • Un iperparametro denominato learning_rate che viene aggiunto quando training_method è DNN.

Gli iperparametri condizionali ti consentono di definire gli iperparametri per il job di ottimizzazione. In questo modo puoi ottimizzare il processo di addestramento utilizzando diverse tecniche di addestramento, ciascuna con dipendenze iperparametriche.

Algoritmi di ricerca

Puoi specificare un algoritmo di ricerca nell'oggetto StudySpec. Se non specifichi un algoritmo, il tuo job utilizza l'algoritmo predefinito di AI AI. L'algoritmo predefinito applica l'ottimizzazione bayesiana per arrivare alla soluzione ottimale con una ricerca più efficace nello spazio parametri.

I valori disponibili sono:

  • ALGORITHM_UNSPECIFIED: equivale a non specificare un algoritmo. Vertex AI sceglie il miglior algoritmo di ricerca tra banditi di processo gaussiano, combinazione di ricerche lineari o le loro varianti.

  • GRID_SEARCH: una semplice ricerca griglia all'interno dello spazio possibile. Questa opzione è particolarmente utile se vuoi specificare una quantità di prove maggiore del numero di punti dello spazio possibile. In questi casi, se non specifichi una ricerca tramite griglia, l'algoritmo predefinito di Vertex AI può generare suggerimenti duplicati. Per utilizzare la ricerca con griglia, tutti i parametri devono essere di tipo INTEGER, CATEGORICAL o DISCRETE.

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

Passaggi successivi