Zweiklassiges neuronales Netzwerk

Erstellt einen binären Klassifizierer mithilfe eines Algorithmus für neuronale Netzwerke

Kategorie: Machine Learning/Modell/Klassifizierung 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 Two-Class Neural Network -Modul in Azure Machine Learning Studio (klassisch) verwenden, um ein neuronales Netzwerkmodell zu erstellen, das verwendet werden kann, um ein Ziel mit nur zwei Werten vorherzusagen.

Die Klassifizierung mittels neuronaler Netze ist eine überwachte Lernmethode und erfordert daher ein mit Tags versehenes Dataset, das eine Bezeichnungsspalte enthält. Sie können dieses neuronale Netzmodell beispielsweise verwenden, um binäre Ergebnisse vorherzusagen, z.B. ob ein Patient eine bestimmte Krankheit hat oder nicht oder ob eine Maschine innerhalb eines bestimmten Zeitfensters ausfallen wird.

Nachdem Sie das Modell definiert haben, trainieren Sie es, indem Sie ein markiertes DataSet und das Modell als Eingabe bereitstellen, um das Modell zu trainieren oder Modell Hyperparameter zu optimieren. Das trainierte Modell kann anschließend verwendet werden, um Werte für neue Eingaben vorherzusagen.

Weitere Informationen zu neuronalen Netzen

Ein neuronales Netz ist ein Komplex miteinander verbundener Schichten. Die Eingaben bilden die erste Schicht und sind mit einer Ausgabeschicht durch ein azyklisches Diagramm verbunden, das aus gewichteten Edges und Knoten besteht.

Zwischen Ein- und Ausgabeschicht können Sie mehrere ausgeblendete Schichten einfügen. Die meisten Vorhersageaufgaben können mithilfe nur einer oder einigen wenigen ausgeblendeten Schichten einfach durchgeführt werden. In der jüngsten Forschung wurde jedoch gezeigt, dass Deep Neural Networks (DNN) mit vielen Ebenen bei komplexen Aufgaben wie Bild-oder Spracherkennung sehr effektiv sein können. Die aufeinanderfolgenden Schichten werden verwendet, um zunehmende semantische Tiefe zu modellieren.

Die Beziehung zwischen Ein- und Ausgaben wird durch das Training des neuronalen Netzes mit den Eingabedaten erlernt. Die Richtung des Graphen verläuft von den Eingaben über die ausgeblendete Schicht bis zur Ausgabeschicht. Alle Knoten einer Schicht sind durch die gewichteten Edges mit den Knoten der nächsten Schicht verbunden.

Um die Ausgabe des Netzes für eine bestimmte Eingabe zu berechnen, wird bei jedem Knoten in den ausgeblendeten Schichten und in der Ausgabeschicht ein Wert berechnet. Der Wert wird festgelegt, indem die gewichtete Summe der Werte der Knoten der vorherigen Schicht berechnet wird. Auf diese gewichtete Summe wird dann eine Aktivierungsfunktion angewendet.

Konfigurieren Two-Class neuronalen Netzwerks

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

  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 für Hidden layer specification (Angabe ausgeblendeter Schichten) den Typ der zu erstellenden Netzarchitektur aus.

    • Vollständig verbundener Fall: verwendet die standardmäßige neuronale Netzwerkarchitektur, die für zweiklassige neuronale Netzwerke definiert ist, wie folgt:

      • Hat eine ausgeblendete Schicht.

      • Die Ausgabeschicht ist vollständig mit der ausgeblendeten Schicht verbunden, und die ausgeblendete Schicht ist vollständig mit der Eingabeschicht verbunden.

      • Die Anzahl der Knoten in der Eingabeschicht entspricht der Anzahl der Features in den Trainingsdaten.

      • Die Anzahl der Knoten in der ausgeblendeten Schicht wird vom Benutzer festgelegt. Der Standardwert ist 100.

      • Die Anzahl der Knoten entspricht der Anzahl der Klassen. Für ein neuronales Netz mit zwei Klassen bedeutet dies, dass alle Eingaben einem von zwei Knoten in der Ausgabeschicht zugeordnet werden müssen.

    • Benutzerdefiniertes Definitions Skript: Wählen Sie diese Option aus, um eine benutzerdefinierte neuronale Netzwerkarchitektur mithilfe der Programmier Sprache net #zu erstellen. Mit dieser Option können Sie die Anzahl der verborgenen Ebenen, ihrer Verbindungen und der Zuordnungen zwischen Ebenen definieren.

    Nachdem Sie die Option benutzerdefiniertes Skript ausgewählt haben, geben Sie im Textfeld Definition für neuronale Netzwerke NET #-Anweisungen ein, die das Netzwerk definieren. Beispiele finden Sie unter Handbuch zur Spezifikation für die net #-Spezifikationssprache für neuronale Netzwerke.

  4. Wenn Sie die Skript Option nicht verwenden, verwenden Sie die Anzahl der verborgenen Knoten, und geben Sie die Anzahl der ausgeblendeten Knoten ein. Der Standardwert ist eine verborgene Ebene mit 100 Knoten.

  5. Definieren Sie für Learning rate (Lernrate) die Größe des Schritts, 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 verarbeiten soll.

  7. Geben Sie für The initial learning weights diameter (Anfangsdurchmesser der Lerngewichtungen) die Knotengewichtungen am Anfang des Lernprozesses an.

  8. Geben Sie für The momentum (Dynamik) eine Gewichtung an, die beim Lernen auf Knoten aus früheren Iterationen angewendet werden soll.

  9. Wählen Sie in der Art der Normalisierung eine Methode aus, die für die Funktions Normalisierung verwendet werden soll. Die folgenden normalisierungs Methoden werden unterstützt:

    • Klassieren von Normalisierungsfunktion: die Klassierende Normalisierung erstellt Container gleicher Größe und normalisiert dann jeden Wert in jeder bin, dividiert durch die Gesamtanzahl der Behälter.

    • Gauscher Normalisierer: die gausische Normalisierung führt zu einer Neuskalierung der Werte der einzelnen Funktionen, sodass Sie den Mittelwert 0 und die Varianz 1 hat. Dies erfolgt durch Berechnen des Mittelwert und der Varianz der einzelnen Features. Für jede Instanz wird der mittlere Wert subtrahiert, und das Ergebnis dividiert durch die Quadratwurzel der Varianz (die Standardabweichung).

    • Min-Max Normalisierungsfunktion: der Min-Max-Normalisierer backt linear jede Funktion auf das Intervall [0,0].

      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 (Beispiele mischen), um Fälle zwischen den Iterationen zu mischen. Wenn Sie diese Option deaktivieren, werden die Fälle bei jeder Ausführung des Experiments in genau der gleichen Reihenfolge verarbeitet.

  11. Geben Sie für Random number seed (zufälliger Startwert) den als Startwert zu verwendenden Wert ein.

    Die Angabe eines Startwerts ist nützlich, wenn Sie die Wiederholbarkeit für alle Ausführungen desselben Experiments sicherstellen möchten. Andernfalls wird ein von der Systemuhr bereitgestellter Wert als Startwert verwendet, was bei jeder Ausführung des Experiments zu geringfügig unterschiedlichen Ergebnissen führen kann.

  12. Aktivieren Sie die Option unbekannte kategorische Ebenen zulassen , um in den Trainings-und Validierungs Sätzen 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. Fügen Sie dem Experiment ein mit Tags versehenes Dataset hinzu, und stellen Sie eine Verbindung mit einem der Trainingsmodule her.

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

    • Wenn Sie Create trainer mode (Trainermodus erstellen) auf Parameter Range (Parameterbereich) festlegen, verwenden Sie das Modul Tune Model Hyperparameters (Abstimmen der Hyperparameter des Modells).

    Hinweis

    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 Bereich auswählen und einen einzelnen Wert für einen Parameter eingeben, wird dieser einzelne Wert im gesamten Sweep verwendet, auch wenn andere Parameter über einen Wertebereich hinweg 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 zur Verwendung dieses Lernalgorithmus finden Sie in der Azure AI Gallery. Diese Experimente sind verknüpft und werden in einem einzelnen Dokument beschrieben, das von grundlegenden zu erweiterten Konfigurationen verläuft:

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. Obwohl neuronale Netzwerke in vielen Fällen bessere Ergebnisse als andere Algorithmen erzielen, kann das Abrufen solcher Ergebnisse eine große Menge an kehrender (Iterationen) über hyperparametern beinhalten.

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;1.0] Float 0,1 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.
Number of learning iterations >=1 Integer 100 Geben Sie die Anzahl der beim Lernen ausgeführten Iterationen 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.
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.

Output

Name Typ BESCHREIBUNG
Untrainiertes Modell ILearner-Schnittstelle Ein untrainiertes binäres Klassifizierungsmodell

Weitere Informationen

Ordnung
Regression neuronaler Netzwerke
Mehr klassige neuronale Netzwerke
Modulliste von A bis Z