Regression mit neuronalen Netzwerken

Wichtig

Der Support für Machine Learning Studio (klassisch) endet am 31. August 2024. Es wird empfohlen, bis zu diesem Datum auf Azure Machine Learning umzustellen.

Ab dem 1. Dezember 2021 können Sie keine neuen Ressourcen in Machine Learning Studio (klassisch) mehr erstellen. Bis zum 31. August 2024 können Sie die vorhandenen Ressourcen in Machine Learning Studio (klassisch) weiterhin verwenden.

Die Dokumentation zu ML Studio (klassisch) wird nicht mehr fortgeführt und kann künftig nicht mehr aktualisiert werden.

Erstellt ein Regressionsmodell mithilfe eines neuronalen Netzwerkalgorithmus

Kategorie: Machine Learning/Initialize Model/Regression

Hinweis

Gilt für: Machine Learning Studio (klassisch)

Ähnliche Drag & Drop-Module sind im Azure Machine Learning-Designer verfügbar.

Modulübersicht

In diesem Artikel wird beschrieben, wie Sie das Modul Neural Network Regression in Machine Learning Studio (klassisch) verwenden, um ein Regressionsmodell mithilfe eines anpassbaren algorithmus für neuronale Netzwerke zu erstellen.

Neuronale Netzwerke sind zwar weithin für ihre Verwendung in Deep Learning und der Modellierung komplexer Probleme wie Bilderkennung bekannt, sie lassen sich aber einfach für Regressionsprobleme anpassen. Jede Klasse statistischer Modelle kann als neuronales Netz bezeichnet werden, sofern sie adaptive Gewichtungen verwenden und eine Annäherung an nicht lineare Funktionen in ihren Eingaben darstellen können. Daher ist Regression mit neuronalen Netzwerken für Probleme geeignet, für die traditionellere Regressionsmodelle keine passende Lösung bieten.

Regression mit neuronalen Netzen ist eine überwachte Lernmethode und erfordert daher ein mit Tags versehenes Dataset, das eine Bezeichnungsspalte enthält. Da ein Regressionsmodell einen numerischen Wert vorhersagt, muss die Bezeichnungsspalte ein numerischer Datentyp sein.

Sie können das Modell trainieren, indem Sie das Modell und das markierte Dataset als Eingabe für Train Model oderTune Model Hyperparameters bereitstellen. Das trainierte Modell kann anschließend verwendet werden, um Werte für neue Eingabebeispiele vorherzusagen.

Konfigurieren der Regression für neuronale Netzwerke

Neuronale Netzwerke können umfassend angepasst werden. In diesem Abschnitt werden zwei Methoden zum Erstellen eines Modells beschrieben:

  • Erstellen eines neuronalen Netzwerkmodells mithilfe der Standardarchitektur

    Wenn Sie die Standardarchitektur von neuronalen Netzen akzeptieren, verwenden Sie den Bereich Eigenschaften zum Festlegen von Parametern, die das Verhalten des neuronalen Netzwerks steuern, z. B. die Anzahl der Knoten in der verborgenen Ebene, die Lernrate und die Normalisierung.

    Beginnen Sie hier, wenn Sie noch nicht mit neuronalen Netzwerken vertraut sind. Das Modul unterstützt ohne tiefgreifende Kenntnis neuronaler Netze viele Anpassungen sowie die Optimierung von Modellen.

  • Definieren einer benutzerdefinierten Architektur für ein neuronales Netzwerk

    Verwenden Sie diese Option, wenn Sie zusätzliche verborgene Ebenen hinzufügen oder die Netzwerkarchitektur, ihre Verbindungen und die Aktivierungsfunktionen in vollem Umfang anpassen möchten.

    Diese Option eignet sich besonders, wenn Sie bereits etwas mit neuronalen Netzwerken vertraut sind. Sie verwenden die Net#-Sprache, um die Netzwerkarchitektur zu definieren.

Erstellen eines neuronalen Netzwerkmodells mithilfe der Standardarchitektur

  1. Fügen Sie Ihrem Experiment in Studio (klassisch) das Modul Neural Network Regression hinzu. Sie finden dieses Modul unter Machine Learning, Initialize (Initialisieren) in der Kategorie Regression.

  2. Geben Sie an, wie das Modell trainiert werden soll, indem Sie die Option Create trainer mode (Trainermodus erstellen) aktivieren.

    • Single Parameter (Einzelner Parameter): Wählen Sie diese Option, wenn Sie bereits wissen, wie Sie das Modell konfigurieren möchten.

    • Parameterbereich: Wählen Sie diese Option aus, wenn Sie sich nicht sicher sind, welche Parameter am besten sind. Geben Sie dann einen Wertebereich an, und verwenden Sie das Modul Tune Model Hyperparameters , um die Kombinationen zu iterieren und die optimale Konfiguration zu finden.

  3. Wählen Sie unter Hidden layer specification (Spezifikation der verborgenen Ebene) die Option Fully-connected case (Vollständig verbundener Fall) aus. Diese Option erstellt ein Modell mit der Standardarchitektur für neuronale Netze, die im Fall eines Regressionsmodells mit neuronalen Netzen drei Attribute aufweist:

    • Das Netzwerk verfügt über genau eine verborgene Ebene.
    • Die Ausgabeebene ist vollständig mit der verborgenen Ebene verbunden, und die verborgene Ebene ist vollständig mit der Eingabeebene verbunden.
    • Die Anzahl der Knoten in der verborgenen Ebene kann vom Benutzer festgelegt werden (der Standardwert beträgt 100).

    Da die Anzahl der Knoten auf der Eingabeebene durch die Anzahl der Merkmale in den Trainingsdaten bestimmt wird, kann es in einem Regressionsmodell nur einen Knoten auf der Ausgabeebene geben.

  4. Geben Sie in Anzahl der verborgenen Knoten die Anzahl der verborgenen Knoten ein. Der Standardwert ist eine verborgene Ebene mit 100 Knoten. (Diese Option ist nicht verfügbar, wenn Sie mithilfe von Net# eine benutzerdefinierte Architektur definieren.)

  5. Geben Sie für Learning rate (Lernrate) einen Wert ein, der die Größe des Schritts definiert, der bei jeder Iteration vor der Korrektur erfolgt. Ein höherer Wert für die Lernrate kann dazu führen, dass das Modell schneller konvergiert, wobei es jedoch lokale Mindestwerte überschreiten kann.

  6. Geben Sie für Number of learning iterations (Anzahl der Lerniterationen) die maximale Häufigkeit an, mit der der Algorithmus die Trainingsfälle verarbeitet.

  7. Geben Sie für The initial learning weights weights (Die anfänglichen Lerngewichtungen) einen Wert ein, der die Knotengewichtungen zu Beginn des Lernprozesses bestimmt.

  8. Geben Sie für The momentum (Dynamik) einen Wert ein, der beim Lernen als Gewichtung auf Knoten aus früheren Iterationen angewendet werden soll.

  9. Wählen Sie für Den Typ der Normalisierung eine der folgenden Methoden aus, die für die Featurenormalisierung verwendet werden soll:

    • Binning normalizer:Beim Binning werden Gruppen gleicher Größe erstellt, und anschließend werden alle Werte in jeder Gruppe normalisiert, die durch die Gesamtzahl der Gruppen dividiert werden sollen.

    • Gaußsche Normalisierung: Gaußsche Normalisierung skaliert die Werte der einzelnen Features so neu, dass sie den Mittelwert 0 und die Varianz 1 aufweisen. Dies erfolgt, indem der Mittelwert und die Varianz der einzelnen Features berechnen und dann für jede Instanz der Mittelwert subtrahiert und durch die Quadratwurzel der Varianz (die Standardabweichung) dividiert wird.

    • Min-Max-Normalisierung: Bei der Min-Max-Normalisierung wird jedes Feature linear auf das [0,1]-Intervall neu skaliert.

      Die Umskalierung in das Intervall [0,1] erfolgt durch Verschieben der Werte jedes Features, sodass der Minimalwert 0 ist. Anschließend erfolgt eine Division durch den neuen Maximalwert (was die Differenz zwischen dem ursprünglichen Maximal- und Minimalwert ergibt).

    • Nicht normalisieren: Es wird keine Normalisierung durchgeführt.

  10. Wählen Sie die Option Shuffle examples (Zufallsreihenfolge der Beispiele) aus, um die Reihenfolge der Fälle zwischen den Iterationen zu ändern. Wenn Sie diese Option deaktivieren, werden die Fälle bei jeder Ausführung des Experiments in genau der gleichen Reihenfolge verarbeitet.

  11. Für Random number seed (Zufällig gewählter Startwert) können Sie optional einen Wert eingeben, der als Startwert verwendet werden soll. Die Angabe eines Startwerts ist nützlich, wenn Sie die Wiederholbarkeit für alle Ausführungen desselben Experiments sicherstellen möchten.

  12. Wählen Sie die Option Unbekannte Kategorieebenen zulassen aus, um eine Gruppierung für unbekannte Werte zu erstellen. Das Modell ist für bekannte Werte möglicherweise weniger präzise, bietet jedoch bessere Vorhersagen für neue (unbekannte) Werte.

    Wenn Sie diese Option deaktivieren, kann das Modell nur die Werte akzeptieren, die in den Trainingsdaten enthalten sind.

  13. Verbinden ein Trainingsdätset und eines der Trainingsmodule:

    Warnung

    Wenn Sie einen Parameterbereich an Train Model übergeben, wird nur der erste Wert in der Parameterbereichsliste verwendet.

    Wenn Sie eine einzelne Reihe bestimmter Parameterwerte an das Modul Tune Model Hyperparameters übergeben und ein Bereich von Einstellungen für jeden Parameter erwartet wird, werden die Werte ignoriert und stattdessen die Standardwerte für den Learner verwendet.

    Wenn Sie die Option Parameter Range (Parameterbereich) auswählen und einen einzelnen Wert für einen beliebigen Parameter eingeben, wird dieser angegebene einzelne Wert während des gesamten Löschvorgangs verwendet, auch wenn andere Parameter in einem Wertebereich geändert werden.

  14. Führen Sie das Experiment aus.

Definieren einer benutzerdefinierten Architektur

  1. Fügen Sie Ihrem Experiment das Modul Neural Network Regression hinzu.

  2. Geben Sie an, wie das Modell trainiert werden soll, indem Sie die Option Create trainer mode (Trainermodus erstellen) aktivieren.

    • Single Parameter (Einzelner Parameter): Wählen Sie diese Option, wenn Sie bereits wissen, wie Sie das Modell konfigurieren möchten.

    • Parameterbereich: Wählen Sie diese Option aus, wenn Sie sich nicht sicher sind, welche Parameter am besten sind. Geben Sie dann einen Wertebereich an, und verwenden Sie das Modul Tune Model Hyperparameters , um die Kombinationen zu iterieren und die optimale Konfiguration zu finden.

  3. Wählen Sie unter Hidden layer specification (Spezifikation der verborgenen Ebene) die Option Custom definition script (Skript für benutzerdefinierte Definition) aus. Sie müssen diese Option auswählen, wenn Sie eine benutzerdefinierte neuronale Netzwerkarchitektur mithilfe der Net#-Sprache definieren möchten.

  4. Nachdem Sie die Option Benutzerdefiniertes Definitionsskript ausgewählt haben, wird das Textfeld Definition des neuronalen Netzwerks angezeigt. Sie können ein Net#-Skript einfügen, um eine benutzerdefinierte Architektur für das neuronale Netzwerk zu definieren, einschließlich der Anzahl der ausgeblendeten Ebenen, deren Verbindungen und erweiterter Optionen, z. B. der Angabe der Zuordnungen zwischen Ebenen.

  5. Geben Sie für Learning rate (Lernrate) einen Wert ein, der die Größe des Schritts definiert, der bei jeder Iteration vor der Korrektur erfolgt. Ein höherer Wert für die Lernrate kann dazu führen, dass das Modell schneller konvergiert, wobei es jedoch lokale Mindestwerte überschreiten kann.

  6. Geben Sie für Number of learning iterations (Anzahl der Lerniterationen) die maximale Häufigkeit an, mit der der Algorithmus die Trainingsfälle verarbeitet.

  7. Geben Sie für The initial learning weights weights (Die anfänglichen Lerngewichtungen) einen Wert ein, der die Knotengewichtungen zu Beginn des Lernprozesses bestimmt.

  8. Geben Sie für The momentum (Dynamik) einen Wert ein, der beim Lernen als Gewichtung auf Knoten aus früheren Iterationen angewendet werden soll.

  9. Wählen Sie für Den Typ der Normalisierung eine der folgenden Methoden aus, die für die Featurenormalisierung verwendet werden soll:

    • Binning normalizer( Binning normalizer): Beim Binning werden Gruppen gleicher Größe erstellt, und anschließend werden alle Werte in jeder Gruppe normalisiert, indem durch die Gesamtzahl der Gruppen dividiert wird.

    • Gaußsche Normalisierung: Gaußsche Normalisierung skaliert die Werte der einzelnen Features so neu, dass sie den Mittelwert 0 und die Varianz 1 aufweisen. Dies erfolgt, indem der Mittelwert und die Varianz der einzelnen Features berechnen und dann für jede Instanz der Mittelwert subtrahiert und durch die Quadratwurzel der Varianz (die Standardabweichung) dividiert wird.

    • Min-Max: Bei der Min-Max-Normalisierung wird jedes Feature linear auf das [0,1]-Intervall neu skaliert.

      Die Umskalierung in das Intervall [0,1] erfolgt durch Verschieben der Werte jedes Features, sodass der Minimalwert 0 ist. Anschließend erfolgt eine Division durch den neuen Maximalwert (was die Differenz zwischen dem ursprünglichen Maximal- und Minimalwert ergibt).

    • Nicht normalisieren: Es wird keine Normalisierung durchgeführt.

  10. Wählen Sie die Option Shuffle examples (Zufallsreihenfolge der Beispiele) aus, um die Reihenfolge der Fälle zwischen den Iterationen zu ändern. Wenn Sie diese Option deaktivieren, werden die Fälle bei jeder Ausführung des Experiments in genau der gleichen Reihenfolge verarbeitet.

  11. Für Random number seed (Zufällig gewählter Startwert) können Sie optional einen Wert eingeben, der als Startwert verwendet werden soll. Die Angabe eines Startwerts ist nützlich, wenn Sie die Wiederholbarkeit für alle Ausführungen desselben Experiments sicherstellen möchten.

  12. Wählen Sie die Option Unbekannte Kategorieebenen zulassen aus, um eine Gruppierung für unbekannte Werte zu erstellen. Alle unbekannten Werte im Testdatensatz werden dieser unbekannten Kategorie zugeordnet. Wenn Sie diese Option verwenden, ist das Modell möglicherweise etwas weniger präzise für bekannte Werte, bietet aber bessere Vorhersagen für neue (unbekannte) Werte.

    Wenn Sie diese Option deaktivieren, kann das Modell nur Vorhersagen für die in den Trainingsdaten enthaltenen Werte treffen.

  13. Verbinden ein Trainings-Datset und eines der Trainingsmodule:

    • Wenn Sie Create trainer mode (Trainermodus erstellen) auf Single Parameter (Einzelner Parameter) festlegen, müssen Sie Train Model verwenden.

    • Wenn Sie Trainermodus erstellen auf Parameterbereich festlegen, verwenden Sie Tune Model Hyperparameters.

    Warnung

    Wenn Sie einen Parameterbereich an Train Model übergeben, wird nur der erste Wert in der Parameterbereichsliste verwendet.

    Wenn Sie einen einzelnen Satz von Parameterwerten an das Modul Tune Model Hyperparameters übergeben, werden die Werte ignoriert und die Standardwerte für das Lernmodul verwendet, wenn ein Bereich von Einstellungen für jeden Parameter erwartet wird.

    Wenn Sie die Option Parameterbereich auswählen und einen einzelnen Wert für einen Parameter eingeben, wird dieser einzelne wert, den Sie angegeben haben, während des gesamten Sweepings verwendet, auch wenn sich andere Parameter über einen Wertebereich hinweg ändern.

  14. Führen Sie das Experiment aus.

Ergebnisse

Nach Abschluss des Trainings:

  • Klicken Sie mit der rechten Maustaste auf die Ausgabe der Parameter Train Model (Modell trainieren) oder Tune Model Hyperparameter (Modell optimieren), und wählen Sie Visualize (Visualisieren) aus, um eine Zusammenfassung der Parameter des Modells zusammen mit den aus dem Training gelernten Featuregewichtungen und anderen Parametern des neuronalen Netzwerks anzuzeigen.

  • Um eine Momentaufnahme des trainierten Modells zu speichern, klicken Sie mit der rechten Maustaste auf die Ausgabe Trained model (Trainiertes Modell), und wählen Sie Save As Trained Model (Als trainiertes Modell speichern) aus. Dieses Modell wird bei nachfolgenden Ausführungen desselben Experiments nicht aktualisiert.

  • Um eine Kreuzvalidierung für ein bezeichnetes DataSet durchzuführen, verbinden Sie das untrainierte Modell mit Cross-Validate Model.

Beispiele

Beispiele für die Verwendung dieses Algorithmus in Experimenten finden Sie in den folgenden Beispielen im Azure KI-Katalog:

Die Experimente bieten weitere Hilfe zu Net#. Die Experimente beziehen sich auf die grundlegenden und erweiterten Konfigurationen:

Technische Hinweise

Dieser Abschnitt enthält Implementierungsdetails, Tipps und Antworten auf häufig gestellte Fragen.

Weitere Informationen zu Net #

In Machine Learning Studio (klassisch) können Sie die Architektur eines neuronalen Netzwerkmodells mithilfe der Sprache Net# anpassen. Zu den von der Net#-Sprache unterstützten Anpassungen gehören:

  • Angeben der Anzahl der ausgeblendeten Ebenen und der Anzahl der Knoten in jeder Ebene
  • Angeben von Zuordnungen zwischen Ebenen
  • Definieren von Konvolutionen und Gewichtungsfreigabebündeln
  • Auswählen der Aktivierungsfunktion

Das Modell eines neuronalen Netzwerks wird durch die Struktur seines Diagramms definiert, die folgende Attribute umfasst:

  • Die Anzahl der ausgeblendeten Ebenen
  • Die Anzahl der Knoten in jeder verborgenen Ebene
  • Wie die Ebenen verbunden sind
  • Welche Aktivierungsfunktion wird verwendet?
  • Gewichtungen an den Diagrammflanken

Wichtig

Die Gesamtstruktur des Diagramms sowie die Aktivierungsfunktion können vom Benutzer angegeben werden. Die Gewichtungen an den Rändern können jedoch nicht angegeben werden und müssen beim Trainieren des neuronalen Netzwerks für die Eingabedaten erlernt werden.

Im Allgemeinen weist das Netzwerk die folgenden Standardwerte auf:

  • Die erste Ebene ist immer die Eingabeebene.
  • Die letzte Ebene ist immer die Ausgabeebene.
  • Die Anzahl der Knoten in der Ausgabeebene sollte mit der Anzahl der Klassen identisch sein.

Sie können eine beliebige Anzahl von Zwischenebenen definieren (diese werden auch als verborgene Ebenen bezeichnet, da sie zwar im Modell enthalten, aber nicht direkt als Endpunkte verfügbar sind).

Das Net#-Referenzhandbuch erklärt die Syntax und enthält Beispiele für Netzwerkdefinitionen. Sie erfahren darin, wie Sie mit Net# verborgene Ebenen hinzufügen und die Methode definieren, mit der die verschiedenen Ebenen miteinander interagieren.

Das folgende Skript verwendet z. B. das auto Schlüsselwort , das die Anzahl der Features automatisch für Eingabe- und Ausgabeebenen festlegt, und verwendet die Standardwerte für die verborgene Ebene.

input Data auto;  
hidden Hidden auto from Data all;  
output Result auto from Hidden all;   

Weitere Skriptbeispiele finden Sie im Leitfaden zur Net#-Spezifikationssprache für neuronale Netzwerke.

Tipp

Neuronale Netze können aufgrund einer Reihe von Hyperparametern und der Einführung benutzerdefinierter Netzwerktopologien rechenintensiv sein. In vielen Fällen erzeugen neuronale Netzwerke bessere Ergebnisse als andere Algorithmen. Allerdings erhalten Sie solche Ergebnisse mitunter nur durch viel Sweeping (Iteration) über Hyperparameter.

Modulparameter

Name Range type Standard Beschreibung
Hidden layer specification Liste Topologie neuronaler Netzwerke Fully-connected case Geben Sie die Architektur der verborgenen Ebene oder Ebenen an.
The initial learning weights diameter >=double.Epsilon Float 0,1 Geben Sie die Knotengewichtungen am Anfang des Lernprozesses an.
Learning rate (Lernrate) [double.Epsilon;0.01] Float 0,005 Geben Sie die Größe der einzelnen Schritte im Lernprozess an.
The momentum [0.0;1.0] Float 0,0 Geben Sie eine Gewichtung an, die beim Lernen auf Knoten aus früheren Iterationen angewendet werden soll.
Neural network definition Any StreamReader Geben Sie bei Auswahl von "Custom definition script" einen gültigen Skriptausdruck in jeder Zeile ein, um die Ebenen, die Knoten und das Verhalten eines benutzerdefinierten neuronalen Netzwerks zu definieren.
The type of normalizer Liste Normalisierungsmethode Min-Max normalizer Wählen Sie den Typ der Normalisierung aus, der auf Lernbeispiele anzuwenden ist.
Anzahl ausgeblendeter Knoten Any String 100 Geben Sie die Anzahl der Knoten in der verborgenen Ebene ein. Geben Sie bei mehreren verborgenen Ebenen eine durch Kommas getrennte Liste ein.
Number of learning iterations >=1 Integer 100 Geben Sie die Anzahl der Iterationen beim Lernen an.
Shuffle examples Any Boolean true Wählen Sie diese Option aus, um die Reihenfolge der Instanzen zwischen Lerniterationen zu ändern.
Random number seed Any Integer Geben Sie einen numerischen Ausgangswert für die Erzeugung von Zufallszahlen an. Lassen Sie das Feld leer, um den Standardausgangswert zu verwenden.

Dieser Parameter ist optional.
Allow unknown categorical levels Any Boolean true Geben Sie an, ob eine zusätzliche Ebene für unbekannte Kategorien erstellt werden soll. Wenn das Testdataset Kategorien enthält, die im Trainingsdataset nicht vorhanden sind, werden sie dieser Ebene für unbekannte Kategorien zugeordnet.

Ausgaben

Name Type BESCHREIBUNG
Untrainiertes Modell ILearner-Schnittstelle Ein untrainiertes Regressionsmodell

Siehe auch

Regression
Modulliste von A bis Z