Neuronales Netz funktioniert mal und mal nicht.

Bitte aktiviere JavaScript!
Ich habe das Problem, dass mein Neuronales Netz bei manchen Inputsignalen nicht funktioniert. Mein Netz besteht aus zwei Inputnodes und zwei Outputnodes. Jeder Outputknoten ist durch ein Gewicht, welches zufällig initialisiert wird, mit jedem Inputknoten verbunden.

Die Lernrate ist bei 0.01. Bias oder eine Aktivierungsfunktion gibt es nicht. Das Netz soll die Inputsignale an die Sollwerte der Outputs anpassen. Angenommen ich gebe 4 und 5 als Input ein, dann sollen die Outputs ebenfalls 4 und 5 sein. Dies klappt aber meist nur bei Inputsignalen zwischen 0 und 1. Wenn ich zum Beispiel 4 und 5 als Input eingebe dann Schwankt das Netz zwischen einen immer größer werdenden Wert und einen immer kleiner werdenden Wert.

Manchmal bekomme ich als Output auch NAN. Das lernen mache ich mit der Delta Lernregel. Benutze ich jedoch nur einen Input und einen Output, dann kommt mein Netz auch mit höheren Inputs zum richtigen Ergebnis, bei zwei Knoten jedoch aber nicht mit allen Inputs.

Meine Frage ist jetzt, habe ich eventuell einen Fehler in der Implementierung oder ist es normal, dass das neuronale Netz nicht mit allen Inputsignalen umgehen kann. Da ich die Implementierung selbst machen möchte, sagt mir bitte nur, ob dies ein normales Verhalten für ein Neuronales Netz ist, oder nicht.
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Nein, das ist kein typisches verhalten. Könntest du etwas code zeigen? (Am besten ein kompilierbares kleines Beispiel.)
 
Ok, danke ich habe den Fehler gefunden. Ich habe bei der Backpropagation die Verbesserung für das aller erste Gewicht auf alle Gewichte gerechnet. So konnte das netz natürlich nur funktionieren, wenn es nur einen Inputknoten und ein Outputknoten hat. Aber die Delta-Lernregel funktioniert doch nicht, wenn die Sollwerte der Outputs weit auseinander liegen. Hier ein Gedankenbeispiel von mir:

Angenommen, man hat ein Netz aus einer Inputschicht mit zwei Knoten und einer Outputschicht mit zwei knoten. Alle Knoten sind mit Gewichten verbunden und alle gewichte sind zu Beginn mit 1 initialisiert. Als Input gibt man -50 und 40 und als Sollwerte für die Outputs gibt man 4 und 4.

So hätte man bei einer lernrate von 0.01:
Erster Durchgang:
Soll: 4.0 Output: -10.0 Error: 14.0
Soll: 4.0 Output: -10.0 Error: 14.0
Gewichtsanpassungen:
-7.0
5.6000000000000005
-7.0
5.6000000000000005
Zweiter Durchgang
Soll: 4.0 Output: 564.0 Error: -560.0
Soll: 4.0 Output: 564.0 Error: -560.0
Der Error würde also wachsen und nicht sinken.

Bei -5 und 4 klappt es aber, denn hier wäre die Delta Regel:


Soll: 4.0 Output: -1.0 Error: 5.0
Soll: 4.0 Output: -1.0 Error: 5.0
Gewichtsanpassungen:
-0.25
0.2
-0.25
0.2
Soll: 4.0 Output: 1.0499999999999998 Error: 2.95
Soll: 4.0 Output: 1.0499999999999998 Error: 2.95
Der Error sinkt also, so wie es sein soll.

Hast du eine Idee, wie so die Delta-Regel hier bei -50,40 nicht funktioniert?
 
Wenn der Fehler größer wird, würde ich sagen, dass die Lernrate dann zu hoch ist, so dass Du übers Ziel hinausschießt.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben