Für das Modell "R2: y_unverrauscht(x)" wurde ein moderater Ansatz von 100 Neuronen pro hidden Layers und 100 Epochen verwendet, um ein gutes Trainingsergebnis zu erzielen. Für "R3: y_best(x)" waren 200 Trainingsläufe notwendig, um einen ähnlichen Loss für Training und Test zu erzielen. Für das Modell "R4: y_overfit(x)" sollte wie der Name ahnen lässt, bewusst ein Overfitting erzeugt werden. Hier wurde das Modell mit 500 Neuronen pro Layers und 1000 Trainingsepochen bewusst überdimensioniert, was zu einem Trainings-Loss von sehr geringen 0.05 und einem Test-Loss von rund 0.15 führte. Hier sieht man, dass das Modell das Rauschen in den Trainingsdaten "mit gelernt" hat. Es hat sich zu sehr auf die Trainingsdaten angepasst, und war dann mit neuen Daten (Test) nicht mehr im Stande, einen vergleichbar geringen Loss zu erzielen.
Ich habe gelernt, dass eine zu hohe Modellkapazität bei kleinen Datensätzen problematisch ist und der visuelle Vergleich von Trainings- und Testkurven wichtige Hinweise liefert. Außerdem zeigte sich, dass der Einfluss von Zufall (Initialisierung, Batch-Reihenfolge) nicht vernachlässigt werden darf. Wenn keine Trainingsdatenpunkte am linken Rand der x-Achse vorhanden waren, führte das unweigerlich zu schlechteren Testergebnissen. Andersherum konnten mit einer ausgewogenen Verteilung deutlich bessere Testergebnisse erzielt werden, wie hier auch gezeigt wird.
Besonderheit: Die Modelle werden vollständig clientseitig trainiert und können interaktiv gespeichert werden. Es ist kein Backend erforderlich.
Es wurden drei Modelle zur Regressionsvorhersage implementiert:
Die Implementierung folgt einem didaktischen Ansatz zur Veranschaulichung des Overfitting-Problems bei neuronalen Netzen. Alle Daten werden zufällig generiert oder als Datei geladen.