Ich habe gerade etwas über Regularisierung als Ansatz zur Kontrolle der Überanpassung gelernt und möchte die Idee in eine einfache Implementierung von Backpropagation und Multilayer Perceptron (MLP) integrieren, die ich zusammengestellt habe.
Um eine Überanpassung zu vermeiden, überprüfe ich derzeit das Netzwerk und behalte das bisher beste Ergebnis im Validierungssatz. Dies funktioniert in Ordnung, aber das Hinzufügen von Regularisierung würde mir zugute kommen, da die richtige Auswahl des Regularisierungsalgorithmus und -parameters dazu führen würde, dass mein Netzwerk systematischer auf ein Nicht-Überanpassungsmodell konvergiert.
Die Formel, die ich für den Aktualisierungszeitraum (aus dem Coursera ML-Kurs) habe, wird als Batch-Aktualisierung angegeben, z. B. für jedes Gewicht. Nachdem alle anwendbaren Deltas für den gesamten Trainingssatz aus der Fehlerausbreitung lambda * current_weight
summiert wurden, wird vor dem Kombinieren auch eine Anpassung von hinzugefügt Delta wird am Ende des Stapels abgezogen, wobei lambda
der Regularisierungsparameter ist.
Meine Implementierung von Backpropagation verwendet Gewichtsaktualisierungen pro Artikel. Ich mache mir Sorgen, dass ich den Batch-Ansatz nicht einfach kopieren kann, obwohl er für mich intuitiv in Ordnung aussieht. Funktioniert ein kleinerer Regularisierungsbegriff pro Element genauso gut?
Zum Beispiel, lambda * current_weight / N
wenn N die Größe des Trainingssatzes ist - auf den ersten Blick sieht dies vernünftig aus. Ich konnte jedoch nichts zu diesem Thema finden, und ich frage mich, ob dies daran liegt, dass die Regularisierung bei einem Update pro Element nicht so gut funktioniert oder sogar unter einem anderen Namen oder einer anderen geänderten Formel erfolgt.