Konfigurieren einer vorzeitigen Beendigung

Abgeschlossen

Die Hyperparameteroptimierung hilft Ihnen, Ihr Modell feinabzustimmen und die Hyperparameterwerte auszuwählen, die die beste Leistung Ihres Modells ermöglichen.

Für Sie das beste Modell zu finden, kann jedoch eine nie endende Eroberung 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 Optimierungsdurchlauf beenden und das Modell verwenden, das bisher am besten abgeschnitten hat.

Wenn Sie einen Aufräumauftrag in Azure Machine Learning konfigurieren, können Sie auch eine maximale Anzahl von Testversionen festlegen. Ein anspruchsvollerer Ansatz kann sein, einen Aufräumvorgang zu stoppen, wenn neuere Modelle keine deutlich 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 vorzeitige Beendigung verwenden möchten, hängt möglicherweise vom Suchbereich und der Samplingmethode ab, mit der Sie arbeiten.

Sie können beispielsweise eine Rastersamplingmethode in einem diskreten Suchbereich verwenden, was zu maximal sechs Versuchen führt. Mit sechs Testversionen werden maximal sechs Modelle trainiert, und eine Richtlinie für vorzeitige Beendigungen kann unnötig sein.

Eine Richtlinie für vorzeitige Beendigung kann besonders nützlich sein, wenn Sie mit kontinuierlichen Hyperparametern in Ihrem Suchbereich arbeiten. Fortlaufende Hyperparameter stellen eine unbegrenzte Anzahl möglicher Werte zur Auswahl dar. Wahrscheinlich möchten Sie eine Richtlinie für vorzeitige Beendigungen verwenden, wenn Sie mit kontinuierlichen Hyperparametern und einer zufälligen oder bayesischen Samplingmethode arbeiten.

Konfigurieren einer Richtlinie für vorzeitige Beendigung

Es gibt zwei Hauptparameter, wenn Sie eine Richtlinie für vorzeitige Beendigung verwenden:

  • evaluation_interval: Gibt an, in welchem Intervall die Richtlinie ausgewertet werden soll. Jedes Mal, wenn die primäre Metrik für eine Testversion protokolliert wird, zählt sie als Intervall.
  • delay_evaluation: Gibt an, wann mit der Auswertung der Richtlinie begonnen werden soll. Dieser Parameter ermöglicht es, dass eine Mindestanzahl von Versuchen abgeschlossen wird, ohne dass eine Richtlinie für vorzeitige Beendigung sie beeinflusst.

Neue Modelle können weiterhin nur etwas besser als frühere Modelle funktionieren. Um festzustellen, inwieweit ein Modell besser als vorherige Testversionen ausgeführt werden soll, gibt es drei Optionen für eine vorzeitige Beendigung:

  • Banditenrichtlinie: Verwendet einen slack_factor (relativ) oder slack_amount (absolut) Jedes neue Modell muss innerhalb des Pufferbereichs des leistungsstärksten Modells ausgeführt werden.
  • Median-Stopp-Richtlinie: Verwendet den Median der Durchschnittswerte der primären Metrik. Jedes neue Modell muss besser als der Median funktionieren.
  • 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 besser abschneiden als die am schlechtesten abgeschnittenen Versuche.

Banditenrichtlinie

Sie können eine Banditenrichtlinie verwenden, um einen Versuch zu beenden, wenn die Zielleistungsmetrik die beste bisherige Leistung um einen bestimmten Wert 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
)

Stellen Sie sich vor, dass die primäre Metrik die Genauigkeit des Modells ist. Wenn nach den ersten fünf Testversionen das leistungsstärkste Modell eine Genauigkeit von 0,9 aufweist, muss jedes neue Modell besser als (0,9-0,2) oder 0,7 ausgeführt werden. Wenn die Genauigkeit des neuen Modells höher als 0,7 ist, wird der Aufräumauftrag fortgesetzt. Wenn das neue Modell eine Genauigkeitsbewertung unter 0,7 aufweist, beendet die Richtlinie den Aufräumauftrag.

Diagramm mit zwei Beispielen bei der Verwendung einer Banditrichtlinie: ein Modell leistet ausreichend gut, das andere leistet schlechter.

Sie können auch eine Banditrichtlinie mit einem Pufferfaktor anwenden, der die Leistungsmetrik als Verhältnis anstelle eines absoluten Werts vergleicht.

Medianstopprichtlinie

Eine Median-Stopp-Politik bricht Versuche ab, bei denen die Zielleistungsmetrik schlechter ist als der Median der laufenden Durchschnitte aller Versuche.

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
)

Stellen Sie sich vor, dass die primäre Metrik die Genauigkeit des Modells ist. Wenn die Genauigkeit für die sechste Testversion protokolliert wird, muss die Metrik höher sein als der Median der bisher ermittelten Genauigkeitsergebnisse. Angenommen, der Median der Genauigkeitsergebnisse ist bisher 0,82. Wenn die Genauigkeit des neuen Modells höher als 0,82 ist, wird der Aufräumauftrag fortgesetzt. Wenn das neue Modell eine Genauigkeitsbewertung unter 0,82 aufweist, wird die Richtlinie den Aufräumauftrag beenden, und es werden keine neuen Modelle trainiert.

Diagramm mit zwei Beispielen für die Verwendung einer Median-Stopprichtlinie: Ein Modell liefert ausreichend gute Ergebnisse, das andere bleibt hinter den Erwartungen zurück.

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 
)

Stellen Sie sich vor, dass die primäre Metrik die Genauigkeit des Modells ist. Wenn die Genauigkeit für den fünften Versuch protokolliert wird, sollte die Metrik nicht in den schlechtesten 20% der bisher durchgeführten Versuche sein. 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.

Diagramm mit zwei Beispielen bei Verwendung einer Richtlinie für die Auswahl des Abschneidens: Ein Modell bietet eine ausreichende Leistung, das andere nicht.