Optuna ist ein automatisiertes Suchwerkzeug zur Optimierung von Hyperparametern in deinen Machine-Learning-Modellen. Durch verschiedene Suchmethoden und deren Kombination hilft dir diese Bibliothek, die optimalen Hyperparameter zu identifizieren.
Zur Wiederholung: Hyperparameter sind Daten, die vom Entwickler manuell eingegeben werden müssen. Im Gegensatz zum Lernen über Trainingsdaten. Sie haben einen erheblichen Einfluss auf die Funktionsweise des Modells und seine Leistung.
Wenn du z. B. ein neuronales Netz nur mit linearen Schichten trainieren möchtest, wären mögliche Hyperparameter u. a.:
- Anzahl der Schichten ;
- Units per Layer (Einheiten pro Schicht) ;
- Learning Rate (Lernrate) ;
- Regularization Force (Regularisierungskraft) ;
- Activation Function (Aktivierungsfunktion).
Selbst wenn du nur zwei potenzielle Werte pro Variable hast, kannst du schnell auf eine beeindruckende (und zeitraubende) Anzahl von Experimenten kommen. Du kannst dies also manuell mit Techniken wie Kreuzvalidierung oder Optimierung durch Trial and Error tun oder Optuna wählen, um diesen Prozess zu automatisieren.
Wie funktioniert Optuna ?
Das Prinzip von Optuna besteht darin, dass der Nutzer einen Raum mit Hyperparametern angibt, die getestet werden sollen. Das Tool ermittelt dann die Kombination von Hyperparametern, die das Machine-Learning-Modell optimieren. Um dies zu tun, musst du Optuna eine Leistungsmetrik zur Verfügung stellen. Das Tool wird sich bemühen, diese zu optimieren.
Das Suchwerkzeug hat Algorithmen in zwei verschiedene Kategorien aufgeteilt:
- die Stichprobenstrategie (sampling strategy) und
- die Reduktionsstrategie (pruning strategy).
Hinter der Stichprobenstrategie verbergen sich in Wirklichkeit drei verschiedene Methoden:
- Zufallssuche (random search): Bei dieser Methode werden die Hyperparameter zufällig aus dem festgelegten Suchraum ausgewählt. Diese Methode ist nützlich, wenn du nicht weißt, was du versuchen sollst.
- Grid Search: Hierbei werden alle möglichen Kombinationen im definierten Suchraum ausprobiert. Sie ist nützlich, wenn du eine bestimmte Idee ausprobieren möchtest. Sie ist jedoch sehr zeitaufwendig, wenn dein Suchraum zu groß ist.
- Bayes’sche Optimierung: Sie verwendet zuerst die Zufallssuche und verfeinert dann die Hyperparameter auf der Grundlage der Ergebnisse. Sie ist oft effektiver als die Zufallssuche, da sie ihre Versuche an den vorherigen Ergebnissen orientiert.
Über die Stichprobenstrategie hinaus kann die „pruning strategy“ die Anzahl unnötiger Versuche durch Early Stopping (vorzeitiges Beenden) derjenigen Versuche, die am wenigsten aussichtsreich erscheinen, reduzieren.
Dadurch kannst du Rechenzeit einsparen. Bedenke, dass Optuna, wenn du keine Strategie angibst, standardmäßig die Stichprobenstrategie mit Zufallssuche verwendet. Du wirst also keine Möglichkeit nutzen, um die Anzahl der Versuche zu reduzieren.
Was sind die Vorteile von Optuna ?
Sobald du die Hyperparameter deiner Machine-Learning-Modelle optimieren musst, erscheint Optuna als die beste Lösung, um diesen Prozess zu automatisieren. Diese Lösung hat viele Vorteile.
Der erste ist seine Benutzerfreundlichkeit. Denn das Suchwerkzeug lässt sich problemlos in deine bestehenden Machine-Learning-Pipelines integrieren. Du musst also nur deinen Suchraum für Hyperparameter und die Verlust- oder Kostenfunktion (loss function) definieren.
Anschließend bietet Optuna verschiedene Suchmethoden an (wie oben beschrieben). Diese verschiedenen Methoden bieten dir die Möglichkeit, deine Suche an den jeweiligen Anwendungsfall anzupassen. Außerdem kann das Tool auf jedes Machine-Learning-Modell angewendet werden. Clustering, Klassifizierung oder Regression, es unterstützt alles.
Mit einer einfachen Visualisierung der Ergebnisse ermöglicht dir Optuna ein besseres Verständnis dafür, wie Hyperparameter die Leistung deines Modells beeinflussen. Du hast also alle Schlüssel in der Hand, um die optimale Konfiguration von Hyperparametern für dein Modell zu bestimmen. Und das alles dank eines kostenlosen Open-Source-Projekts.
Wie kann man die Hyperparameter seines Modells mit Optuna optimieren?
Da du dir nun der Bedeutung von Optuna und der Zeitersparnis durch seine Verwendung bewusst bist, erfährst du, wie du es einrichten kannst.
- Importiere zunächst die Optuna-Module und andere Module, die du benötigst, um dein Template und deine Loss Function zu definieren: ‚!pip install optuna‘.
- Lege den Bereich für die Suche nach Hyperparametern fest. Verwende dazu die Funktion ‚create_study‘, um ein „study“-Objekt zu erstellen.
- Lege den Suchraum für Hyperparameter fest, indem du die Funktionen ’suggest_uniform‘ und ’suggest_loguniform‘ verwendest.
- Lege die Kostenfunktion fest: Sie muss eine Konfiguration von Hyperparametern eingeben und auf eine Leistungsbewertung verweisen.
- Starte die Suche nach Hyperparametern, indem du die Funktion „optimize“ des „study“-Objekts mit deiner Kostenfunktion als Argument aufrufst. Optuna beginnt dann mit der Suche nach den besten Hyperparametern unter Verwendung der von dir gewählten Stichprobenstrategie (standardmäßig Zufallssuche).
- Greife auf die Ergebnisse zu, indem du die Funktionen ‚get_best_params‘ und ‚get_best_value‘ verwendest. Du kannst auch die Optuna-Visualisierungsfunktionen ‚plot_intermediate_values‘ und ‚plot_optimization_history‘ verwenden.
Im Folgenden findest du ein Beispiel für die Optimierung der Hyperparameter eines linearen Regressionsmodells mit Optuna:
import optuna
# Erstelle das Objekt „study“ und definiere den Suchraum für Hyperparameter.
study = optuna.create_study()
study.suggest_uniform(„alpha“, 0.0, 1.0)
study.suggest_uniform(„l1_ratio“, 0.0, 1.0)
# Definiere die Kostenfunktion.
def objective(trial):
alpha = trial.suggest_uniform(„alpha“, 0.0, 1.0)
l1_ratio = trial.suggest_uniform(„l1_ratio“, 0.0, 1.0)
model = Lasso(alpha=alpha, l1_ratio=l1_ratio)
score = -1.0 * cross_val
Fazit
Optuna ist ein effizientes automatisiertes Suchwerkzeug zur Optimierung von Hyperparametern in Machine-Learning-Modellen. Seine Einfachheit, seine Flexibilität bei der Auswahl der Optimierungsalgorithmen und seine Integration in bestehende Pipelines machen es zu einem Muss
Du weißt jetzt alles über Optuma. Wenn du dieses Tool beherrschen möchtest, um deine Prozesse durch den Einsatz von Machine-Learning-Modellen zu automatisieren, dann entdecke die Kurse von DataScientest.