Panoramica dell'ottimizzazione degli iperparametri
Nel machine learning, l'ottimizzazione degli iperparametri identifica un insieme iperparametri per un algoritmo di apprendimento. Un iperparametro è un argomento del modello il cui valore viene impostato prima dell'inizio del processo di apprendimento. Al contrario, i valori di altri parametri come i coefficienti di un modello lineare.
L'ottimizzazione degli iperparametri consente di dedicare meno tempo all'iterazione manuale gli iperparametri e più tempo per concentrarsi sull'esplorazione degli insight provenienti dai dati.
Puoi specificare le opzioni di ottimizzazione degli iperparametri per i seguenti tipi di modelli:
- Regressione lineare e logistica
- K-means
- Fattorizzazione matriciale
- Codificatore automatico
- Alberi potenziati
- Foresta casuale
- DNN (Deep Neural Network)
- Grandangolare e Rete profonda
Per questi tipi di modelli, l'ottimizzazione degli iperparametri è abilitata quando
specifica un valore per
Opzione NUM_TRIALS
nell'istruzione CREATE MODEL
.
Per provare a eseguire l'ottimizzazione degli iperparametri su un modello di regressione lineare, consulta Utilizzare l'ottimizzazione degli iperparametri di BigQuery ML per migliorare le prestazioni del modello.
Anche i seguenti modelli supportano l'ottimizzazione degli iperparametri, ma non consentono di specificare determinati valori:
- Modelli AutoML Tables l'ottimizzazione automatica degli iperparametri è incorporata nell'addestramento del modello predefinito.
- Modelli ARIMA_PLUS
ti consentono di impostare
AUTO_ARIMA
argomento per eseguire l'ottimizzazione degli iperparametri utilizzando l'algoritmo auto.ARIMA. Questo l'algoritmo esegue l'ottimizzazione degli iperparametri per il modulo di tendenza. Iperparametro l'ottimizzazione non è supportata nell'intero pipeline di modellazione.
Per informazioni sulle istruzioni e sulle funzioni SQL supportate per ogni tipo di modello, consulta Percorso dell'utente end-to-end per ogni modello.
Località
Per informazioni su quali località supportano l'ottimizzazione degli iperparametri, consulta Località di BigQuery ML.
Imposta gli iperparametri
Per ottimizzare un iperparametro, devi specificare un intervallo di valori per quell'iperparametro
iperparametro che il modello può utilizzare per un insieme di prove. A tale scopo, procedi nel seguente modo:
utilizzando una delle seguenti parole chiave durante l'impostazione dell'iperparametro
CREATE MODEL
, anziché fornire un singolo valore:
HPARAM_RANGE
: un valoreARRAY(FLOAT64)
a due elementi che definisce il minimo e limiti massimi dello spazio di ricerca dei valori continui per iperparametro. Utilizza questa opzione per specificare un intervallo di valori per un iperparametro, ad esempioLEARN_RATE = HPARAM_RANGE(0.0001, 1.0)
.HPARAM_CANDIDATES
: un valoreARRAY(STRUCT)
che specifica l'insieme di valori discreti per l'iperparametro. Utilizza questa opzione per specificare un insieme di valori per un iperparametro, ad esempioOPTIMIZER = HPARAM_CANDIDATES(['ADAGRAD', 'SGD', 'FTRL'])
.
Iperparametri e obiettivi
La tabella seguente elenca gli iperparametri e gli obiettivi supportati per ogni tipo di modello che supporta l'ottimizzazione degli iperparametri:
Tipo di modello | Obiettivi degli iperparametri | Iperparametro | Intervallo valido | Intervallo predefinito | Tipo di bilancia |
---|---|---|---|---|---|
LINEAR_REG
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (valore predefinito)
EXPLAINED_VARIANCE
|
L1_REG
L2_REG
|
(0, ∞]
(0, ∞]
|
(0, 10]
(0, 10]
|
LOG
LOG
|
LOGISTIC_REG
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (predefinito)
|
L1_REG
L2_REG
|
(0, ∞]
(0, ∞]
|
(0, 10]
(0, 10]
|
LOG
LOG
|
KMEANS
|
DAVIES_BOULDIN_INDEX
|
NUM_CLUSTERS
|
[2, 100]
|
[2, 10]
|
LINEAR
|
MATRIX_ (esplicito)
|
MEAN_SQUARED_ERROR
|
NUM_FACTORS
L2_REG
|
[2, 200]
(0, ∞)
|
[2, 20]
(0, 10]
|
LINEAR
LOG
|
MATRIX_ (implicita)
|
MEAN_AVERAGE_PRECISION (valore predefinito)
MEAN_SQUARED_ERROR
NORMALIZED_DISCOUNTED_CUMULATIVE_GAIN
AVERAGE_RANK
|
NUM_FACTORS
L2_REG
WALS_ALPHA
|
[2, 200]
(0, ∞)
[0, ∞)
|
[2, 20]
(0, 10]
[0, 100]
|
LINEAR
LOG
LINEAR
|
AUTOENCODER
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR (predefinito)
MEAN_SQUARED_LOG_ERROR
|
LEARN_RATE
BATCH_SIZE
L1_REG
L2_REG
L1_REG_ACTIVATION
DROPOUT
HIDDEN_UNITS
OPTIMIZER
ACTIVATION_FN
|
[0, 1]
(0, ∞)
(0, ∞)
(0, ∞)
(0, ∞)
[0, 1)
Array di [1, ∞)
{ ADAM , ADAGRAD , FTRL , RMSPROP , SGD }
{ RELU , RELU6 , CRELU , ELU , SELU , SIGMOID , TANH }
|
[0, 1]
[16, 1024]
(0, 10]
(0, 10]
(0, 10]
[0, 0.8]
N/A { ADAM , ADAGRAD , FTRL , RMSPROP , SGD }
N/A |
LOG
LOG
LOG
LOG
LOG
LINEAR
N/A N/A N/A |
DNN_CLASSIFIER
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (predefinito)
|
BATCH_SIZE
DROPOUT
HIDDEN_UNITS
LEARN_RATE
OPTIMIZER
L1_REG
L2_REG
ACTIVATION_FN
|
(0, ∞)
[0, 1)
Array di [1, ∞)
[0, 1]
{ ADAM , ADAGRAD , FTRL , RMSPROP , SGD }
(0, ∞)
(0, ∞)
{ RELU , RELU6 , CRELU , ELU , SELU , SIGMOID , TANH }
|
[16, 1024]
[0, 0.8]
N/A [0, 1]
{ ADAM , ADAGRAD , FTRL , RMSPROP , SGD }
(0, 10]
(0, 10]
N/A |
LOG
LINEAR
N/A LINEAR
N/A LOG
LOG
N/A |
DNN_REGRESSOR
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (valore predefinito)
EXPLAINED_VARIANCE
|
||||
DNN_LINEAR_
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (predefinito)
|
BATCH_SIZE
DROPOUT
HIDDEN_UNITS
L1_REG
L2_REG
ACTIVATION_FN
|
(0, ∞)
|
[16, 1024]
[0, 0.8]
N/A (0, 10]
(0, 10]
N/A |
LOG
LINEAR
N/A LOG
LOG
N/A |
DNN_LINEAR_
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (valore predefinito)
EXPLAINED_VARIANCE
|
||||
BOOSTED_TREE_
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (predefinito)
|
LEARN_RATE
L1_REG
L2_REG
DROPOUT
MAX_TREE_DEPTHMAX_TREE_DEPTH
SUBSAMPLE
MIN_SPLIT_LOSS
NUM_PARALLEL_TREE
MIN_TREE_CHILD_WEIGHT
COLSAMPLE_BYTREE
COLSAMPLE_BYLEVEL
COLSAMPLE_BYNODE
BOOSTER_TYPE
DART_NORMALIZE_TYPE
TREE_METHOD
|
[0, ∞)
(0, ∞)
(0, ∞)
[0, 1]
[1, 20]
(0, 1]
[0, ∞)
[1, ∞)
[0, ∞)
[0, 1]
[0, 1]
[0, 1]
{ GBTREE , DART }
{ TREE , FOREST }
{ AUTO , EXACT , APPROX , HIST }
|
[0, 1]
(0, 10]
(0, 10]
N/A [1, 10]
(0, 1]
N/A N/A N/A N/A N/A N/A N/A N/A N/A |
LINEAR
LOG
LOG
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
N/A N/A N/A |
BOOSTED_TREE_ |
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (valore predefinito)
EXPLAINED_VARIANCE
|
||||
RANDOM_FOREST_
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (predefinito)
|
L1_REG
L2_REG
MAX_TREE_DEPTH
SUBSAMPLE
MIN_SPLIT_LOSS
NUM_PARALLEL_TREE
MIN_TREE_CHILD_WEIGHT
COLSAMPLE_BYTREE
COLSAMPLE_BYLEVEL
COLSAMPLE_BYNODE
TREE_METHOD
|
(0, ∞)
(0, ∞)
[1, 20]
(0, 1)
[0, ∞)
[2, ∞)
[0, ∞)
[0, 1]
[0, 1]
[0, 1]
{ AUTO , EXACT , APPROX , HIST }
|
(0, 10]
(0, 10]
[1, 20]
(0, 1)
N/A [2, 200]
N/A N/A N/A N/A N/A |
LOG
LOG
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
N/A |
RANDOM_FOREST_ |
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (valore predefinito)
EXPLAINED_VARIANCE
|
La maggior parte degli iperparametri di scala LOG
utilizza il limite inferiore aperto di 0
. Puoi
imposta comunque 0
come limite inferiore utilizzando la parola chiave HPARAM_RANGE
per
imposta l'intervallo degli iperparametri. Ad esempio, in un classificatore potenziato
modello, puoi impostare l'intervallo per
Iperparametro L1_REG
come L1_REG = HPARAM_RANGE(0, 5)
. Un valore di 0
viene convertito in 1e-14
.
Gli iperparametri condizionali sono supportati. Ad esempio, in un albero potenziato
regressore, puoi ottimizzare solo
Iperparametro DART_NORMALIZE_TYPE
quando il valore del parametro
Iperparametro BOOSTER_TYPE
è DART
. In questo caso, devi specificare sia gli spazi di ricerca sia le condizioni
vengono gestiti automaticamente, come illustrato nell'esempio seguente:
BOOSTER_TYPE = HPARAM_CANDIDATES(['DART', 'GBTREE'])
DART_NORMALIZE_TYPE = HPARAM_CANDIDATES(['TREE', 'FOREST'])
Punto di partenza della ricerca
Se non specifichi uno spazio di ricerca per un iperparametro utilizzando
HPARAM_RANGE
o HPARAM_CANDIDATES
, la ricerca inizia dal valore predefinito
di quell'iperparametro, come documentato nell'argomento CREATE MODEL
per il modello
di testo. Ad esempio, se esegui l'ottimizzazione degli iperparametri per
modello albero ottimizzato,
e non specifichi un valore per
Iperparametro L1_REG
,
la ricerca inizia da 0
, il valore predefinito.
Se specifichi uno spazio di ricerca per un iperparametro utilizzando HPARAM_RANGE
o
HPARAM_CANDIDATES
, il punto di partenza della ricerca dipende dal fatto che l'oggetto o meno specificato
spazio di ricerca include il valore predefinito per quell'iperparametro, come documentato
nell'argomento CREATE MODEL
per quel tipo di modello:
- Se l'intervallo specificato contiene il valore predefinito, è qui che il valore
inizia la ricerca. Ad esempio, se esegui l'ottimizzazione degli iperparametri per
implicito
modello di fattorizzazione matriciale,
e specifichi il valore
[20, 30, 40, 50]
per IperparametroWALS_ALPHA
, la ricerca inizia da40
, il valore predefinito. - Se l'intervallo specificato non contiene il valore predefinito, la ricerca inizia
dal punto dell'intervallo specificato più vicino al valore predefinito.
Ad esempio,se specifichi il valore
[10, 20, 30]
per il campoWALS_ALPHA
la ricerca inizia da30
, che è il valore più vicino sul valore predefinito di40
.
Suddivisione dati
Se specifichi un valore per l'opzione NUM_TRIALS
, il servizio identifica
si sta regolando gli iperparametri ed esegue automaticamente una
suddivisi in base ai dati di input per suddividerli in set di addestramento, valutazione e test.
Per impostazione predefinita, i dati di input sono randomizzati e quindi suddivisi all'80% per l'addestramento,
10% per la valutazione e 10% per i test.
I set di addestramento e valutazione vengono utilizzati in ogni addestramento di prova, come nei modelli che non usano l'ottimizzazione degli iperparametri. L'iperparametro di prova vengono calcolati in base metriche di valutazione del modello per quel tipo di modello. Al termine di ogni addestramento di prova, il set di test viene utilizzato per testare la prova e registrarne le metriche nel modello. Ciò garantisce l'obiettività delle metriche di valutazione dei report finali mediante dati non sono stati ancora analizzati dal modello. Vengono utilizzati i dati di valutazione per calcolare le metriche intermedie per il suggerimento degli iperparametri, mentre i dati di test vengono utilizzati per calcolare le metriche finali e oggettive del modello.
Se vuoi utilizzare solo un set di addestramento, specifica NO_SPLIT
per
Opzione DATA_SPLIT_METHOD
dell'istruzione CREATE MODEL
.
Se vuoi utilizzare solo set di addestramento e valutazione, specifica 0
per
Opzione DATA_SPLIT_TEST_FRACTION
dell'istruzione CREATE MODEL
. Quando il set di test è vuoto, la valutazione
è utilizzato come set di test per i report sulle metriche di valutazione finale.
Le metriche dei modelli generati da un normale job di addestramento da un job di addestramento di ottimizzazione degli iperparametri sono paragonabili solo quando i dati frazioni divise sono uguali. Ad esempio, i seguenti modelli sono paragonabili:
- Ottimizzazione non iperparametri:
DATA_SPLIT_METHOD='RANDOM', DATA_SPLIT_EVAL_FRACTION=0.2
- Ottimizzazione degli iperparametri:
DATA_SPLIT_METHOD='RANDOM', DATA_SPLIT_EVAL_FRACTION=0.2, DATA_SPLIT_TEST_FRACTION=0
Prestazioni
In genere, le prestazioni del modello con l'ottimizzazione degli iperparametri non sono peggiori rispetto alle prestazioni del modello quando si utilizza lo spazio di ricerca predefinito dell'ottimizzazione degli iperparametri. Un modello che utilizza lo spazio di ricerca predefinito e non l'ottimizzazione degli iperparametri usa sempre gli iperparametri predefiniti Google Cloud.
Per confermare i miglioramenti delle prestazioni del modello forniti dall'ottimizzazione degli iperparametri, confrontare la prova ottimale per il modello di ottimizzazione degli iperparametri alla prima per il modello di ottimizzazione degli iperparametri.
Transfer learning
Il Transfer Learning è abilitato per impostazione predefinita quando imposti
Opzione HPARAM_TUNING_ALGORITHM
nell'istruzione CREATE MODEL
per VIZIER_DEFAULT
. L'iperparametro
i vantaggi dell'ottimizzazione per ottenere i vantaggi di un modello
di terze parti se soddisfano i seguenti requisiti:
- Ha lo stesso tipo di modello dei modelli ottimizzati in precedenza.
- Si trova nello stesso progetto dei modelli ottimizzati in precedenza.
- Utilizza lo stesso spazio di ricerca degli iperparametri OPPURE un sottoinsieme
spazio di ricerca degli iperparametri dei modelli ottimizzati in precedenza. Un sottoinsieme utilizza
gli stessi nomi e tipi di iperparametri, ma non devono necessariamente avere gli stessi intervalli.
Ad esempio,
(a:[0, 10])
è considerato un sottoinsieme di(a:[-1, 1], b:[0, 1])
.
Il Transfer Learning non richiede che i dati di input siano gli stessi.
Il Transfer Learning aiuta a risolvere il problema dell'avvio a freddo in cui il sistema esegue esplorazione casuale durante il primo batch di prova. Il Transfer Learning offre con alcune conoscenze iniziali sugli iperparametri e sui loro degli obiettivi. Per migliorare continuamente la qualità del modello, addestra sempre un nuovo un modello di ottimizzazione degli iperparametri con lo stesso o un sottoinsieme di iperparametri.
Il Transfer Learning aiuta a convergere più velocemente l'ottimizzazione degli iperparametri anziché aiutando i modelli secondari a convergere.
Gestione degli errori
L'ottimizzazione degli iperparametri gestisce gli errori nei seguenti modi:
Annullamento: se un job di addestramento viene annullato durante l'esecuzione, le prove riuscite rimangono utilizzabili.
Input non valido: se input utente non sono validi, il servizio restituisce un errore dell'utente.
Iperparametri non validi: se gli iperparametri non sono validi per una prova, la prova viene saltata e contrassegnata come
INFEASIBLE
nell'output del FunzioneML.TRIAL_INFO
.Errore interno della prova: se più del 10% del valore di
NUM_TRIALS
non riesce a causa diINTERNAL_ERROR
, il job di addestramento si arresta e restituisce un errore utente.Se meno del 10% del valore
NUM_TRIALS
ha esito negativo a causa diINTERNAL_ERROR
, l'addestramento continua con le prove non riuscite contrassegnate comeFAILED
nell'output dalla funzioneML.TRIAL_INFO
.
Funzioni di pubblicazione del modello
Puoi utilizzare modelli di output dall'ottimizzazione degli iperparametri con una serie le funzioni di pubblicazione del modello. Per utilizzare queste funzioni, segui queste regole:
Quando la funzione accetta dati di input, viene restituito solo il risultato di una prova restituito. Per impostazione predefinita, questa è la prova ottimale, ma puoi anche scegliere un una determinata prova specificando
TRIAL_ID
come argomento per personalizzata. Puoi ottenereTRIAL_ID
dall'output diML.TRIAL_INFO
personalizzata. Sono supportate le seguenti funzioni:Quando la funzione non accetta dati di input, vengono restituiti tutti i risultati della prova, e la prima colonna di output è
TRIAL_ID
. Di seguito sono riportate le funzioni supportati:
L'output da
ML.FEATURE_INFO
non cambia, perché tutte le prove condividono gli stessi dati di input.
Le metriche di valutazione di ML.EVALUATE
e ML.TRIAL_INFO
possono essere diverse
a causa del modo in cui i dati di input
vengono suddivisi. Per impostazione predefinita, ML.EVALUATE
viene eseguito
i dati di test, mentre ML.TRIAL_INFO
viene eseguito sui dati di valutazione. Per maggiori informazioni
informazioni, consulta Suddivisione dati.
Funzioni non supportate
La funzione ML.TRAINING_INFO
restituisce informazioni per ogni iterazione e i relativi risultati non vengono salvati
i modelli di ottimizzazione degli iperparametri. I risultati della prova vengono salvati. Puoi utilizzare lo
Funzione ML.TRIAL_INFO
per ottenere informazioni sui risultati delle prove.
Esportazione del modello
Puoi esportare i modelli creati con l'ottimizzazione degli iperparametri in Cloud Storage
posizioni utilizzando
EXPORT MODEL
.
Puoi esportare la prova ottimale predefinita o qualsiasi prova specificata.
Prezzi
Il costo dell'addestramento dell'ottimizzazione degli iperparametri è la somma dei costi di tutte con le prove eseguite. I prezzi della prova sono in linea con i Modello di prezzi di BigQuery ML.
Domande frequenti
Quante prove sono necessarie per ottimizzare un modello?
Consigliamo di utilizzare almeno 10 test per un iperparametro, quindi il totale
il numero di prove deve essere almeno
10 * num_hyperparameters
. Se utilizzi l'impostazione predefinita
spazio di ricerca, consulta la colonna Iperparametri nella
Iperparametri e obiettivi
per il numero di iperparametri ottimizzati per impostazione predefinita per un determinato tipo di modello.
Cosa succede se non vedo miglioramenti delle prestazioni con l'ottimizzazione degli iperparametri?
Assicurati di seguire le indicazioni riportate in questo documento per ottenere un confronto equo. Se continui a non vedere miglioramenti delle prestazioni, è possibile che l'impostazione predefinita gli iperparametri sono già adatti al tuo caso. Ti consigliamo di concentrarti sulle funzionalità o altri tipi di modelli prima di provare un'altra dell'ottimizzazione degli iperparametri.
E se volessi continuare a ottimizzare un modello?
Addestra un nuovo modello di ottimizzazione degli iperparametri con lo stesso spazio di ricerca. La Il Transfer Learning integrato aiuta a continuare l'ottimizzazione in base alle modelli ottimizzati.
Devo riaddestrare il modello con tutti i dati e gli iperparametri ottimali?
Dipende dai seguenti fattori:
I modelli K-means usano già tutti i dati come dati di addestramento, quindi non c'è bisogno per riaddestrare il modello.
Per i modelli di fattorizzazione matriciale, puoi riaddestrare il modello con e tutti i dati di input per una migliore copertura di utenti ed elementi.
Per tutti gli altri tipi di modelli, il riaddestramento in genere non è necessario. Il servizio conserva già l'80% dei dati di input per l'addestramento durante l'impostazione casuale suddivisione dati. Puoi comunque riaddestrare il modello con più dati di addestramento iperparametri selezionati se il set di dati è piccolo, ma con i dati di valutazione per l'interruzione anticipata potrebbero peggiorare l'overfitting.
Passaggi successivi
Per provare a eseguire l'ottimizzazione degli iperparametri, consulta Utilizzare l'ottimizzazione degli iperparametri di BigQuery ML per migliorare le prestazioni del modello.