Ich habe ein wenig mit verschiedenen Perceptron-Implementierungen experimentiert und möchte sicherstellen, dass ich die "Iterationen" richtig verstehe.
Rosenblatts ursprüngliche Perzeptronregel
Soweit ich weiß, werden bei Rosenblatts klassischem Perzeptron-Algorithmus die Gewichte nach jedem Trainingsbeispiel gleichzeitig über aktualisiert
wo hier die ist. Und sowohl Ziel als auch Ist sind begrenzt (-1 oder 1). Ich habe es als 1 Iteration = 1 Durchlauf über die Trainingsprobe implementiert, aber der Gewichtsvektor wird nach jeder Trainingsprobe aktualisiert.
Und ich berechne den "tatsächlichen" Wert als
Stochastische Gefälleabfahrt
Entspricht jedoch der Perceptron-Regel target
und actual
ist kein Schwellenwert, sondern ein reeller Wert. Außerdem zähle ich "Iteration" als Pfad über die Trainingsprobe.
Sowohl SGD als auch die klassische Perzeptron-Regel konvergieren in diesem linear trennbaren Fall. Ich habe jedoch Probleme mit der Implementierung des Gradientenabfalls.
Gradientenabstieg
Hier gehe ich über das Trainingsmuster und fasse die Gewichtsänderungen für 1 Durchgang über das Trainingsmuster zusammen und aktualisiere die Gewichte danach, z.
für jedes Trainingsmuster:
...
Nach 1 Durchgang über das Trainingsset:
Ich frage mich, ob diese Annahme richtig ist oder ob mir etwas fehlt. Ich habe verschiedene (bis zu unendlich kleine) Lernraten ausprobiert, konnte aber nie Anzeichen von Konvergenz erkennen. Ich frage mich also, ob ich etwas falsch verstanden habe. Hier.
Danke, Sebastian