Hyperparameter-Abstimmung – Übersicht

Auf dieser Seite werden die Konzepte der Hyperparameter-Abstimmung beschrieben, der automatisierten Modelloptimierung der Cloud Machine Learning Engine. Hyperparameter-Abstimmung nutzt die Verarbeitungsinfrastruktur der Google Cloud Platform, um verschiedene Hyperparameter-Konfigurationen beim Trainieren Ihres Modells zu testen. Sie kann optimierte Werte für Hyperparameter liefern und damit die Vorhersagegenauigkeit Ihres Modells maximieren.

Was ist ein Hyperparameter?

Hyperparameter enthalten die Daten, denen der Trainingsprozess unterliegt.

Ihre Trainingsanwendung verarbeitet drei Kategorien von Daten, während Ihr Modell trainiert wird:

  • Ihre Eingabedaten (auch als Trainingsdaten bezeichnet) bestehen aus einer Sammlung einzelner Datensätze (Instanzen), in denen die Funktionen enthalten sind, die wichtig sind, um Probleme mit maschinellem Lernen zu lösen. Diese Daten werden während des Trainings verwendet, um das Modell so zu konfigurieren, dass genaue Vorhersagen über neue Instanzen ähnlicher Daten gemacht werden. Allerdings werden die Werte in den Eingabedaten nie direkt Teil des Modells.

  • Die Parameter des Modells sind die Variablen, mit denen das von Ihnen gewählte Verfahren für das maschinelle Lernen an die Daten angepasst wird. Zum Beispiel besteht ein neuronales Deep-Learning-Netzwerk (DNN) aus Verarbeitungsknoten (Neuronen) mit jeweils einem Vorgang, der während der Übertragung im Netzwerk an den Daten ausgeführt wird. Wenn das DNN trainiert wird, besitzt jeder Knoten einen gewichteten Wert, der dem Modell mitteilt, welchen Einfluss er auf die endgültige Vorhersage hat. Die Gewichtung ist ein Beispiel für die Parameter des Modells. In vielerlei Hinsicht sind die Parameter das Modell; durch die Parameter unterscheidet sich ein bestimmtes Modell von anderen Modellen desselben Typs, die mit ähnlichen Daten arbeiten.

  • Die Hyperparameter sind die Variablen, denen der Trainingsprozess unterliegt. Beispielsweise muss beim Erstellen eines neuronalen Deep-Learning-Netzwerks entschieden werden, wie viele versteckte Knotenebenen zwischen der Eingabe- und der Ausgabeebene enthalten sind. Außerdem muss die Anzahl der Knoten, die in jeder Ebene verwendet werden sollen, bestimmt werden. Diese Variablen stehen in keinem direkten Zusammenhang mit den Trainingsdaten. Sie sind lediglich Konfigurationsvariablen. Parameter können sich während eines Trainingsjobs verändern, Hyperparameter bleiben jedoch in der Regel während eines Jobs konstant.

Ihre Modellparameter werden durch den Trainingsprozess optimiert (oder "abgestimmt"): Ihre Daten durchlaufen die Vorgänge des Modells, vergleichen für jede Dateninstanz die daraus hervorgehende Vorhersage mit dem tatsächlichen Wert, evaluieren die Genauigkeit und werden angepasst, bis die besten Werte gefunden wurden. Hyperparameter sind in ähnlicher Weise abgestimmt, denn sie führen Ihren gesamten Trainingsjob aus, betrachten die Gesamtgenauigkeit und werden angepasst. In beiden Fällen ändern Sie die Zusammensetzung Ihres Modells, um die beste Kombination für die Lösung Ihres Problems zu finden.

Ohne eine automatisierte Technologie wie die Cloud ML Engine-Hyperparameter-Abstimmung müssen Sie manuelle Anpassungen der Hyperparameter über viele Trainingsläufe vornehmen, um die optimalen Werte zu ermitteln. Die Hyperparameter-Abstimmung vereinfacht und verkürzt die Bestimmung der besten Hyperparameter-Einstellungen.

So funktioniert die Hyperparameter-Abstimmung

Bei der Hyperparameter-Abstimmung werden mehrere Versuche in einem einzigen Trainingsjob ausführt. Jeder Versuch besteht aus einer vollständigen Ausführung Ihrer Trainingsanwendung mit Werten für Ihre gewählten Hyperparameter innerhalb von Ihnen festgelegter Grenzen. Der Cloud ML Engine-Trainingsdienst verfolgt die Ergebnisse jedes Versuchs und führt Anpassungen für nachfolgende Versuche durch. Wenn der Job abgeschlossen ist, erhalten Sie eine Zusammenfassung aller Versuche zusammen mit der effektivsten Konfiguration von Werten gemäß den von Ihnen festgelegten Kriterien.

Hyperparameter-Abstimmung erfordert eine explizite Kommunikation zwischen dem Cloud ML Engine-Trainingsdienst und Ihrer Trainingsanwendung. Von Ihrer Trainingsanwendung werden alle Informationen festgelegt, die Ihr Modell benötigt. Sie müssen die anzupassenden Hyperparameter (Variablen) sowie einen Zielwert für jeden Hyperparameter bestimmen.

Weitere Informationen zur Verwendung der Bayes'schen Optimierung für die Hyperparameter-Abstimmung in Cloud ML Engine finden Sie im Blogpost mit dem Titel Hyperparameter Tuning in Cloud Machine Learning Engine using Bayesian Optimization (Hyperparameter-Abstimmung in Cloud Machine Learning Engine mithilfe der Bayes'schen Optimierung).

Zusätzlich zur Bayes'schen Optimierung optimiert Cloud ML Engine Hyperparameter-Abstimmungsjobs. Wenn Sie die Hyperparameter-Abstimmung für ähnliche Modelle durchführen, lässt sich Cloud ML Engine nur durch Änderung der Zielfunktion oder durch Einfügen einer neuen Eingabespalte im Laufe der Zeit verbessern und die Hyperparameter-Abstimmung effizienter gestalten.

Mit Hyperparameter-Abstimmung optimieren

Durch Hyperparameter-Abstimmung wird eine einzelne Zielvariable (auch als Hyperparameter-Messwert bezeichnet) optimiert, die Sie angeben. Die Genauigkeit des Modells, berechnet aus einem Auswertungsdurchlauf, ist ein gemeinsamer Messwert. Der Messwert muss ein numerischer Wert sein. Sie können festlegen, ob Sie Ihr Modell anpassen möchten, um den Messwert zu maximieren oder zu minimieren.

Wenn Sie einen Job mit Hyperparameter-Abstimmung starten, bestimmen Sie den Namen Ihres Hyperparameter-Messwerts. Dies ist der Name, den Sie der skalaren Zusammenfassung zuordnen, die Sie Ihrer Trainingsanwendung hinzufügen.

Der Standardname des Messwerts lautet training/hptuning/metric. Es ist empfehlenswert, einen benutzerdefinierten Namen zuzuweisen. Der einzige funktionale Unterschied besteht darin, dass Sie bei einem benutzerdefinierten Namen den Wert hyperparameterMetricTag im Objekt HyperparameterSpec in der Jobanfrage an den ausgewählten Namen anpassen müssen.

So ruft Cloud ML Engine Ihren Messwert ab

Sie werden möglicherweise feststellen, dass es keine Anleitung in dieser Dokumentation für die Weitergabe Ihres Hyperparameter-Messwerts an den Cloud ML Engine-Trainingsdienst gibt. Das liegt daran, dass der Dienst zusammenfassende Ereignisse von TensorFlow, die von Ihrer Trainingsanwendung generiert wurden, überwacht und den Messwert abruft.

Fluss der Hyperparameter-Werte

Ohne Hyperparameter-Abstimmung können Sie Ihre Hyperparameter in Ihrer Trainingsanwendung beliebig festlegen. Sie können die Hyperparameter z. B. konfigurieren, indem Sie Befehlszeilenargumente an Ihr Hauptanwendungsmodul weiterleiten oder sie in einer Konfigurationsdatei an Ihre Anwendung weitergeben.

Wenn Sie die Hyperparameter-Abstimmung verwenden, müssen Sie die Werte der zur Abstimmung verwendeten Hyperparameter auf folgende Weise festlegen:

  • Definieren Sie im Haupt-Trainingsmodul für jeden abgestimmten Hyperparameter ein Befehlszeilenargument.

  • Verwenden Sie den für diese Argumente übergebenen Wert, um den entsprechenden Hyperparameter im TensorFlow-Code der Anwendung einzustellen.

Wenn Sie einen Trainingsjob mit Hyperparameter-Abstimmung konfigurieren, legen Sie jeden abzustimmenden Hyperparameter, seinen Typ und einen zu testenden Wertebereich fest. Sie ermitteln jeden Hyperparameter mit demselben Namen wie das entsprechende Argument, das Sie in Ihrem Hauptmodul definiert haben. Der Trainingsdienst fügt Befehlszeilenargumente ein, die diese Namen verwenden, wenn er Ihre Anwendung ausführt.

Hyperparameter zum Abstimmen auswählen

Es ist nicht einfach, allgemein gültige Ratschläge für die Auswahl der abzustimmenden Hyperparameter zu geben. Wenn Sie Erfahrung mit der maschinellen Lernmethode haben, die Sie verwenden, haben Sie wahrscheinlich einen Einblick in das Verhalten Ihrer Hyperparameter. Eventuell finden Sie auch Rat in Machine Learning-Communities.

Wie Sie Hyperparameter auch auswählen, Sie sollten sich über die Auswirkungen Ihrer Wahl bewusst sein. Jeder Hyperparameter, den Sie auswählen, kann die Anzahl der Versuche potenziell erhöhen, die für einen erfolgreichen Abstimmungsjob erforderlich sind. Beim Training für Cloud ML Engine werden Ihnen die Kosten nach der Dauer des Jobs in Rechnung gestellt. Durch sorgfältige Auswahl der Hyperparameter, die abgestimmt werden sollen, können Sie den Zeitaufwand und damit die Kosten für das Training Ihres Modells reduzieren.

Hyperparameter-Typen

Die unterstützten Hyperparameter-Typen sind in der Job-Referenzdokumentation aufgelistet. Im Objekt ParameterSpec geben Sie für jeden Hyperparameter den Typ und die entsprechenden Wertebereiche an, wie in der folgenden Tabelle angegeben:

Typ Wertebereiche Wertdaten
DOUBLE minValue & maxValue Gleitkommawerte
INTEGER minValue & maxValue Ganzzahlige Werte
CATEGORICAL categoricalValues Liste der Kategorie-Strings
DISCRETE discreteValues Liste von Werten in aufsteigender Reihenfolge

Hyperparameter-Skalierung

Sie können einen Skalierungstyp angeben, der auf einem Hyperparameter durchgeführt werden soll. Skalierung wird für DOUBLE- und INTEGER-Typen empfohlen. Die folgenden Skalierungstypen sind verfügbar:

  • UNIT_LINEAR_SCALE
  • UNIT_LOG_SCALE
  • UNIT_REVERSE_LOG_SCALE

Suchalgorithmen

Im Objekt HyperparameterSpec können Sie einen Suchalgorithmus angeben. Wenn Sie keinen Algorithmus angeben, verwendet der Job den Cloud ML Engine-Standardalgorithmus, der die Parametersuche steuert, um im Parameterbereich zu einer optimalen Lösung zu gelangen.

Verfügbare Werte sind:

  • ALGORITHM_UNSPECIFIED: Ergebnisse mit demselben Verhalten wie ohne Angabe eines Suchalgorithmus. Cloud ML Engine verwendet einen Standardalgorithmus, mit dem unter Anwendung der Bayes'schen Optimierung für die Gruppe von Hyperparametern der Bereich möglicher Hyperparameterwerte durchsucht wird.

  • GRID_SEARCH: Eine einfache Rastersuche im zulässigen Bereich. Diese Option ist besonders nützlich, wenn Sie mehr Tests als die Zahl der Punkte im zulässigen Bereich festlegen möchten. Ist in solchen Fällen keine Rastersuche festgelegt, generiert der Cloud ML Engine-Standardalgorithmus möglicherweise doppelte Vorschläge. Alle Parameter müssen vom Typ INTEGER, CATEGORICAL oder DISCRETE sein, um die Rastersuche nutzen zu können.

  • RANDOM_SEARCH: Eine einfache Zufallssuche im zulässigen Bereich.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

AI Platform für TensorFlow