Konfigurera tidig avslutning
Hyperparameterjustering hjälper dig att finjustera din modell och välja de hyperparametervärden som gör att din modell presterar bäst.
För att du ska kunna hitta den bästa modellen kan det dock vara en evig erövring. Du måste alltid fundera på om det är värt tiden och kostnaden för att testa nya hyperparametervärden för att hitta en modell som kan prestera bättre.
För varje försök i ett svepjobb tränas en ny modell med en ny kombination av hyperparametervärden. Om träning av en ny modell inte resulterar i en betydligt bättre modell kanske du vill stoppa svepjobbet och använda den modell som presterat bäst hittills.
När du konfigurerar ett svepjobb i Azure Machine Learning kan du också ange ett maximalt antal utvärderingsversioner. En mer avancerad metod kan vara att stoppa ett svepjobb när nyare modeller inte ger betydligt bättre resultat. Om du vill stoppa ett svepjobb baserat på modellernas prestanda kan du använda en princip för tidig avslutning.
När du ska använda en princip för tidig uppsägning
Om du vill använda en princip för tidig avslutning kan bero på sökutrymmet och samplingsmetoden som du arbetar med.
Du kan till exempel välja att använda en rutnätssampling metod över en diskret sökutrymme som resulterar i högst sex utvärderingsversioner. Med sex försök tränas högst sex modeller och en tidig avslutningspolicy kan vara onödig.
En princip för tidig avslutning kan vara särskilt fördelaktig när du arbetar med kontinuerliga hyperparametrar i ditt sökutrymme. Kontinuerliga hyperparametrar visar ett obegränsat antal möjliga värden att välja mellan. Du vill förmodligen använda en princip för tidig avslutning när du arbetar med kontinuerliga hyperparametrar och en slumpmässig eller Bayesiansk samplingsmetod.
Konfigurera en princip för tidig avslutning
Det finns två huvudparametrar när du väljer att använda en princip för tidig avslutning:
-
evaluation_interval
: Anger vid vilket intervall du vill att principen ska utvärderas. Varje gång det primära måttet loggas för ett försök betraktas som ett intervall. -
delay_evaluation
: Anger när principen ska börja utvärderas. Den här parametern gör det möjligt för åtminstone ett minimalt antal försök att slutföras utan att en policy för tidig avslutning påverkar dem.
Nya modeller kan fortsätta att prestera något bättre än tidigare modeller. För att avgöra i vilken utsträckning en modell ska prestera bättre än tidigare utvärderingsversioner finns det tre alternativ för tidig avslutning:
-
Bandit policy: Använder en
slack_factor
(relativ) ellerslack_amount
(absolut). Alla nya modeller måste prestera inom toleransområdet för den bäst presterande modellen. - Princip för medianstopp: Använder medianvärdet för medelvärdena för det primära måttet. Alla nya modeller måste prestera bättre än medianvärdet.
-
Truncation selection policy: Använder en
truncation_percentage
, vilket är procentandelen av testförsök med lägst prestanda. Alla nya modeller måste prestera bättre än de utvärderingsversioner som har lägst prestanda.
Bandit-princip
Du kan använda en banditprincip för att stoppa en utvärderingsversion om målprestandamåttet underpresterar den bästa utvärderingsversionen hittills med en angiven marginal.
Följande kod tillämpar till exempel en banditpolicy med en fördröjning på fem försök, utvärderar policyn vid varje intervall och tillåter en absolut marginal på 0,2.
from azure.ai.ml.sweep import BanditPolicy
sweep_job.early_termination = BanditPolicy(
slack_amount = 0.2,
delay_evaluation = 5,
evaluation_interval = 1
)
Tänk dig att det primära måttet är modellens noggrannhet. När den bäst presterande modellen efter de första fem utvärderingsversionerna har en noggrannhet på 0,9 måste alla nya modeller prestera bättre än (0,9-0,2) eller 0,7. Om den nya modellens noggrannhet är högre än 0,7 fortsätter svepjobbet. Om den nya modellen har en noggrannhetspoäng som är lägre än 0,7 avslutar principen svepjobbet.
Du kan också använda en banditprincip med hjälp av en slack-faktor, som jämför prestandamåttet som ett förhållande istället för ett absolut värde.
Princip för medianstopp
En medianstoppprincip överger försök där målprestandamåttet är sämre än medianvärdet för de löpande medelvärdena för alla utvärderingar.
Följande kod tillämpar till exempel en medianstoppstrategi med en fördröjning av fem försök och utvärderar strategin vid varje tillfälle.
from azure.ai.ml.sweep import MedianStoppingPolicy
sweep_job.early_termination = MedianStoppingPolicy(
delay_evaluation = 5,
evaluation_interval = 1
)
Tänk dig att det primära måttet är modellens noggrannhet. När noggrannheten loggas för det sjätte försöket måste måttet överstiga medianen av noggrannhetspoängen hittills. Anta att medianvärdet för noggrannhetspoängen hittills är 0,82. Om den nya modellens noggrannhet är högre än 0,82 fortsätter svepjobbet. Om den nya modellen har en noggrannhetspoäng som är lägre än 0,82 stoppar principen svepjobbet och inga nya modeller tränas.
Princip för val av trunkering
En selectionsprincip för trunkering avbryter de med lägst prestanda X% av försök vid varje utvärderingsintervall baserat på det truncation_percentage värde du specificerar för X.
Till exempel, tillämpar följande kod en trunkeringsurvalsprincip med en fördröjning på fyra försök, utvärderar principen vid varje intervall och använder en trunkeringsprocent på 20%.
from azure.ai.ml.sweep import TruncationSelectionPolicy
sweep_job.early_termination = TruncationSelectionPolicy(
evaluation_interval=1,
truncation_percentage=20,
delay_evaluation=4
)
Tänk dig att det primära måttet är modellens noggrannhet. När noggrannheten loggas för den femte utvärderingsversionen bör måttet inte vara i de sämsta 20% hittills. I det här fallet motsvarar 20% en försöksomgång. Med andra ord fortsätter svepjobbet om det femte försöket inte är den modell som presterat sämst hittills. Om det femte försöket har det lägsta noggrannhetsresultatet av alla försök hittills stoppar svepjobbet.