Backpropagation-Algorithmus bei Neuronalem Netz

Hallo an alle Computational-Intelligence-Experten :smile:

Ich versuche seit einiger Zeit per überwachtem Online-Lernen und Backpropagation-Algorithmus einem 2-3-2-1-MLP (also 2 Eingänge, 2 verdeckte Schichten mit 3 bzw. 2 Neuronen und 1 Ausgang) etwas beizubringen. Die Ausgangsneuronen haben lineare und die verdeckten Neuronen Fermi-Aktivierungsfunktionen. Leider klappt das bisher nicht so wirklich.

Ich arbeite in Matlab ohne die NN-Toolbox, habe also alles „händisch“ umgesetzt. Als Lerndaten habe ich einfach mal eine schiefe Ebene gewählt, das sollte das MLP ja gerade noch hinbekommen :wink: Ich nehme zufällige Lernpaare aus dem Lerndatensatz für den Backpropagation-Algorithmus.

Mein Problem ist nun, dass die Ausgangsebene meines MLPs in ihrer Form immer gleich bleibt und nur vertikal verschoben wird. Es scheint also total egal zu sein, welchen Betrag die Eingangswerte haben, es wird immer die gesamte Ausgangsebene an den Trainingswert angepasst. Die eigentliche Topologie wird also nicht gelernt.

Zur Veranschaulichung folgendes Bild der Lerndaten und eine GIF-Animation über 10 Lernschritte (jeder Frame entspricht der Ausgabe nach einem Lernschritt):

http://img337.imageshack.us/img337/7840/lerndatenf.jpg
http://img82.imageshack.us/img82/3397/ausgangsdaten.gif

Das deutet ja irgendwie an, dass ich da wohl was falsch gemacht habe. Leider komme ich gerade nicht weiter. Könnte dieses Verhalten eventuell etwas mit den Gewichten der Bias-Eingänge zu tun haben? Oder kann man aus meiner Beschreibung irgendwelche anderen Fehler ableiten (Initialisierung schlecht, Schrittweite zu klein)? Bei Bedarf könnte ich natürlich auch den Code zur Verfügung stellen. Ich bin für jede Anregung dankbar!

Vielen Dank!

Ok, habe den Fehler inzwischen gefunden. Hatte in einer Schleife Werte überschrieben, die zur weiteren Berechnung wichtig sind…