Zusammenfassung

Wir haben nun eine ganze Reihe an Erfahrungen sowohl mit Klassifikationsproblemen als auch mit neuronalen Netzen gesammelt. Daher ist es Zeit für eine kleine Zusammenfassung.

Zunächst ist es von zentraler Bedeutung, vor jedem Lösungsversuch einer Klassifikationsaufgabe folgende Frage kritisch zu hinterfragen:

Wurden die Trainingsdaten auf die gleiche Art und Weise erzeugt, wie auch die Testdaten (sowie die später zu klassifizierenden Eingangsdaten)?

Falls diese Frage nicht mit Ja beantwortet werden kann, dann lässt sich das zugehörige Klassifikationsproblem möglicherweise auch gar nicht sinnvoll lösen. In den Datensätzen aus diesem Kurs ist die Frage sehr einfach mit Ja zu beantworten, denn Trainings- und Testdaten werden zufällig erzeugt, aber nach jeweils der gleichen Funktion bzw. dem gleichen Algorithmus.

Im Allgemeinen ist die Frage aber weitaus schwieriger zu beantworten: Bei der Erkennung handgeschriebenen Ziffern spielt es eine große Rolle, ob die Ziffern auf Papier geschrieben und anschließend eingescannt oder ob die Ziffern am PC bzw. Smartphone mit Maus bzw. Touchscreen aufgenommen wurden.

Angenommen, die grundlegende Voraussetzung zuvor ist erfüllt und das Klassifikationsproblem soll mit einem neuronalen Netz gelöst werden. Dann haben wir neben dem Layout des neuronalen Netzes einige Parameter der Trainingsphase kennengelernt, welche einen Einfluss auf die Qualität der Lösung haben können, nämlich die Anzahl an Iterationen, die Batchsize sowie den Umfang der Trainingsdaten.

Es gibt durchaus auch noch viele weitere Parameter, welche das Klassifikationsergebnis maßgeblich beeinflussen können, beispielsweise die verwendete Aktivierungsfunktion oder weitere Parameter der Trainingsphase. Aber mit den zuvor genannten Parametern lassen sich bereits interessante Beobachtungen machen.

Implementierung
Beispiel-Code, um insbesondere mit der Trainingsphase weitere Erfahrungen zu sammeln.

Da die Trainingsphase im Allgemeinen durchaus einige Zeit in Anspruch nehmen kann, wird im Code zuvor eine Möglichkeit verwendet, sich den Fortschritt anzeigen zu lassen. Zudem wird das neuronale Netz auch während der Trainingsphase in regelmäßigen Abständen getestet, um anschließend den Verlauf der Trainingsphase analysieren zu können.

Schließlich wird die Funktion on_trainings_done genau dann aufgerufen, wenn die Trainingsphase abgeschlossen ist. Übergeben wird ein Datenfeld, welches zur Darstellung der Trainingsphase verwendet werden kann.

Zur Referenz

Du hast nun die Möglichkeit, sämtliche kennengelernte Einstellungen und Parameter anzupassen und erneut eine Trainingsphase durchzuführen.

Quiz
Hast du dich mit dem Quellcode beschäftigt und ein wenig mit den Parametern der Trainingsphase experimentiert?
ja
nein
Exkurs Overfitting