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

Integrieren von Bias-Knoten in Ihr neuronales Netzwerk

Dieser Artikel zeigt Ihnen, wie Sie einem mehrschichtigen Perceptron, das in einer höheren Programmiersprache wie Python implementiert ist, Bias-Werte hinzufügen.

Willkommen bei der All About Circuits-Reihe über neuronale Netze, die von Director of Engineering Robert Keim erstellt wurde. Bevor Sie mit dieser Lektion zu Bias-Knoten fortfahren, sollten Sie den Rest der folgenden Reihe 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 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
  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
  17. Integration von Bias-Knoten in Ihr neuronales Netzwerk


Bias-Knoten, die der Eingabeschicht oder der verborgenen Schicht eines Perceptrons hinzugefügt werden können, erzeugen einen konstanten Wert, der vom Designer ausgewählt wird.

Wir haben bereits in Teil 11 über Bias-Werte gesprochen, und ich empfehle Ihnen, den relevanten Teil dieses Artikels zu lesen (oder erneut zu lesen), wenn Sie sich nicht sicher sind, was Bias-Knoten sind oder wie sie die Funktionalität eines neuronalen Netzwerks modifizieren und möglicherweise verbessern.

In diesem Artikel erkläre ich zunächst zwei Methoden zur Integration von Bias-Werten in Ihre Netzwerkarchitektur, und dann führen wir ein Experiment durch, um zu sehen, ob Bias-Werte die Genauigkeitsleistung verbessern können, die wir im vorherigen Artikel (Teil 16) erhalten haben.

Einbeziehen von Verzerrungen über die Tabelle

Das folgende Diagramm zeigt ein Netzwerk mit einem Bias-Knoten in der Eingabeschicht, aber nicht in der verborgenen Schicht.

Wenn dies die gewünschte Konfiguration ist, können Sie mithilfe der Tabelle, die Ihre Trainings- oder Validierungsdaten enthält, einen Bias-Wert hinzufügen.

Der Vorteil dieser Methode besteht einfach darin, dass keine wesentlichen Codeänderungen erforderlich sind. Der erste Schritt besteht darin, eine Spalte in Ihre Tabelle einzufügen und sie mit Ihrem Bias-Wert zu füllen:

Jetzt müssen Sie nur noch die Dimensionalität der Eingabeschicht um eins erhöhen:

Integration von Verzerrungen in den Code

Wenn Sie einen Bias-Knoten in der verborgenen Ebene wünschen oder nicht gerne mit Tabellenkalkulationen arbeiten möchten, benötigen Sie eine andere Lösung.

Nehmen wir an, wir möchten sowohl der Eingabeschicht als auch der verborgenen Schicht einen Bias-Knoten hinzufügen. Zuerst müssen wir I_dim . erhöhen und H_dim , da unser Ziel darin besteht, die Bias-Knoten so zu integrieren, dass sie wie normale Knoten funktionieren, jedoch mit einem vorgewichteten Wert, der vom Designer ausgewählt wird und sich nie ändert.

Ich erledige dies wie folgt:


Erstellen des Input-Layer-Bias-Knotens

Wie Sie sich vielleicht erinnern, verwenden wir den folgenden Code, um den Trainingsdatensatz zusammenzustellen, die Zielausgabewerte zu trennen und die Anzahl der Trainingsproben zu extrahieren.

Nach diesen Anweisungen die Anzahl der Spalten im zweidimensionalen Array training_data entspricht der Anzahl der Eingabespalten in der Tabelle. Wir müssen die Anzahl der Spalten um eins erhöhen, um den Bias-Knoten in der Eingabeschicht zu berücksichtigen, und wenn wir schon dabei sind, können wir diese zusätzliche Spalte mit dem gewünschten Bias-Wert füllen.

Der folgende Code zeigt, wie dies möglich ist.


Die np.ones() -Funktion erstellt ein einspaltiges Array, dessen Anzahl der Zeilen gleich training_count ist , und weist jedem Element in diesem Array einen Wert von +1 zu. Dann verwenden wir die np.hstack() Funktion zum Hinzufügen des einspaltigen Arrays zur rechten Seite der ursprünglichen Trainingsdaten Array.

Beachten Sie, dass ich dieses Verfahren sowohl für die Trainingsdaten als auch für die Validierungsdaten durchgeführt habe. Es ist wichtig, sich daran zu erinnern, dass das Ziel nicht darin besteht, die Trainings- oder Validierungsdaten zu ändern; Stattdessen ändern wir die Daten, um die gewünschte Netzwerkkonfiguration zu implementieren.

Wenn wir uns ein Blockdiagramm des Perceptron ansehen, erscheinen die Bias-Knoten als Elemente des Netzwerks selbst; daher müssen alle Samples, die vom Netzwerk verarbeitet werden, dieser Modifikation unterzogen werden.

Erstellen des Hidden-Layer-Bias-Knotens

Wir können der Feedforward-Verarbeitung einen Bias hinzufügen, indem wir die for-Schleife modifizieren, die die Postaktivierungswerte der versteckten Schicht berechnet, und dann den Bias-Wert für den letzten versteckten Knoten (der eigentlich ein Bias-Knoten ist) manuell einfügen.

Die erste Modifikation ist unten gezeigt:


Wenn das Netzwerk so konfiguriert ist, dass es keinen Hidden-Layer-Bias-Knoten hat, hidden_bias gleich 0 und die Ausführung der for-Schleife bleibt unverändert.

Wenn wir andererseits entschieden haben, einen Bias-Knoten der versteckten Schicht einzuschließen, berechnet die for-Schleife keinen Postaktivierungswert für den letzten Knoten in der Schicht (d. h. den Bias-Knoten).

Der nächste Schritt besteht darin, die Knotenvariable zu erhöhen, damit sie auf den Bias-Knoten im postActivation_H . zugreift Array und weisen Sie dann den Bias-Wert zu.

Beachten Sie, dass diese Änderungen auch auf den Validierungsteil des Codes angewendet werden müssen.

Bias-Werte außer +1

Meiner Erfahrung nach ist +1 der Standard-Bias-Wert, und ich weiß nicht, ob es eine solide Rechtfertigung für die Verwendung anderer Zahlen gibt. Der Bias wird durch Gewichtungen modifiziert, sodass die Auswahl von +1 keine festen Beschränkungen hinsichtlich der Interaktion des Bias mit der Gesamtfunktionalität des Netzwerks auferlegt.

Wenn Sie jedoch mit anderen Bias-Werten experimentieren möchten, können Sie dies problemlos tun. Für den versteckten Bias ändern Sie einfach die Nummer, die postActivation_H[node] zugewiesen ist . Für den Eingabe-Bias können Sie die new_column . multiplizieren Array (das anfänglich +1 für jedes Element hat) um den gewünschten Bias-Wert.

Testen der Auswirkung von Verzerrungen

Wenn Sie Teil 16 gelesen haben, wissen Sie, dass mein Perceptron einige Schwierigkeiten hatte, die Proben in Experiment 3 zu klassifizieren, was das Problem der „hohen Komplexität“ war.

Mal sehen, ob das Hinzufügen von einem oder mehreren Bias-Knoten eine konsistente und signifikante Verbesserung bietet.

Ich ging davon aus, dass die Unterschiede in der Klassifikationsgenauigkeit ziemlich gering sein würden, daher habe ich für dieses Experiment den Durchschnitt von zehn statt fünf Durchläufen gebildet. Die Trainings- und Validierungsdatensätze wurden unter Verwendung derselben hochkomplexen Beziehung zwischen Eingabe und Ausgabe generiert, und die Dimensionalität der verborgenen Schicht betrug 7.

Hier sind die Ergebnisse:

Schlussfolgerung

Wie Sie sehen, führten die Bias-Knoten zu keiner wesentlichen Änderung der Klassifikationsleistung.

Das überrascht mich eigentlich nicht – ich denke, dass Bias-Knoten manchmal etwas überbetont werden, und angesichts der Art der Eingabedaten, die ich in diesem Experiment verwendet habe, sehe ich keinen Grund, warum Bias-Knoten helfen würden.

Nichtsdestotrotz ist die Vorspannung bei einigen Anwendungen eine wichtige Technik; Es ist eine gute Idee, Code zu schreiben, der die Bias-Node-Funktionalität unterstützt, damit er zur Verfügung steht, wenn Sie ihn brauchen.


Industrieroboter

  1. Überdenken Sie Ihren Spielplan für die Netzwerküberwachung
  2. Wie Sie Ihre Geräte härten, um Cyber-Angriffe zu verhindern
  3. Aufbau eines drahtlosen Sensornetzwerks in Ihrem Zuhause
  4. Verstehen lokaler Minima in neuronalen Netzwerkschulungen
  5. So erhöhen Sie die Genauigkeit eines neuronalen Netzes mit versteckter Schicht
  6. So integrieren Sie das Ersatzteilmanagement in Ihr CMMS
  7. [Interview] Branchenexperten zur Auswahl Ihres IoT-Netzwerks
  8. So integrieren Sie Robotik erfolgreich in Ihre Einrichtung
  9. Umwandeln Ihrer Lieferkette in ein Opportunity Center
  10. Wie sicher ist Ihr Fertigungsnetzwerk?