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

So erhöhen Sie die Genauigkeit eines neuronalen Netzes mit versteckter Schicht

In diesem Artikel führen wir einige Klassifizierungsexperimente durch und sammeln Daten über die Beziehung zwischen der Dimensionalität der versteckten Schicht und der Netzwerkleistung.

In diesem Artikel erfahren Sie, wie Sie mithilfe einer Python-Implementierung und von Beispielproblemen eine verborgene Schicht ändern, um die Genauigkeit eines neuronalen Netzwerks zu verbessern.

Bevor wir uns diesem Thema zuwenden, sollten Sie jedoch die vorherigen Einträge in dieser Serie über neuronale Netze nachholen:

  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 Perzeptronnetzen
  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
  15. Wie viele versteckte Schichten und versteckte Knoten benötigt ein neuronales Netzwerk?
  16. So erhöhen Sie die Genauigkeit eines neuronalen Hidden-Layer-Netzwerks

Die Anzahl der in einer versteckten Schicht enthaltenen Knoten beeinflusst die Klassifizierungsfähigkeit und Geschwindigkeit eines neuronalen Perceptron-Netzwerks. Wir werden Experimente durchführen, die uns helfen, eine anfängliche Intuition darüber zu formulieren, wie die Dimensionalität der verborgenen Schichten in den Versuch passt, ein Netzwerk zu entwerfen, das innerhalb einer angemessenen Zeit trainiert, Ausgabewerte mit akzeptabler Latenz erzeugt und die Genauigkeitsanforderungen erfüllt. .

Benchmarking in Python

Der in Teil 12 vorgestellte Python-Code des neuronalen Netzwerks enthält bereits einen Abschnitt, der die Genauigkeit berechnet, indem das trainierte Netzwerk verwendet wird, um Stichproben aus einem Validierungsdatensatz zu klassifizieren. Daher müssen wir nur etwas Code hinzufügen, der die Ausführungszeit für das Training (einschließlich Feedforward-Operation und Backpropagation) und für die eigentliche Klassifizierungsfunktionalität (die nur Feedforward-Operation umfasst) meldet. Wir verwenden den time.perf_counter() Funktion dafür.

So markiere ich den Beginn und das Ende des Trainings:

Start- und Stoppzeiten für die Validierung werden auf die gleiche Weise generiert:


Die beiden Messungen der Verarbeitungszeit werden wie folgt gemeldet:


Trainingsdaten und Messverfahren

Das neuronale Netzwerk führt eine Wahr/Falsch-Klassifizierung an Eingabeproben durch, die aus vier numerischen Werten zwischen –20 und +20 bestehen.

Somit haben wir vier Eingabeknoten und einen Ausgabeknoten, und die Eingabewerte werden mit der unten gezeigten Excel-Gleichung generiert.


Mein Trainingsdatensatz besteht aus 40.000 Stichproben und der Validierungssatz hat 5000 Stichproben. Die Lernrate beträgt 0,1 und ich führe nur eine Trainingsepoche durch.

Wir führen drei Experimente durch, die Input-Output-Beziehungen mit unterschiedlichen Komplexitätsgraden darstellen. Der np.random.seed(1) Die Aussage ist auskommentiert, daher variieren die anfänglichen Gewichtswerte und damit auch die Klassifizierungsgenauigkeit.

In jedem Experiment wird das Programm fünfmal (mit den gleichen Trainings- und Validierungsdaten) für jede Dimensionalität der verborgenen Schicht ausgeführt, und die endgültigen Messungen für Genauigkeit und Verarbeitungszeit sind das arithmetische Mittel der Ergebnisse, die von den fünf separaten Durchläufen generiert wurden .

Experiment 1:Ein Problem geringer Komplexität

In diesem Experiment ist die Ausgabe nur wahr, wenn die ersten drei Eingaben größer als Null sind, wie im folgenden Excel-Screenshot gezeigt (beachten Sie, dass die vierte Eingabe keinen Einfluss auf den Ausgabewert hat).

Ich denke, dass dies eine ziemlich einfache Eingabe-Ausgabe-Beziehung für ein mehrschichtiges Perceptron darstellt.

Basierend auf den Empfehlungen, die ich in Teil 15 bezüglich der Anzahl der Schichten und Knoten gegeben habe, die ein neuronales Netzwerk benötigt, würde ich mit einer Dimensionalität der versteckten Schicht beginnen, die zwei Drittel der Eingabedimensionalität entspricht.

Da ich keine versteckte Schicht mit einem Bruchteil eines Knotens haben kann, beginne ich bei H_dim =2 . Die folgende Tabelle zeigt die Ergebnisse.


Wir sehen eine Verbesserung der Klassifizierung bis hin zu fünf versteckten Knoten. Ich denke jedoch, dass diese Zahlen den Vorteil einer Erhöhung von vier auf fünf Knoten übertreiben, da die Genauigkeit eines der vier versteckten Knotenläufe 88,6% betrug, was den Durchschnitt nach unten zog.

Wenn ich diesen Lauf mit geringer Genauigkeit eliminiere, ist die durchschnittliche Genauigkeit für vier versteckte Knoten tatsächlich etwas höher als der Durchschnitt für fünf versteckte Knoten. Ich vermute, dass in diesem Fall vier versteckte Knoten die beste Balance zwischen Genauigkeit und Geschwindigkeit bieten.

Eine weitere wichtige Sache, die bei diesen Ergebnissen zu beachten ist, ist der Unterschied, wie sich die Dimensionalität der versteckten Schicht auf die Trainingszeit und die Verarbeitungszeit auswirkt. Der Wechsel von zwei auf vier versteckte Knoten verlängert die Validierungszeit um den Faktor 1,3, die Trainingszeit jedoch um den Faktor 1,9.

Das Training ist wesentlich rechenintensiver als die Feedforward-Verarbeitung, daher müssen wir besonders darauf achten, wie die Netzwerkkonfiguration unsere Fähigkeit beeinflusst, das Netzwerk in angemessener Zeit zu trainieren.

Experiment 2:Ein Problem mittlerer Komplexität

Der Excel-Screenshot zeigt die Input-Output-Beziehung für dieses Experiment. Alle vier Eingaben beeinflussen jetzt den Ausgabewert und die Vergleiche sind weniger einfach als in Experiment 1.

Ich begann mit drei versteckten Knoten. Hier sind die Ergebnisse:

In diesem Fall vermute ich, dass uns fünf versteckte Knoten die beste Kombination aus Genauigkeit und Geschwindigkeit liefern, obwohl die vier Durchläufe mit versteckten Knoten erneut einen Genauigkeitswert erzeugten, der deutlich niedriger war als die anderen. Wenn Sie diesen Ausreißer ignorieren, sehen die Ergebnisse für vier versteckte Knoten, fünf versteckte Knoten und sechs versteckte Knoten sehr ähnlich aus.

Die Tatsache, dass die Läufe mit fünf versteckten Knoten und sechs versteckten Knoten keine Ausreißer erzeugten, führt uns zu einem interessanten möglichen Ergebnis:Vielleicht macht eine Erhöhung der Dimensionalität der versteckten Schicht das Netzwerk robuster gegenüber Bedingungen, die aus irgendeinem Grund dazu führen, dass das Training besonders schwierig sein.

Experiment 3:Ein hochkomplexes Problem

Wie unten gezeigt, umfasst die neue Eingabe-Ausgabe-Beziehung wieder alle vier Eingabewerte, und wir haben die Nichtlinearität eingeführt, indem wir eine der Eingaben quadriert und die Quadratwurzel einer anderen gezogen haben.


Hier sind die Ergebnisse:


Das Netzwerk hatte definitiv mehr Schwierigkeiten mit dieser komplexeren mathematischen Beziehung; selbst mit sieben versteckten Knoten war die Genauigkeit geringer als die, die wir mit nur drei versteckten Knoten im Problem geringer Komplexität erreicht haben. Ich bin zuversichtlich, dass wir die hochkomplexe Leistung verbessern könnten, indem wir andere Aspekte des Netzwerks modifizieren, z. B. einen Bias (siehe Teil 11) oder die Lernrate (siehe Teil 6) einschließen

Trotzdem würde ich die Dimensionalität der versteckten Schicht bei sieben belassen, bis ich vollständig überzeugt war, dass andere Verbesserungen es dem Netzwerk ermöglichen könnten, eine angemessene Leistung mit einer kleineren versteckten Schicht aufrechtzuerhalten.

Schlussfolgerung

Wir haben einige interessante Messungen gesehen, die ein ziemlich klares Bild der Beziehung zwischen der Dimensionalität der verborgenen Schichten und der Perceptron-Leistung zeichnen. Es gibt sicherlich noch viele weitere Details, die wir untersuchen könnten, aber ich denke, dies gibt Ihnen einige solide grundlegende Informationen, auf die Sie zurückgreifen können, wenn Sie mit dem Design und dem Training neuronaler Netzwerke experimentieren.


Industrieroboter

  1. Wie viele versteckte Schichten und versteckte Knoten benötigt ein neuronales Netzwerk?
  2. Trainings-Datasets für neuronale Netze:So trainieren und validieren Sie ein neuronales Python-Netzwerk
  3. So erstellen Sie ein mehrschichtiges neuronales Perceptron-Netzwerk in Python
  4. Neurale Netzwerkarchitektur für eine Python-Implementierung
  5. So trainieren Sie ein mehrschichtiges neuronales Perceptron-Netzwerk
  6. Wie das Netzwerk-Ökosystem die Zukunft der Farm verändert
  7. Absicherung des IoT von der Netzwerkschicht bis zur Anwendungsschicht
  8. Der Unterschied zwischen Thomas WebTrax und Google Analytics, dem Thomas-Netzwerk und mehr
  9. Wie 0G-Netzwerksensoren die Kühlkette von Impfstoffen schützen
  10. Auswahl des richtigen Laserschneidsystems zur Maximierung von Produktivität und Genauigkeit