Hallo zusammen,
ich spiele zur Zeit mit einem Feedforward Neural Network rum. Mittels Backpropagation trainiere ich das Netz. Das Netzwerk besteht aus 2 Input Neuronen, 1 Hidden Layer mit 2 Neuronen und 1 Output Neuron. Ich versuche gerade das XOr Problem zu lösen. Dabei fällt mir auf, dass es zwar gelöst wird, jedoch habe ich eine Fehlerrate von ca. 0.2. Es spielt keine Rolle wie niedrig ich den Trainingsfehler oder wie lang ich das Training laufen lasse. Am Ende ermittelt er mir immer folgende ca. Werte:
bei 1.0 und 1.0 als Eingabe ist das Resultat: 0.002...
bei 0.0 und 1.0 als Eingabe ist das Resultat: 0.998...
bei 1.0 und 0.0 als Eingabe ist das Resultat: 0.998...
bei 0.0 und 0.0 als Eingabe ist das Resultat: 0.002...
Was könnten die allgemeinen Ursachen beim Backpropagation Training sein, sodaß diese Werte nicht über- bzw. unterschritten werden? Ich habe bereits versucht das Momentum und die Adjust - Rate zu modifizieren, jedoch hat dies keine bzw. sehr geringe Auswirkungen auf das Ergebnis...
Mir gehts erstmal nur um allgemeine Fehlerquellen/Möglichkeiten ohne da allzu spezifisch mit Code zu werden... Als Vorlage hatte ich mich an folgendem Projekt orientiert: https://github.com/z1c0/DotNeuralNet
Mir stellen sich folgende allgemeine Fragen:
1. Welche möglichen Fehlerursachen sorgen für ein Stehenbleiben bei einem Resultat/Fehlerquote?
2. Welche allgemeinen Möglichkeiten gibt es um die Fehlerrate weiter zu senken bzw. das Training eines Netzwerkes zu optimieren?
3. Wie könnte man (Pseudocode wäre vollkommen ausreichend) eine Anpassung der Werte von Momentum/Adjust während des Trainings realisieren, sodaß z.B. die Adjust-Rate von 0.7 beginnend, während des Trainings schrittweise um 0.1 reduziert wird? Insbesondere, wie kann man erkennen, dass das Training z.B. keine weitere Verbesserung errreichen würde und somit eine Anpassung notwendig wäre? Hintergrund ist ja, das beim Berechnen der Fehlerquote immer geringfügige Abweichungen drin sind, d.h. ich habe nie einen festen Wert, wo das Netz stehen bleibt, sondern mit jeder Iteration gibts wieder eine neue Fehlerquote, die geringfügig anders ist, als die vorhergehende.
Mir würde es vollkommen ausreichen, wenn es sich nur um Pseudocode handelt ...
Vielen Dank schonmal fürs Lesen und evtl. habt ihr so ein paar allgemeine Tipps denen ich gerne nachgehen werde.
Viele Grüße
Rossibaer
ich spiele zur Zeit mit einem Feedforward Neural Network rum. Mittels Backpropagation trainiere ich das Netz. Das Netzwerk besteht aus 2 Input Neuronen, 1 Hidden Layer mit 2 Neuronen und 1 Output Neuron. Ich versuche gerade das XOr Problem zu lösen. Dabei fällt mir auf, dass es zwar gelöst wird, jedoch habe ich eine Fehlerrate von ca. 0.2. Es spielt keine Rolle wie niedrig ich den Trainingsfehler oder wie lang ich das Training laufen lasse. Am Ende ermittelt er mir immer folgende ca. Werte:
bei 1.0 und 1.0 als Eingabe ist das Resultat: 0.002...
bei 0.0 und 1.0 als Eingabe ist das Resultat: 0.998...
bei 1.0 und 0.0 als Eingabe ist das Resultat: 0.998...
bei 0.0 und 0.0 als Eingabe ist das Resultat: 0.002...
Was könnten die allgemeinen Ursachen beim Backpropagation Training sein, sodaß diese Werte nicht über- bzw. unterschritten werden? Ich habe bereits versucht das Momentum und die Adjust - Rate zu modifizieren, jedoch hat dies keine bzw. sehr geringe Auswirkungen auf das Ergebnis...
Mir gehts erstmal nur um allgemeine Fehlerquellen/Möglichkeiten ohne da allzu spezifisch mit Code zu werden... Als Vorlage hatte ich mich an folgendem Projekt orientiert: https://github.com/z1c0/DotNeuralNet
Mir stellen sich folgende allgemeine Fragen:
1. Welche möglichen Fehlerursachen sorgen für ein Stehenbleiben bei einem Resultat/Fehlerquote?
2. Welche allgemeinen Möglichkeiten gibt es um die Fehlerrate weiter zu senken bzw. das Training eines Netzwerkes zu optimieren?
3. Wie könnte man (Pseudocode wäre vollkommen ausreichend) eine Anpassung der Werte von Momentum/Adjust während des Trainings realisieren, sodaß z.B. die Adjust-Rate von 0.7 beginnend, während des Trainings schrittweise um 0.1 reduziert wird? Insbesondere, wie kann man erkennen, dass das Training z.B. keine weitere Verbesserung errreichen würde und somit eine Anpassung notwendig wäre? Hintergrund ist ja, das beim Berechnen der Fehlerquote immer geringfügige Abweichungen drin sind, d.h. ich habe nie einen festen Wert, wo das Netz stehen bleibt, sondern mit jeder Iteration gibts wieder eine neue Fehlerquote, die geringfügig anders ist, als die vorhergehende.
Mir würde es vollkommen ausreichen, wenn es sich nur um Pseudocode handelt ...
Vielen Dank schonmal fürs Lesen und evtl. habt ihr so ein paar allgemeine Tipps denen ich gerne nachgehen werde.
Viele Grüße
Rossibaer