Configurare la terminazione anticipata
L'ottimizzazione degli iperparametri consente di selezionare i valori degli iperparametri che migliorano le prestazioni del modello.
Ogni prova aggiuntiva richiede tempo e risorse di calcolo. È necessario decidere se continuare un test che sta dando scarsi risultati possa produrre risultati utili.
Ogni tentativo in un processo di sweep addestra un modello con una diversa combinazione di valori degli iperparametri. Un criterio di terminazione anticipata interrompe i singoli tentativi che hanno prestazioni inferiori, mentre i tentativi rimanenti continuano.
È anche possibile limitare lo sweep completo impostando un numero massimo di prove o un timeout. Usare un criterio di terminazione anticipata quando si vuole Azure Machine Learning interrompere le prove con prestazioni scarse in base alla metrica primaria segnalata.
Quando usare un criterio di terminazione anticipata
La scelta di utilizzare un criterio di terminazione anticipata può dipendere dallo spazio di ricerca e dal metodo di campionamento che si sta utilizzando.
Ad esempio, è possibile scegliere il campionamento su griglia in uno spazio di ricerca discreto, ottenendo sei prove. Poiché lo sweep addestra solo sei modelli, un criterio di arresto anticipato potrebbe non essere necessario.
Un criterio di terminazione anticipata può essere particolarmente utile quando si lavora con iperparametri continui. Gli spazi di ricerca continui contengono molti valori possibili, quindi il campionamento casuale o bayesiano può avviare le prove che non sono promettenti.
Configurare un criterio di terminazione anticipata
Quando si sceglie di usare un criterio di terminazione anticipata, sono disponibili due parametri principali:
-
evaluation_interval: Specifica l'intervallo al quale si desidera che la politica venga valutata. Ogni volta che la metrica primaria viene registrata per una prova, viene conteggiata come intervallo. -
delay_evaluation: Specifica quanti intervalli di segnalazione delle metriche si verificano prima che il criterio valuti per la prima volta ogni tentativo. Questo ritardo consente a ogni prova di compiere progressi iniziali.
Azure Machine Learning supporta tre criteri per confrontare le versioni di valutazione attive:
-
Criterio bandito: usa un
slack_factor(relativo) oslack_amount(assoluto). Una prova deve rientrare nel margine di tolleranza consentito rispetto alla prova con le prestazioni migliori. - Politica di arresto mediana: confronta la media cumulativa di una prova con la mediana delle medie cumulative di tutte le prove.
- Criterio di selezione per troncamento: interrompe una percentuale delle prove con le prestazioni peggiori a ogni intervallo di valutazione.
Politica bandita
È possibile usare il criterio Bandit per arrestare una prova se la metrica delle prestazioni obiettivo indica prestazioni inferiori a quelle della prova migliore finora in base a un margine specificato.
Ad esempio, il codice seguente ritarda la valutazione per cinque intervalli di report delle metriche, valuta i criteri a ogni intervallo dopo il ritardo e consente un margine di flessibilità assoluto pari a 0,2.
from azure.ai.ml.sweep import BanditPolicy
sweep_job.early_termination = BanditPolicy(
slack_amount = 0.2,
delay_evaluation = 5,
evaluation_interval = 1
)
Si supponga che la metrica primaria sia l'accuratezza del modello. A un intervallo di valutazione, la versione di valutazione con prestazioni migliori ha un'accuratezza pari a 0,9. Con un margine di tolleranza di 0,2, un'altra prova attiva deve registrare almeno 0,7 per continuare. Il criterio termina tale versione di valutazione quando la migliore accuratezza segnalata scende al di sotto della soglia; non arresta lo sweep.
È anche possibile applicare una politica bandit utilizzando un fattore di flessibilità , che confronta la metrica delle prestazioni come rapporto anziché un valore assoluto.
Criterio di arresto mediano
Il criterio di arresto in base alla mediana abbandona le prove quando la metrica di prestazioni obiettivo indica prestazioni peggiori della mediana delle medie di esecuzione di tutte le altre probe.
Ad esempio, il codice seguente applica un criterio di arresto mediano dopo un ritardo di cinque intervalli di report delle metriche e quindi valuta i criteri a ogni intervallo.
from azure.ai.ml.sweep import MedianStoppingPolicy
sweep_job.early_termination = MedianStoppingPolicy(
delay_evaluation = 5,
evaluation_interval = 1
)
Si supponga che la metrica primaria sia l'accuratezza del modello. Al sesto intervallo di reporting, il criterio confronta la media progressiva di ogni prova con la mediana delle medie progressive tra le prove. Se la mediana è 0,82, la politica interrompe una prova la cui media cumulativa è inferiore a 0,82. Continuano gli altri test e lo sweep prosegue.
Criteri di selezione troncamento
Il criterio di selezione del troncamento annulla l'X% di prove con le prestazioni più basse a ogni intervallo di valutazione in base al valore di truncation_percentage specificato per X.
Ad esempio, il codice seguente applica un criterio di selezione a troncamento con un ritardo di quattro prove, valuta il criterio a ogni intervallo e usa una percentuale di troncamento pari a 20%.
from azure.ai.ml.sweep import TruncationSelectionPolicy
sweep_job.early_termination = TruncationSelectionPolicy(
evaluation_interval=1,
truncation_percentage=20,
delay_evaluation=4
)
Si supponga che la metrica primaria sia l'accuratezza del modello. Al quinto intervallo di reporting, il criterio classifica le prove attive e annulla il 20% con le prestazioni peggiori. I test rimanenti e la scansione completa sono ancora in corso.