Müssen neuronale Netze immer konvergieren?

16

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?

Xodarap
quelle

Antworten:

13

(Ich gehe davon aus durch „Fehlerfortpflanzung“ Sie meinen , was ich als „Fehler zurück -propagation.“)

Auf Seite 231 von Neural Networks (von Haykin) stellt er fest, dass die Rückausbreitung immer konvergiert, obwohl die Rate (in seinen Worten) "unerträglich langsam" sein kann.

Ich denke, Sie fragen sich jedoch nicht, ob der Algorithmus immer konvergiert, sondern ob er immer zur optimalen Antwort konvergiert . Und das wird es leider nicht. Selbst in einfachen Fällen wie Ihrem ist es durchaus möglich, dass es lokale Minima gibt, die keine globalen Minima sind.

Der Umgang mit lokalen Extrema ist ein äußerst wichtiges Thema bei der Optimierung, und Sie finden eine Fülle von Ratschlägen, wie Sie damit umgehen können. Eine der häufigsten Erscheinungen ist, wie Sie es tun: zufällige Neustarts (dh führen Sie den Algorithmus einfach mehrmals aus, jeweils von einem zufälligen Ort aus).

Um herauszufinden, ob es einen Fehler in Ihrem Code gibt, würde ich den Fehlerbegriff ausdrucken und sicherstellen, dass er bei jeder Iteration abnimmt. Wenn ja, dann treffen Sie wahrscheinlich nur ein lokales Minimum.

Xodarap
quelle
Alle Gewichte nehmen zu (das Gewicht zum OR-Neuron nimmt schneller zu), was den Fehler minimiert, wenn die Eingabe {1,0}, {0,1}, {0,0} beträgt, aber den Fehler maximiert, wenn {1,1}. Ist dies ein Problem beim Online-Lernen im Vergleich zum Batch-Lernen?
@Shmuel: Sowohl online als auch batch gehen in Richtung des Farbverlaufs. Wenn dieser Gradient in die falsche Richtung zeigt, gehen beide in die falsche Richtung. Die Wikipedia-Seite zu Hill Climbing bietet einige Möglichkeiten, um dies zu umgehen, wenn Sie interessiert sind.
Xodarap,
6

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.

Alt
quelle