Hyperparameter Tuning
Beim Abstimmen von Hyperparametern werden die Trainingseinstellungen ermittelt, die die Leistung auf den Validierungsdaten maximieren. Verglichen werden Gitter-, Zufalls-, Bayes- und evolutionäre Suche.
Beim Hyperparameter-Tuning werden die Trainingseinstellungen gesucht, mit denen ein Modell des maschinellen Lernens die beste Leistung auf zurückgehaltenen Daten erzielt. Hyperparameter werden vor Beginn des Trainings festgelegt, im Gegensatz zu den Modellgewichtungen, die das Training anhand der Daten erlernt. Jede Konfiguration muss bewertet werden, indem ein Modell trainiert und anhand von Validierungsdaten ausgewertet wird. Daher gehört das Tuning zu den rechenintensivsten Schritten bei der Modellentwicklung, und die Wahl einer guten Suchstrategie ist ebenso wichtig wie die Auswahl der zu durchsuchenden Werte.
Gängige Hyperparameter#
Beim Deep Learning für Bildverarbeitung lassen sich die am häufigsten abzustimmenden Einstellungen in einige Gruppen einteilen:
- Optimierung: Die Lernrate und ihr Verlauf, Momentum, Gewichtszerfall und die Wahl des Optimierers, etwa SGD oder des Adam-Optimierers. Die Lernrate hat meist den größten Einfluss und wird auf einer logarithmischen Skala durchsucht.
- Trainingsdauer und Batching: Die Anzahl der Epochen, die Aufwärmdauer und die Batchgröße.
- Datenerweiterung: Wahrscheinlichkeit und Stärke jeder Transformation, etwa Spiegelungen, Skalierung, Farbverschiebungen und Mosaike.
- Gewichte der Verlustterme: Die Faktoren, mit denen die Terme einer zusammengesetzten Verlustfunktion gewichtet werden, etwa Box- und Klassifikationsverluste bei einem Detektor.
Suchmethoden#
Praktiker erkunden den Raum möglicher Konfigurationen mit einigen wenigen Strategien:
- Rastersuche: Trainiert jede Kombination einer festgelegten Werteliste. Sie ist einfach und vollständig, doch die Kosten steigen mit jedem zusätzlichen Hyperparameter.
- Zufallssuche: Zieht zufällig Konfigurationen aus den zulässigen Wertebereichen. Bergstra und Bengio zeigten, dass sie in einem Bruchteil des Rechenaufwands Modelle findet, die so gut oder besser als bei der Rastersuche sind, denn bei einem bestimmten Problem sind nur wenige Hyperparameter von großer Bedeutung und durch zufälliges Ziehen werden mehr unterschiedliche Werte für jeden einzelnen ausprobiert.
- Bayes'sche Optimierung: Passt ein Ersatzmodell an, das beschreibt, wie der Score von den Hyperparametern abhängt, und wählt jeden nächsten Versuch dort, wo eine Verbesserung am wahrscheinlichsten scheint. Bibliotheken wie Optuna verwenden diesen Ansatz standardmäßig.
- Methoden zum vorzeitigen Abbruch: Hyperband und Successive Halving starten viele Konfigurationen mit einem kleinen Budget und weisen nur den vielversprechendsten weitere Epochen zu.
- Evolutionäre Algorithmen: Behandeln jede Konfiguration als Genom und verbessern eine Population von Konfigurationen durch Selektion und Mutation.
Evolutionäre Suche#
Die evolutionäre Suche eignet sich für Trainingsläufe mit vielen interagierenden Hyperparametern, da sie kein Modell des Suchraums benötigt, sondern nur einen Gütewert für jeden Versuch. In jeder Runde wird eine der bisher besten Konfigurationen ausgewählt, einige ihrer Werte werden mutiert, mit dem Ergebnis wird trainiert und die neue Konfiguration wird bei guter Bewertung in den Pool aufgenommen.
Der Ultralytics-Tuner führt diese Schleife beim YOLO-Training aus: Bei jeder Iteration wird ein Elternteil aus den neun Ergebnissen mit der höchsten Güte ausgewählt, ungefähr die Hälfte von bis zu 26 Hyperparametern zu Lernrate, Verlustfaktoren und Datenerweiterung wird mutiert und die Güte für die Erkennung als mAP50-95 bewertet. Die Hyperparameter für die COCO-Phase der offiziellen YOLO26-Checkpoints wurden mit dieser evolutionären Suche ermittelt.
from ultralytics import YOLO
# Lade ein vortrainiertes YOLO26n-Modell
model = YOLO("yolo26n.pt")
# Suchraum: (min, max)-Grenzen für jeden abzustimmenden Hyperparameter
search_space = {"lr0": (1e-5, 1e-2), "degrees": (0.0, 45.0)}
# Jede der 30 Iterationen trainiert 10 Epochen lang mit neu mutierten Werten
model.tune(data="coco8.yaml", epochs=10, iterations=30, space=search_space, plots=False, save=False, val=False)Der Lauf schreibt best_hyperparameters.yaml, ein Diagramm der Güte pro Iteration und die Gewichtungen der besten Iteration in ein Verzeichnis tune. model.tune() trainiert mit AdamW, sofern kein Optimierer angegeben ist, da der Standardwert optimizer="auto" den abgestimmten Wert lr0 überschreiben würde.
Hyperparameter-Tuning im Vergleich zu verwandten Begriffen#
- Modelltraining: Beim Training werden die Gewichtungen für einen festen Satz von Hyperparametern durch Backpropagation erlernt. Tuning ist die äußere Schleife, die das Training viele Male ausführt und die Ergebnisse vergleicht.
- Feinabstimmung: Trotz der ähnlichen Bezeichnung wird beim Feinabstimmen das Training der Gewichtungen eines vortrainierten Modells mit neuen Daten fortgesetzt. Dafür müssen eigene Hyperparameter abgestimmt werden, etwa eine niedrigere Lernrate und die Anzahl eingefrorener Schichten.
- Neuronale Architektursuche (NAS): Durchsucht die Netzwerkstruktur, etwa Schichttypen und -breiten, statt der Trainingseinstellungen.
- Automatisiertes maschinelles Lernen (AutoML): Automatisiert die umfassendere Pipeline einschließlich Modellauswahl und Datenvorverarbeitung, wobei Hyperparameter-Tuning eine Komponente darstellt.
- Überanpassung an den Validierungssatz: Hunderte von Tuning-Versuchen, die anhand derselben Validierungsaufteilung bewertet werden, können zufällig Einstellungen auswählen, die genau zu dieser Aufteilung passen. Daher gehören die endgültigen Ergebnisse auf einen separaten Testsatz, der beim Tuning nie verwendet wurde.










