Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Equipment >> Industrieroboter

Trainings-Datasets für neuronale Netze:So trainieren und validieren Sie ein neuronales Python-Netzwerk

In diesem Artikel verwenden wir Excel-generierte Beispiele, um ein mehrschichtiges Perceptron zu trainieren, und dann sehen wir, wie das Netzwerk mit Validierungsbeispielen funktioniert .

Wenn Sie ein neuronales Python-Netzwerk entwickeln möchten, sind Sie hier richtig. Bevor Sie sich mit der Diskussion in diesem Artikel zur Verwendung von Excel zum Entwickeln von Trainingsdaten für Ihr Netzwerk befassen, sollten Sie sich den Rest der folgenden Serie ansehen, um Hintergrundinformationen zu erhalten:

  1. Wie man eine Klassifikation mit einem neuronalen Netzwerk durchführt:Was ist das Perzeptron?
  2. So verwenden Sie ein einfaches Beispiel für ein neuronales Perceptron-Netzwerk zum Klassifizieren von Daten
  3. Wie man ein grundlegendes neuronales Perceptron-Netzwerk trainiert
  4. Einfaches neuronales Netzwerk-Training verstehen
  5. Eine Einführung in die Trainingstheorie für neuronale Netze
  6. Lernrate in neuronalen Netzen verstehen
  7. Fortgeschrittenes maschinelles Lernen mit dem mehrschichtigen Perzeptron
  8. Die Sigmoid-Aktivierungsfunktion:Aktivierung in mehrschichtigen neuronalen Perzeptronnetzwerken
  9. Wie man ein mehrschichtiges neuronales Perceptron-Netzwerk trainiert
  10. Verstehen von Trainingsformeln und Backpropagation für mehrschichtige Perzeptronen
  11. Neurale Netzwerkarchitektur für eine Python-Implementierung
  12. So erstellen Sie ein mehrschichtiges neuronales Perceptron-Netzwerk in Python
  13. Signalverarbeitung mit neuronalen Netzen:Validierung im neuronalen Netzdesign
  14. Trainings-Datasets für neuronale Netze:So trainieren und validieren Sie ein neuronales Python-Netz

Was sind Trainingsdaten?

In einem realen Szenario bestehen Trainingsbeispiele aus gemessenen Daten irgendeiner Art, kombiniert mit den „Lösungen“, die dem neuronalen Netzwerk helfen, all diese Informationen in eine konsistente Eingabe-Ausgabe-Beziehung zu verallgemeinern.

Angenommen, Sie möchten, dass Ihr neuronales Netzwerk die Essqualität einer Tomate basierend auf Farbe, Form und Dichte vorhersagt. Sie haben keine Ahnung, wie genau Farbe, Form und Dichte mit dem Gesamtgeschmack korrelieren, aber Sie können Messen Sie Farbe, Form und Dichte, und Sie tun Geschmacksknospen haben. Alles was Sie also tun müssen, ist Tausende und Abertausende von Tomaten zu sammeln, ihre relevanten physikalischen Eigenschaften aufzuzeichnen, jede einzelne zu probieren (das Beste) und dann all diese Informationen in eine Tabelle zu bringen.

Jede Zeile ist das, was ich ein Trainingsbeispiel nenne, und es gibt vier Spalten:drei davon (Farbe, Form und Dichte) sind Eingabespalten und die vierte ist die Zielausgabe.


Während des Trainings findet das neuronale Netz die Beziehung (sofern eine kohärente Beziehung besteht) zwischen den drei Eingabewerten und dem Ausgabewert.

Quantifizierung von Trainingsdaten

Denken Sie daran, dass alles in numerischer Form verarbeitet werden muss. Sie können die Zeichenfolge "pflaumenförmig" nicht als Eingabe für Ihr neuronales Netzwerk verwenden, und "lecker" funktioniert nicht als Ausgabewert. Sie müssen Ihre Messungen und Klassifizierungen quantifizieren.

Für die Form können Sie jeder Tomate einen Wert von –1 bis +1 zuweisen, wobei –1 für perfekt kugelförmig und +1 für extrem länglich steht. Für die Essqualität könnten Sie jede Tomate auf einer fünfstufigen Skala von „ungenießbar“ bis „lecker“ bewerten und dann die One-Hot-Codierung verwenden, um die Bewertungen einem aus fünf Elementen bestehenden Ausgabevektor zuzuordnen.

Das folgende Diagramm zeigt Ihnen, wie diese Art der Codierung für die Klassifikation der Ausgabe von neuronalen Netzwerken verwendet wird.


Das One-Hot-Output-Schema ermöglicht es uns, nicht-binäre Klassifikationen auf eine Weise zu quantifizieren, die mit der logistischen Sigmoid-Aktivierung kompatibel ist. Die Ausgabe der logistischen Funktion ist im Wesentlichen binär, da der Übergangsbereich der Kurve im Vergleich zum unendlichen Bereich von Eingabewerten, bei denen der Ausgabewert sehr nahe am Minimum oder Maximum liegt, schmal ist:

Daher möchten wir dieses Netzwerk nicht mit einem einzelnen Ausgabeknoten konfigurieren und dann Trainingsbeispiele mit Ausgabewerten von 0, 1, 2, 3 oder 4 bereitstellen (das wären 0, 0,2, 0,4, 0,6 oder 0,8 wenn Sie im 0-zu-1-Bereich bleiben möchten); die logistische Aktivierungsfunktion des Ausgangsknotens würde die minimalen und maximalen Bewertungen stark begünstigen.

Das neuronale Netzwerk versteht einfach nicht, wie absurd es wäre, zu dem Schluss zu kommen, dass alle Tomaten entweder ungenießbar oder köstlich sind.

Erstellen eines Trainingsdatensatzes

Das neuronale Python-Netzwerk, das wir in Teil 12 besprochen haben, importiert Trainingsbeispiele aus einer Excel-Datei. Die Trainingsdaten, die ich für dieses Beispiel verwenden werde, sind wie folgt organisiert:

Unser aktueller Perceptron-Code ist auf einen Ausgabeknoten beschränkt, also können wir nur eine Wahr/Falsch-Klassifizierung durchführen. Die Eingabewerte sind Zufallszahlen zwischen –5 und +5, generiert mit dieser Excel-Formel:

=RANDBETWEEN(-10, 10)/2

Wie im Screenshot gezeigt, wird die Ausgabe wie folgt berechnet:

=IF(AND(A2>0, B2>0, C2<0), 1, 0)

Somit ist die Ausgabe nur wahr, wenn input_0 größer als null ist, input_1 größer als null ist und input_2 kleiner als null ist. Andernfalls ist es falsch.

Dies ist die mathematische Input-Output-Beziehung, die das Perceptron aus den Trainingsdaten extrahieren muss. Sie können beliebig viele Samples generieren. Für ein einfaches Problem wie dieses erreichen Sie mit 5000 Samples und einer Epoche eine sehr hohe Klassifikationsgenauigkeit.

Training des Netzwerks

Sie müssen Ihre Eingabedimensionalität auf drei setzen (I_dim =3, wenn Sie meine Variablennamen verwenden). Ich habe das Netzwerk so konfiguriert, dass es vier versteckte Knoten hat (H_dim =4), und ich habe eine Lernrate von 0,1 gewählt (LR =0,1).

Finden Sie die training_data =pandas.read_excel(...) -Anweisung und fügen Sie den Namen Ihrer Tabelle ein. (Wenn Sie keinen Zugriff auf Excel haben, kann die Pandas-Bibliothek auch ODS-Dateien lesen.) Klicken Sie dann einfach auf die Schaltfläche Ausführen. Das Training mit 5000 Samples dauert auf meinem 2,5 GHz Windows-Laptop nur wenige Sekunden.

Wenn Sie das vollständige Programm „MLP_v1.py“ verwenden, das ich in Teil 12 aufgenommen habe, beginnt die Validierung (siehe nächster Abschnitt) unmittelbar nach Abschluss des Trainings. Sie müssen also Ihre Validierungsdaten bereithalten, bevor Sie das Netzwerk trainieren .

Validieren des Netzwerks

Um die Leistung des Netzwerks zu validieren, erstelle ich eine zweite Tabelle und erzeuge Eingabe- und Ausgabewerte mit den exakt gleichen Formeln. Anschließend importiere ich diese Validierungsdaten auf dieselbe Weise wie ich Trainingsdaten importiere:

Der nächste Codeauszug zeigt Ihnen, wie Sie eine grundlegende Validierung durchführen können:


Ich verwende das Standard-Feedforward-Verfahren, um das Postaktivierungssignal des Ausgangsknotens zu berechnen, und verwende dann eine if/else-Anweisung, um einen Schwellenwert anzuwenden, der den Postaktivierungswert in einen Wahr/Falsch-Klassifizierungswert umwandelt.

Die Klassifizierungsgenauigkeit wird berechnet, indem der Klassifizierungswert mit dem Zielwert für die aktuelle Validierungsstichprobe verglichen, die Anzahl der korrekten Klassifizierungen gezählt und durch die Anzahl der Validierungsstichproben geteilt wird.

Denken Sie daran, wenn Sie die np.random.seed(1) auskommentiert werden, werden die Gewichtungen jedes Mal, wenn Sie das Programm ausführen, auf unterschiedliche Zufallswerte initialisiert, und folglich ändert sich die Klassifizierungsgenauigkeit von einem Lauf zum nächsten. Ich habe 15 separate Durchläufe mit den oben angegebenen Parametern, 5000 Trainingsproben und 1000 Validierungsproben durchgeführt.

Die niedrigste Klassifizierungsgenauigkeit betrug 88,5%, die höchste 98,1% und der Durchschnitt 94,4%.

Schlussfolgerung

Wir haben einige wichtige theoretische Informationen zu Trainingsdaten neuronaler Netzwerke behandelt und ein erstes Trainings- und Validierungsexperiment mit unserem mehrschichtigen Perceptron in Python durchgeführt. Ich hoffe, dass Ihnen die AAC-Serie über neuronale Netze gefällt – wir haben seit dem ersten Artikel viele Fortschritte gemacht und es gibt noch viel mehr, über das wir diskutieren müssen!


Industrieroboter

  1. Wie bekomme ich das aktuelle Datum und die Uhrzeit in Python?
  2. Neuromorphe KI-Chips für die Bestückung neuronaler Netze debütieren
  3. So installieren Sie kostenlos einen VHDL-Simulator und -Editor
  4. Verstehen lokaler Minima in neuronalen Netzwerkschulungen
  5. So erhöhen Sie die Genauigkeit eines neuronalen Netzes mit versteckter Schicht
  6. Wie viele versteckte Schichten und versteckte Knoten benötigt ein neuronales Netzwerk?
  7. Die fünf wichtigsten Probleme und Herausforderungen für 5G
  8. So füttern und pflegen Sie Ihre drahtlosen Sensornetzwerke
  9. BECKER’S Vakuumpumpen-Training für dich und mich
  10. So reduzieren Sie die Schulungszeit für das Roboterschweißen