Regression mit neuronalen Netzwerken

Erstellt ein Regressionsmodell mithilfe eines neuronalen Netzwerkalgorithmus

Kategorie: Machine Learning/Modell/Regression initialisieren

Hinweis

Gilt für: Machine Learning Studio (klassisch)

Dieser Inhalt bezieht sich nur auf Studio (klassisch). Ähnliche Drag & Drop-Module wurden Azure Machine Learning-Designer hinzugefügt. Weitere Informationen finden Sie in diesem Artikel zum Vergleich der beiden Versionen.

Modulübersicht

In diesem Artikel wird beschrieben, wie Sie das Neural Network Regression -Modul in Azure Machine Learning Studio (klassisch) verwenden, um ein Regressionsmodell mithilfe eines anpassbaren Neural Network-Algorithmus 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 zum trainieren von Modellen oder Optimieren von Modell hyperparameternbereitstellen. Das trainierte Modell kann anschließend verwendet werden, um Werte für neue Eingabebeispiele vorherzusagen.

Konfigurieren der Regression von neuronalen Netzwerken

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 Programmier Sprache net # , um die Netzwerkarchitektur zu definieren.

Erstellen eines neuronalen Netzwerk Modells mit der Standard Architektur

  1. Fügen Sie das Modul für neuronale Netzwerk Regression Ihrem Experiment in Studio (klassisch) 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.

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

  3. Wählen Sie in der Definition der verborgenen Ebene den Fall vollständig verbunden 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 den ersten Lern Gewichtungs Gewichtungs Wert einen Wert ein, der die Knoten Gewichtungen zu Beginn des Lern Vorgangs 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 des normalisierungsprogramms eine der folgenden Methoden für die Normalisierung der Funktion aus:

    • Klassieren der Normalisierung: bei der Klassifizierung werden Gruppen gleicher Größe erstellt, und anschließend werden alle Werte in jeder Gruppe so normalisiert, dass Sie durch die Gesamtzahl der Gruppen aufgeteilt werden.

    • Gauß-Normalisierer: gausche Normalisierungen setzen die Werte der einzelnen Features um Mittelwert 0 und Varianz 1 um. Dies erfolgt durch Berechnen des Mittelwerts und der Varianz der einzelnen Features. Anschließend wird für jede Instanz der Mittelwert subtrahieren und durch die Quadratwurzel der Varianz (Standardabweichung) dividiert.

    • Min-Max Normalisierungsfunktion: min-max-Normalisierung: Linear wird jede Funktion auf das Intervall [0,0] umgestellt.

      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 ausgefü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 kategorische Ebenen zulassen aus, um eine Gruppierung für unbekannte Werte zu erstellen. Das Modell ist möglicherweise weniger präzise für bekannte Werte, bietet jedoch bessere Vorhersagen für neue (unbekannte) Werte.

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

  13. Verbinden Sie ein Trainingsdaten Satz 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 den Create Trainer-Modus auf Parameter Bereich 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 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 dem Experiment das Regressions Modul für neuronale Netzwerke 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.

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

  3. Wählen Sie in der Definition der verborgenen Ebene benutzerdefiniertes Definitions Skript aus. Sie müssen diese Option auswählen, wenn Sie eine benutzerdefinierte neuronale Netzwerkarchitektur mithilfe der Programmiersprache net # definieren möchten.

  4. Nachdem Sie die Option benutzerdefiniertes Definitions Skript ausgewählt haben, wird das Textfeld neuronale Netzwerk Definition angezeigt. Sie können das NET #-Skript einfügen, um eine benutzerdefinierte Architektur für das neuronale Netzwerk zu definieren, einschließlich der Anzahl der verborgenen Ebenen, ihrer Verbindungen und erweiterter Optionen, wie z. b. das Angeben 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 den ersten Lern Gewichtungs Gewichtungs Wert einen Wert ein, der die Knoten Gewichtungen zu Beginn des Lern Vorgangs 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 des normalisierungsprogramms eine der folgenden Methoden für die Normalisierung der Funktion aus:

    • Klassieren der Normalisierung: bei der Klassifizierung werden Gruppen gleicher Größe erstellt, und anschließend werden alle Werte in jeder Gruppe normalisiert, indem die Gesamtzahl der Gruppen geteilt wird.

    • Gauß-Normalisierer: gausche Normalisierungen setzen die Werte der einzelnen Features um Mittelwert 0 und Varianz 1 um. Dies erfolgt durch Berechnen des Mittelwerts und der Varianz der einzelnen Features. Anschließend wird für jede Instanz der Mittelwert subtrahieren und durch die Quadratwurzel der Varianz (Standardabweichung) dividiert.

    • Min-Max: min-max-Normalisierung: Linear wird jede Funktion auf das Intervall [0,0] umgestellt.

      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 ausgefü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 kategorische Ebenen zulassen aus, um eine Gruppierung für unbekannte Werte zu erstellen. Alle unbekannten Werte im Test Dataset sind dieser unbekannten Kategorie zugeordnet. Wenn Sie diese Option verwenden, wird das Modell für bekannte Werte möglicherweise weniger präzise, aber bessere Vorhersagen für neue (unbekannte) Werte bereitgestellt.

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

  13. Verbinden Sie ein Trainingsdaten Satz 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 den Create Trainer-Modus auf Parameter Bereich festlegen, verwenden Sie Tune Model hyperparameters.

    Warnung

    Wenn Sie einen Parameter Bereich übergeben, um das Modell zu trainieren, wird nur der erste Wert in der Liste Parameter Bereich verwendet.

    Wenn Sie einen einzelnen Satz von Parameterwerten an das Modul " Tune Model hyperparameters " übergeben und eine Reihe von Einstellungen für jeden Parameter erwartet, werden die Werte ignoriert und die Standardwerte für den Lerner verwendet.

    Wenn Sie die Option Parameter Bereich auswählen und einen einzelnen Wert für einen beliebigen Parameter eingeben, wird dieser einzelne Wert, den Sie angegeben haben, während des Sweep verwendet, auch wenn andere Parameter in einem Wertebereich geändert werden.

  14. Führen Sie das Experiment aus.

Ergebnisse

Nach Abschluss des Trainings:

  • Klicken Sie mit der rechten Maustaste auf die Ausgabe von Train Model , und wählen Sie dann visualisieren aus, umeine Zusammenfassung der Parameter des Modells sowie die aus dem Training gewonnenen Merkmals Gewichtungen und andere Parameter 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 Kreuz Validierung für ein bezeichnetes DataSet auszufü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 in der Azure AI Gallery:

Die Experimente bieten weitere Hilfe zu net #. Die Experimente sind zusammenhängender und Fortschritt von grundlegenden zu erweiterten Konfigurationen:

Technische Hinweise

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

Weitere Informationen zu net

In Azure Machine Learning Studio (klassisch) können Sie die Architektur eines neuronalen Netzwerk Modells mithilfe der Programmiersprache net # anpassen. Folgende Anpassungen werden von der Programmiersprache NET # unterstützt:

  • Angeben der Anzahl der verborgenen Ebenen und der Anzahl von Knoten in jeder Ebene
  • Angeben von Zuordnungen zwischen Ebenen
  • Definieren von konvolutionen und Bündel mit Gewichtungs Freigabe
  • Auswählen der Aktivierungsfunktion

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

  • Die Anzahl der verborgenen Ebenen.
  • Die Anzahl der Knoten in jeder verborgenen Ebene.
  • Wie die Ebenen verbunden sind
  • Welche Aktivierungsfunktion verwendet wird
  • 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 in den Eingabedaten erlernt werden.

Im allgemeinen verfügt das Netzwerk über folgende Standardeinstellungen:

  • 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 beispielsweise das- auto Schlüsselwort, mit dem die Anzahl der Features automatisch für Eingabe-und Ausgabe Ebenen festgelegt wird, 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 Skript Beispiele finden Sie unter Leitfaden zur net #-Spezifikationssprache für neuronale Netzwerke.

Tipp

Neuronale Netzwerke können aufgrund mehrerer Hyperparameter und der Einführung von benutzerdefinierten Netzwerktopologien Rechen intensiv 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 List Neuronale Netzwerktopologie 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 List 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 Typ BESCHREIBUNG
Untrainiertes Modell ILearner-Schnittstelle Ein untrainiertes Regressionsmodell

Weitere Informationen

Rückstand
Modulliste von A bis Z