Ich versuche ein neuronales Netzwerk zu implementieren. Ich verwende Backpropagation, um die Gradienten zu berechnen. Nach dem Erhalten der Gradienten multipliziere ich sie mit der Lernrate und subtrahiere sie von den entsprechenden Gewichten. (Im Grunde versuchen Sie gradientenabstieg, bitte sagen Sie mir, wenn das falsch ist). Das erste, was ich versuchte, nachdem die Backpropagation und der Gradientenabstieg fertig waren, bestand darin, einen einfachen XOR - Klassifikator zu trainieren, bei dem die Eingaben (0,0), (1,0), (0,1), (1,1) und die entsprechenden Ausgaben sind 0, 1, 1, 0. Also mein neuronales Netzwerk enthält 2 Eingabeeinheiten, 1 Ausgabeeinheit und eine versteckte Ebene mit 3 Einheiten darauf. Beim Training mit einer Lernrate von 3,0 für> 100 (selbst ausprobiert> 5000) sinken die Kosten bis zu einem bestimmten Punkt, an dem es feststeckt, so dass es konstant bleibt. Die Gewichte werden jedes Mal, wenn ich das Programm starte, zufällig initialisiert, aber es bleibt immer bei den gleichen spezifischen Kosten hängen. Wie auch immer, nachdem das Training beendet ist, habe ich versucht, mein neurales Netzwerk auf einem der obigen Eingänge laufen zu lassen und der Ausgang ist immer 0.5000. Ich dachte darüber nach, die Ein- und Ausgänge so zu ändern, dass sie sind: (-1, -1), (1, -1), (-1, 1), (1, 1) und die Ausgänge -1, 1, 1, - 1. Wenn nun mit der gleichen Lernrate trainiert wird, sinken die Kosten kontinuierlich, unabhängig von der Anzahl der Iterationen, aber die Ergebnisse sind immer noch falsch, und sie liegen immer nahe bei 0. Ich habe sogar versucht, sie für eine wahnsinnige Anzahl von Wiederholungen zu trainieren Iterationen und die Ergebnisse sind die folgenden: [Iterationen: (20kk), Eingaben: (1, -1), Ausgabe: (1.6667e-08)] und auch [Iterationen: (200kk), Eingaben: (1, -1) , Ausgabe: (1.6667e-09)], auch für Eingaben (1,1) und andere versucht, die Ausgabe ist auch sehr nahe bei 0. Es scheint, als ob die Ausgabe immer mittel ist (min (y), max (y)), spielt es keine Rolle, in welcher Form ich die Ein-/Ausgabe zur Verfügung stelle. Ich kann nicht herausfinden, was ich falsch mache, kann jemand bitte helfen?Neuronales Netzwerk seltsame Vorhersage
Antwort
Es gibt so viele Orte, wo man falsch sein könnte:
- Ihre Steigungen überprüfen numerisch
- Sie nicht-lineare versteckten Einheiten verwenden XOR zu lernen - haben Sie es nicht-lineare Aktivierung haben?
- Sie benötigen Bias-Neuron, haben Sie eine?
kleinere Dinge, die das genannte Problem nicht dazu führen sollte, aber es lohnt sich Festsetzung oder so:
- tun Sie sigmoidale Aktivierung in dem Ausgangsknoten haben (wie Ihr Netzwerk ein Klassifikator ist)?
- Trainierst du mit Kreuz-Entropie-Kosten (obwohl das ein kleines Problem ist)?
Wenn Sie meinen Code überprüft haben, haben Sie gesehen, dass ich eine vektorisierte Implementierung verwende, und ich füge immer eine Spalte von Einsen in der Aktivierungsmatrix vor dem Multiplizieren hinzu es mit der Transponierung der Gewichtsmatrix, also ja, ich benutze ein Bias-Neuron. Alle Neuronen verwenden sigmoidale Aktivierung, und ja, ich verwende Kreuz-Entropie-Kosten. Was nicht-lineare versteckte Einheiten angeht, ich fürchte, ich verstehe nicht, was Sie damit meinen. – cuvidk
Haben Sie Steigungen numerisch überprüft? Hast du versucht, eine "typische" Lernrate zu verwenden (wie 1e-3)? Sie sollten auch regularizationFactor = 0 setzen (ich weiß nicht, was Sie gerade verwenden) – lejlot
Ich habe gerade versucht 1e-3 als Lernrate, gleiche Ergebnisse. Ich habe die Gradienten nicht numerisch überprüft, ich denke gerade darüber nach, wie man das jetzt macht. Die derzeitige Implementierung macht es schwierig. – cuvidk
- 1. Vorhersage über neuronales Netzwerk in R
- 2. Graphentheorie und neuronales Netzwerk
- 3. Python neuronales Netzwerk Codierung
- 4. Neuronales Netzwerk: XOR lösen
- 5. sigmoid - Rückpropagation neuronales Netzwerk
- 6. Künstliches neuronales Netzwerk Frage
- 7. Neuronales Netzwerk nicht lernen
- 8. Worteinbettung für Convolution Neuronales Netzwerk
- 9. Neuronales Netzwerk 0 vs -1
- 10. Neuronales Netzwerk Backpropagation mit RELU
- 11. Neuronales Netzwerk: Nur eine Regression?
- 12. Train Neuronales Netzwerk mit Sinus-Funktion
- 13. Konvolutionelles neuronales Netzwerk, das schiefe Vorhersagen macht
- 14. Fehler in Roc: Neuronales Netzwerk in R
- 15. Nicht konvergierendes neuronales Netzwerk in C
- 16. Art der Erkennung von Faltung neuronales Netzwerk
- 17. Neuronales Netzwerk mit Eingabe von 0
- 18. Wie viele Ausgangsneuronen hat mein neuronales Netzwerk?
- 19. Theano/Lasagne/Nolearn Neuronales Netzwerk Bildeingabe
- 20. Wie visualisiert man ein neuronales Netzwerk?
- 21. Sehr einfaches neuronales Netzwerk 3 mit MPICH
- 22. XOR Neuronales Netzwerk konvergiert zu 0.5
- 23. Torch - Große Eingabe- und Ausgabegrößen in neuronales Netzwerk
- 24. Neuronales Netzwerktraining mit Partikelschwarmoptimierung
- 25. Backpropagation für ein einfaches neuronales Netzwerk, das ungewöhnliche Ergebnisse liefert
- 26. Hat jemand RNN-Paket in R für rekursives neuronales Netzwerk verwendet? Wie verwende ich das für die Vorhersage?
- 27. Unterstützt TensorFlowDNNClassifier oder ein anderes tiefes neuronales Netzwerkmodell in TensorFlow die Vorhersage eines Gleitkommawerts?
- 28. OCR mit Perzeptron neuronales Netzwerk von Aforge.net antwortet falsch
- 29. MATLAB Wie kann ich NARX- neuronales Netzwerk mit Multi-Datensatz
- 30. Wie kann ich ein rekursives neuronales Netzwerk in TensorFlow implementieren?
den Code zur Verfügung stellen, da Ihr Fehler dort ist. – lejlot
@lejlot Hier ist der Code: https://github.com/cuvidk/yaann-api – cuvidk