Ich habe Ihre Ergebnisse mit Keras repliziert und sehr ähnliche Zahlen erhalten, sodass ich nicht glaube, dass Sie etwas falsch machen.
Aus Interesse lief ich für viele weitere Epochen, um zu sehen, was passieren würde. Die Genauigkeit der Test- und Zugergebnisse blieb ziemlich stabil. Die Verlustwerte gingen jedoch mit der Zeit weiter auseinander. Nach ungefähr 10 Epochen erhielt ich 100% Zuggenauigkeit, 94,3% Testgenauigkeit - mit Verlustwerten um 0,01 bzw. 0,22. Nach 20.000 Epochen hatten sich die Genauigkeiten kaum geändert, aber ich hatte einen Trainingsverlust von 0,000005 und einen Testverlust von 0,36. Die Verluste gingen ebenfalls weiter auseinander, wenn auch sehr langsam. Meiner Meinung nach ist das Netzwerk eindeutig überpassend.
Die Frage könnte also umformuliert werden: Warum verallgemeinert sich ein auf den MNIST-Datensatz trainiertes neuronales Netzwerk trotz Überanpassung immer noch relativ gut in Bezug auf die Genauigkeit?
Es lohnt sich, diese Genauigkeit von 94,3% mit dem zu vergleichen, was mit naiveren Ansätzen möglich ist.
Zum Beispiel ergibt eine einfache lineare Softmax-Regression (im Wesentlichen dasselbe neuronale Netzwerk ohne die verborgenen Schichten) eine schnelle stabile Genauigkeit von 95,1% Zug und 90,7% Test. Dies zeigt, dass viele Daten linear getrennt werden. Sie können Hyperebenen in den 784-Dimensionen zeichnen, und 90% der Ziffernbilder befinden sich in der richtigen "Box", ohne dass eine weitere Verfeinerung erforderlich ist. Daraus könnte man erwarten, dass eine nichtlineare Überanpassungslösung ein schlechteres Ergebnis als 90% erzielt, aber möglicherweise nicht schlechter als 80%, da intuitiv eine überkomplexe Grenze um z. B. eine "5" in der Box für "3" gebildet wird. wird nur fälschlicherweise eine kleine Menge dieser naiven 3 Mannigfaltigkeit zuweisen. Aber wir sind besser als diese 80% untere Schätzung des linearen Modells.
Ein anderes mögliches naives Modell ist der Vorlagenabgleich oder der nächste Nachbar. Dies ist eine vernünftige Analogie zu dem, was die Überanpassung bewirkt - es wird ein lokaler Bereich in der Nähe jedes Trainingsbeispiels erstellt, in dem dieselbe Klasse vorhergesagt wird. Probleme mit der Überanpassung treten in dem Zwischenraum auf, in dem die Aktivierungswerte dem folgen, was das Netzwerk "natürlich" tut. Beachten Sie, dass der schlimmste Fall und das, was Sie häufig in erklärenden Diagrammen sehen, eine stark gekrümmte, fast chaotische Oberfläche ist, die sich durch andere Klassifikationen bewegt. Tatsächlich kann es jedoch natürlicher sein, dass das neuronale Netzwerk reibungsloser zwischen Punkten interpoliert - was es tatsächlich tut, hängt von der Art der Kurven höherer Ordnung ab, die das Netzwerk zu Approximationen kombiniert, und davon, wie gut diese bereits zu den Daten passen.
Ich habe den Code für eine KNN-Lösung aus diesem Blog auf MNIST mit K Nearest Neighbors ausgeliehen . Die Verwendung von k = 1 - dh die Auswahl des Etiketts des nächsten aus den 6000 Trainingsbeispielen durch einfaches Anpassen der Pixelwerte ergibt eine Genauigkeit von 91%. Die zusätzlichen 3%, die das übertrainierte neuronale Netzwerk erzielt, scheinen angesichts der Einfachheit der Pixelübereinstimmungszählung, die KNN mit k = 1 leistet, nicht ganz so beeindruckend zu sein.
Ich habe einige Variationen der Netzwerkarchitektur, verschiedene Aktivierungsfunktionen, verschiedene Anzahl und Größen von Schichten ausprobiert - keine mit Regularisierung. Mit 6000 Trainingsbeispielen konnte ich jedoch keines davon so überanpassen, dass die Testgenauigkeit dramatisch abnahm. Selbst die Reduzierung auf nur 600 Trainingsbeispiele hat das Plateau mit einer Genauigkeit von ~ 86% gesenkt.
Meine grundlegende Schlussfolgerung ist, dass MNIST-Beispiele relativ glatte Übergänge zwischen Klassen im Merkmalsraum aufweisen und dass neuronale Netze zu diesen passen und zwischen den Klassen auf "natürliche" Weise interpolieren können, wenn NN-Bausteine für die Funktionsnäherung verwendet werden - ohne dass Hochfrequenzkomponenten hinzugefügt werden die Annäherung, die Probleme in einem Überanpassungsszenario verursachen könnte.
Es könnte ein interessantes Experiment sein, es mit einem "verrauschten MNIST" -Set zu versuchen, bei dem sowohl Trainings- als auch Testbeispielen eine Menge zufälliges Rauschen oder Verzerrungen hinzugefügt werden. Es wird erwartet, dass regulierte Modelle für diesen Datensatz eine gute Leistung erbringen, aber möglicherweise würde in diesem Szenario die Überanpassung offensichtlichere Probleme mit der Genauigkeit verursachen.
Dies ist vor dem Update mit weiteren Tests durch OP.
Aus Ihren Kommentaren geht hervor, dass Ihre Testergebnisse alle nach einer einzelnen Epoche erstellt wurden. Sie haben im Wesentlichen das vorzeitige Anhalten verwendet, obwohl Sie dies nicht geschrieben haben, da Sie das Training aufgrund Ihrer Trainingsdaten zum frühestmöglichen Zeitpunkt abgebrochen haben.
Ich würde vorschlagen, für viele weitere Epochen zu laufen, wenn Sie sehen möchten, wie das Netzwerk wirklich konvergiert. Beginnen Sie mit 10 Epochen und ziehen Sie in Betracht, bis zu 100 zu erreichen. Eine Epoche ist für dieses Problem nicht ausreichend, insbesondere bei 6000 Proben.
Obwohl nicht garantiert werden kann, dass eine zunehmende Anzahl von Iterationen die Überanpassung Ihres Netzwerks verschlechtert, als dies bereits der Fall war, haben Sie ihm keine große Chance gegeben, und Ihre experimentellen Ergebnisse sind bisher nicht schlüssig.
Tatsächlich würde ich zur Hälfte erwarten, dass sich Ihre Testergebnisse nach einer 2. und 3. Epoche verbessern , bevor sie mit zunehmender Epochenzahl von den Trainingsmetriken abweichen. Ich würde auch erwarten, dass sich Ihr Trainingsfehler 0% nähert, wenn sich das Netzwerk der Konvergenz nähert.