Konfigurieren der vorzeitigen Beendigung
Mithilfe der Hyperparameteroptimierung können Sie Ihr Modell optimieren und die Hyperparameterwerte auswählen, mit denen Ihr Modell am besten funktioniert.
Das beste Modell zu finden, kann jedoch eine endlose Herausforderung sein. Sie müssen immer überlegen, ob es sich lohnt, neue Hyperparameterwerte zu testen, um ein Modell zu finden, das möglicherweise besser funktioniert.
Bei jedem Test in einem Sweepauftrag wird ein neues Modell mit einer neuen Kombination von Hyperparameterwerten trainiert. Wenn das Trainieren eines neuen Modells nicht zu einem wesentlich besseren Modell führt, sollten Sie den Sweepauftrag beenden und das Modell verwenden, das bisher am besten funktioniert hat.
Wenn Sie einen Sweepauftrag in Azure Machine Learning konfigurieren, können Sie auch eine maximale Anzahl von Tests festlegen. Ein komplexerer Ansatz kann das Beenden eines Sweepauftrags sein, wenn neuere Modelle keine wesentlich besseren Ergebnisse erzielen. Um einen Sweepauftrag basierend auf der Leistung der Modelle zu beenden, können Sie eine Richtlinie zur vorzeitigen Beendigung verwenden.
Wann ist eine Richtlinie zur vorzeitigen Beendigung sinnvoll?
Ob Sie eine Richtlinie für eine vorzeitige Beendigung verwenden möchten, hängt möglicherweise vom Suchbereich und der Samplingmethode ab, mit der Sie arbeiten.
Beispielsweise können Sie eine Rasterstichprobenentnahme-Methode für einen diskreten Suchbereich auswählen, was zu maximal sechs Tests führt. Bei sechs Tests werden maximal sechs Modelle trainiert, und eine Richtlinie zur vorzeitigen Beendigung kann unnötig sein.
Eine Richtlinie zur vorzeitigen Beendigung kann besonders vorteilhaft sein, wenn Sie mit kontinuierlichen Hyperparametern in Ihrem Suchbereich arbeiten. Kontinuierliche Hyperparameter stellen eine unbegrenzte Anzahl möglicher Werte zur Auswahl bereit. Sie sollten wahrscheinlich eine Richtlinie für die vorzeitige Beendigung verwenden, wenn Sie mit kontinuierlichen Hyperparametern und einer zufälligen oder Bayesschen Samplingmethode arbeiten.
Konfigurieren einer Richtlinie für vorzeitige Beendigung
Es gibt zwei Hauptparameter, wenn Sie sich für die Verwendung einer Richtlinie für eine vorzeitige Beendigung entscheiden:
evaluation_interval
: Gibt an, in welchem Intervall die Richtlinie ausgewertet werden soll. Jedes Mal, wenn die primäre Metrik für einen Test protokolliert wird, zählt als Intervall.delay_evaluation
: Gibt an, wann mit der Auswertung der Richtlinie begonnen werden soll. Dieser Parameter ermöglicht, dass ein Mindestmaß an Tests abgeschlossen werden kann, ohne dass sie von einer Richtlinie für eine vorzeitige Beendigung betroffen sind.
Neue Modelle funktionieren möglicherweise weiterhin nur geringfügig besser als frühere Modelle. Um zu bestimmen, inwieweit ein Modell besser als frühere Tests funktionieren soll, gibt es drei Optionen für die vorzeitige Beendigung:
- Banditenrichtlinie: Verwendet einen
slack_factor
(relativ) oderslack_amount
(absolut). Jedes neue Modell muss innerhalb des Slack-Bereichs des Modells mit der besten Leistung funktionieren. - Richtlinie zum Beenden des Medians: Verwendet den Median der Mittelwerte der primären Metrik. Jedes neue Modell muss mit seiner Leistung den Median überbieten.
- Richtlinie für die Auswahl des Abschneidens: Verwendet einen
truncation_percentage
-Wert, der dem Prozentsatz der Tests mit der niedrigsten Leistung entspricht. Jedes neue Modell muss eine bessere Leistung erbringen als die Tests mit der niedrigsten Leistung.
Banditenrichtlinie
Mit einer Banditenrichtlinie können Sie einen Test verhindern, wenn die Zielleistungsmetrik den bislang besten Test um eine festgelegte Differenz unterschreitet.
Der folgende Code wendet beispielsweise eine Banditenrichtlinie mit einer Verzögerung von fünf Testversionen an, wertet die Richtlinie in jedem Intervall aus und lässt eine absolute Slack-Menge von 0,2 zu.
from azure.ai.ml.sweep import BanditPolicy
sweep_job.early_termination = BanditPolicy(
slack_amount = 0.2,
delay_evaluation = 5,
evaluation_interval = 1
)
Denken Sie daran, die primäre Metrik ist die Genauigkeit des Modells. Wenn nach den ersten fünf Tests das Modell mit der besten Leistung eine Genauigkeit von 0,9 aufweist, muss jedes neue Modell eine bessere Leistung als (0,9-0,2) oder 0,7 aufweisen. Wenn die Genauigkeit des neuen Modells höher als 0,7 ist, wird der Sweepauftrag fortgesetzt. Wenn das neue Modell eine Genauigkeitsbewertung unter 0,7 aufweist, beendet die Richtlinie den Sweepauftrag.
Sie können eine Banditenrichtlinie auch mithilfe eines Pufferfaktors anwenden, bei dem die Leistungsmetrik als Verhältnis und nicht als absoluter Wert verglichen wird.
Medianstopprichtlinie
Eine Richtlinie zum Beenden des Medians bricht Tests ab, bei denen die Zielleistungsmetrik schlechter als der Median der Ausführungsdurchschnittswerte für alle Tests ist.
Der folgende Code wendet beispielsweise eine Richtlinie zum Beenden des Medians mit einer Verzögerung von fünf Tests an und wertet die Richtlinie in jedem Intervall aus.
from azure.ai.ml.sweep import MedianStoppingPolicy
sweep_job.early_termination = MedianStoppingPolicy(
delay_evaluation = 5,
evaluation_interval = 1
)
Denken Sie daran, die primäre Metrik ist die Genauigkeit des Modells. Wenn die Genauigkeit für den sechsten Test protokolliert wird, muss die Metrik höher als der Median der bisherigen Genauigkeitsbewertungen sein. Angenommen, der Median der Genauigkeitsbewertungen beträgt bisher 0,82. Wenn die Genauigkeit des neuen Modells höher als 0,82 ist, wird der Sweepauftrag fortgesetzt. Wenn das neue Modell eine Genauigkeitsbewertung unter 0,82 aufweist, beendet die Richtlinie den Sweepauftrag, und es werden keine neuen Modelle trainiert.
Kürzungsauswahlrichtlinie
Eine Richtlinie für die Auswahl des Abschneidens bricht die leistungsschwächsten X% der Tests bei jedem Auswertungsintervall auf der Grundlage des Werts von truncation_percentage ab, den Sie für X angeben.
Der folgende Code wendet beispielsweise eine Richtlinie für die Auswahl des Abschneidens mit einer Verzögerung von vier Tests an, wertet die Richtlinie in jedem Intervall aus und verwendet einen Abschneidungsprozentsatz von 20 %.
from azure.ai.ml.sweep import TruncationSelectionPolicy
sweep_job.early_termination = TruncationSelectionPolicy(
evaluation_interval=1,
truncation_percentage=20,
delay_evaluation=4
)
Denken Sie daran, die primäre Metrik ist die Genauigkeit des Modells. Wenn die Genauigkeit für den fünften Test protokolliert wird, sollte die Metrik nicht in den bisher schlechtesten 20 % der Tests liegen. In diesem Fall werden 20 % in einen Test übersetzt. Mit anderen Worten, wenn der fünfte Test nicht das bisher leistungsschwächste Modell ist, wird der Sweepauftrag fortgesetzt. Wenn der fünfte Test die niedrigste Genauigkeitsbewertung aller bisherigen Tests aufweist, wird der Sweepauftrag beendet.