Einführung
Schritt eins
Ich habe ein standardmäßiges neuronales Backpropegating-Netzwerk geschrieben und mich zum Testen für eine XOR-Zuordnung entschieden.
Es ist ein 2-2-1-Netzwerk (mit Tanh-Aktivierungsfunktion)
X1 M1
O1
X2 M2
B1 B2
Zu Testzwecken habe ich das obere mittlere Neuron (M1) manuell als UND-Gatter und das untere Neuron (M2) als ODER-Gatter eingerichtet (beide geben 1 aus, wenn wahr, und -1, wenn falsch).
Jetzt habe ich auch manuell die Verbindung M1-O1 auf -.5, M2-O1 auf 1 und B2 auf -.75 eingestellt
Wenn also M1 = 1 und M2 = 1 ist, ist die Summe (-0,5 +1 -0,75 = -.25) tanh (0,25) = -0,24
wenn M1 = -1 und M2 = 1 ist, ist die Summe ((-0,5) * (-1) +1 -0,75 = 0,75) tanh (0,75) = 0,63
wenn M1 = -1 und M2 = -1 ist, ist die Summe ((-0,5) * (-1) -1 -0,75 = -1,25) tanh (1,25) = -0,8
Dies ist ein relativ gutes Ergebnis für eine "erste Iteration".
Schritt zwei
Ich habe diese Gewichte dann ein wenig modifiziert und sie dann mit dem Fehlerausbreitungsalgorithmus (basierend auf dem Gradientenabstieg) trainiert. In diesem Stadium lasse ich die Gewichte zwischen dem Eingangs- und dem mittleren Neuron intakt und ändere nur die Gewichte zwischen dem mittleren (und dem Bias) und dem Ausgang.
Zum Testen setze ich die Gewichte auf und .5 .4 .3 (jeweils für M1, M2 und Bias)
Hier bekomme ich jedoch Probleme.
Meine Frage
Ich stelle meine Lernrate auf 0,2 ein und lasse das Programm 10000 Iterationen oder mehr durch Trainingsdaten (ABA ^ B) iterieren.
Meistens laufen die Gewichte zu einem guten Ergebnis zusammen. Manchmal konvergieren diese Gewichte jedoch zu (etwa) 1,5, 5,7 und 0,9, was zu einer +1 Ausgabe (gerade) zu einer Eingabe von {1, 1} führt (wenn das Ergebnis ein -1 sein sollte).
Ist es möglich, dass eine relativ einfache ANN, die eine Lösung hat, überhaupt nicht konvergiert, oder gibt es einen Fehler in meiner Implementierung?
quelle
Wenn Sie die Gewichte zwischen der Eingabe- und der ausgeblendeten Einheit festgelegt haben und während des Trainings nur die ausgeblendeten Gewichte in Ausgabegewichte ändern, gibt es keine lokalen Minima. Bei fester Eingabe in versteckte Gewichte ähnelt das Optimierungsproblem, das Sie lösen, der logistischen Regression, jedoch mit einer Tanh-Funktion anstelle einer Sigmoid-Funktion. Unabhängig davon ist das Problem konvex und es sollte nur ein globales Minimum geben.
Da lokale Minima Ihr Problem nicht verursachen, würde ich empfehlen, Ihre Ableitungen numerisch zu approximieren und diese dann mit den von Ihnen berechneten Werten zu vergleichen. Wenn Sie sich nicht sicher sind, wie Sie dies tun sollen, bietet das Standford ULFDL-Lernprogramm einen guten Überblick.
quelle