Zweiklassiges neuronales Netzwerk

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

Kategorie: Machine Learning/Modell initialisieren/Klassifizierung

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 Two-Class Neural Network in Machine Learning Studio (klassisch) verwenden, um ein neuronales Netzwerkmodell zu erstellen, mit dem ein Ziel vorhergesagt werden kann, das nur über zwei Werte verfügt.

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 für Train Model oder Tune Model Hyperparameters bereitstellen. 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. Aktuelle Untersuchungen haben jedoch gezeigt, dass tiefe neuronale Netze (Deep Neural Networks, DNN) mit vielen Ebenen in komplexen Aufgaben wie der 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 des Two-Class Neuronales Netzwerk

  1. Fügen Sie ihrem Experiment in Studio (klassisch) das Modul Two-Class Neural Network 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.

    • 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 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 neuronale Netze mit zwei Klassen wie folgt definiert ist:

      • 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 Definitionsskript: Wählen Sie diese Option aus, um mithilfe der Net#-Sprache eine benutzerdefinierte neuronale Netzwerkarchitektur zu erstellen. Mit dieser Option können Sie die Anzahl der ausgeblendeten Ebenen, deren Verbindungen und die Zuordnungen zwischen Ebenen definieren.

    Nachdem Sie die Option benutzerdefiniertes Skript ausgewählt haben, geben oder fügen Sie im Textfeld Definition des neuronalen Netzwerks Net#-Anweisungen ein, die das Netzwerk definieren, oder fügen Sie sie ein. Beispiele finden Sie unter Handbuch zur Net#-Spezifikationssprache für neuronale Netzwerke.

  4. Wenn Sie die Skriptoption nicht verwenden, verwenden Sie Number of hidden nodes (Anzahl ausgeblendeter 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 unter Normalisierungstyp eine Methode aus, die für die Featurenormalisierung verwendet werden soll. Die folgenden Normalisierungsmethoden werden unterstützt:

    • Binning normalizer (Binningnormierer): Der Binningnormierer erstellt Behälter gleicher Größe und normalisiert dann jeden Wert in jedem Behälter, dividiert durch die Gesamtzahl der Behälter.

    • Gaußsche Normalisierungsfunktion: Der Gaußsche Normalisierer skaliert die Werte der einzelnen Features neu, um den Mittelwert 0 und die Varianz 1 zu erhalten. Dies erfolgt durch Berechnen des Mittelwerts und der Varianz der einzelnen Features. Für jede Instanz wird der Mittelwert subtrahiert, und das Ergebnis wird durch die Quadratwurzel der Varianz (standardabweichung) dividiert.

    • Min-Max-Normalizer: Der Min-Max-Normalizer skaliert jedes Feature linear auf das [0,1]-Intervall neu.

      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 (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 Systemuhrwert als Startwert verwendet, der bei jeder Ausführung des Experiments zu geringfügig unterschiedlichen Ergebnissen führen kann.

  12. Wählen Sie die Option Unbekannte Kategorische Ebenen zulassen aus, um eine Gruppierung für unbekannte Werte in den Trainings- und Validierungssätzen 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. 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 Parameterbereich auswählen und einen einzelnen Wert für einen parameter eingeben, wird dieser einzelne Wert während des Sweeps 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 von Train Model (Modell trainieren) oder Tune Model Hyperparameters (Modellhyperparameter optimieren), und wählen Sie Visualize (Visualisieren) aus, um eine Zusammenfassung der Modellparameter zusammen mit den aus dem Training gelernten Featuregewichtungen und anderen Parametern des neuronalen Netzwerks zu erhalten.

  • 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 Lernalgorithmus finden Sie im Azure KI-Katalog. Diese Experimente sind verknüpft und werden in einem einzelnen Dokument beschrieben, das sich von grundlegenden bis hin zu erweiterten Konfigurationen entwickelt:

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 Net#-Sprache anpassen. Folgende Anpassungen werden von der Net#-Sprache unterstützt:

  • 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 Graphen sowie die Aktivierungsfunktion können vom Benutzer angegeben werden. Die Gewichtungen an den Kanten können jedoch nicht angegeben werden und müssen beim Trainieren des neuronalen Netzes mit den Eingabedaten erlernt werden.

Im Allgemeinen verfügt das Netzwerk über die folgenden Standardwerte:

  • 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 auto z. B. das Schlüsselwort , das die Anzahl der Features automatisch für Eingabe- und Ausgabeebenen und die Standardwerte für die verborgene Ebene verwendet.

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

Weitere Skriptbeispiele finden Sie unter Handbuch 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. Obwohl neuronale Netze in vielen Fällen bessere Ergebnisse liefern als andere Algorithmen, kann das Abrufen solcher Ergebnisse eine angemessene Menge an Sweeping (Iterationen) über Hyperparameter beinhalten.

Modulparameter

Name Range type Standard Beschreibung
Hidden layer specification Liste Topologie des neuronalen Netzwerks 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 Liste 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 Type BESCHREIBUNG
Untrainiertes Modell ILearner-Schnittstelle Ein untrainiertes binäres Klassifizierungsmodell

Siehe auch

Klassifizierung
Regression mit neuronalen Netzwerken
Mehrklassiges neuronales Netzwerk
Modulliste von A bis Z