Hyperparameter-Abstimmung

Auf dieser Seite werden die Konzepte der Hyperparameter-Abstimmung beschrieben – der automatisierten Modelloptimierung, die von AI Platform Training bereitgestellt wird. Bei der Hyperparameter-Abstimmung wird die Verarbeitungsinfrastruktur der Google Cloud genutzt, 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.

Die Parameter Ihres Modells werden durch den Trainingsprozess optimiert bzw. "abgestimmt": Sie lassen Daten durch die Modellvorgänge laufen, vergleichen für jede Dateninstanz die daraus hervorgehende Vorhersage mit dem tatsächlichen Wert, evaluieren die Genauigkeit und nehmen so lange Anpassungen vor, bis die Werte optimal sind. 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 Hyperparameter-Abstimmung von AI Platform Training 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 AI Platform Training-Trainingsdienst verfolgt die Ergebnisse jedes Versuchs und nimmt Anpassungen für nachfolgende Versuche vor. Wenn der Job abgeschlossen ist, erhalten Sie eine Zusammenfassung aller Versuche zusammen mit der effektivsten Konfiguration von Werten gemäß den von Ihnen festgelegten Kriterien.

Die Hyperparameter-Abstimmung erfordert eine explizite Kommunikation zwischen dem AI Platform Training-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.

Im Blogpost Hyperparameter Tuning in Cloud Machine Learning Engine using Bayesian Optimization erfahren Sie, wie die Bayes'sche Optimierung zur Hyperparameter-Abstimmung in AI Platform Training verwendet wird.

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

Was optimiert Hyperparameter-Abstimmung?

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.

Messwertaufnahme in AI Platform Training

Bei TensorFlow-Modellen beobachtet der AI Platform Training-Dienst die zusammenfassenden Ereignisse von TensorFlow, die von Ihrer Trainingsanwendung generiert wurden, und ruft den Messwert ab. Wenn Ihr Modell mit einem anderen Framework erstellt wurde oder einen benutzerdefinierten Container verwendet, müssen Sie das Python-Paket cloudml-hypertune verwenden, um den Trainingsmesswert an AI Platform Training zu melden.

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. Wenn Sie mit AI Platform Training trainieren, wird Ihnen die Dauer des Jobs in Rechnung gestellt. Sie sollten die zu optimierenden Hyperparameter also sorgfältig auswählen, um den Zeit- und Kostenaufwand für das Modelltraining zu verringern.

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 AI Platform Training-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. AI Platform Training verwendet einen Standardalgorithmus, mit dem unter Anwendung der Bayes'schen Optimierung für die Gruppe von Hyperparametern der Bereich möglicher Hyperparameter-Werte durchsucht wird. Dadurch wird das effektivste Verfahren für Ihre Hyperparameter angewendet.

  • 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, erzeugt der AI Platform Training-Standardalgorithmus unter Umständen 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.

Nächste Schritte