Skip to main content

KNN mit Hyperparameter trainieren

Wir hatten die Lernrate quasi als Aktualisierungsfaktor des Gewichtungsfaktors der Neuronen pro Trainingsepoche definiert, was ein Hyperparameter des Trainingsprozesses ist. Außerdem stellt die Anzahl der Trainingsepochen einen Hyperparameter dar. Beides sind Einstellungen des Trainings, welche vorher einmal festgelegt werden und dann für den kompletten Trainingsprozess konstant gehalten werden, was Hyperparameter ausmacht. Die Lernrate sagt aus, wie stark neue Erkenntnisse in Form vom Fehleranteil pro Gewichtungsfaktor diese beeinflussen sollen. Die Anzahl der Trainingsepochen sagt aus, wie häufig dieses Aktualisieren durchgeführt werden soll. Beides sind Hyperparameter des Trainingsprozesses an sich. Zu diesen gehören auch noch die Größe des Batches, also die Anzahl der Fehlerberechnungen, nach denen eine Aktualisierung der Gewichtungsfaktoren durchgeführt werden soll. Ein weiterer Hyperparameter ist die Aufteilung der vorhandenen (historischen) Daten für das Training und Daten für den Test des Trainings (mehr dazu im nächsten Abschnitt).

Neben den Hyperparametern des Trainingsprozesses gibt es noch die Hyperparameter des KNN selbst. Hier stellt sich die Frage, wie viele versteckte Schichten mit wie vielen Neuronen pro Schicht verwendet werden sollen. Beides, also die Anzahl der versteckten Schichten als auch die Anzahl der Neuronen pro Schicht, sind Hyperparameter, da sich der Aufbau des KNN für einen Trainingsprozess nicht verändert. Bei der Verwendung von LSTM Zellen muss außerdem die Länge der Datensequenz (Anzahl der Werte vergangener Zeitschritte) berücksichtigt und eingestellt werden. Für die Verwendung von Dropout-Schichten muss auch noch als Hyperparameter eingestellt werden, wie viel Prozent der Neuronen der vorherigen Schicht zufällig ausgeschaltet werden sollen. Es kann also eine Vielzahl an Hyperparametern des KNN eingestellt werden, welche den Aufbau des KNN definieren.

Jetzt wo wir wissen, was Hyperparameter sind, welche es gibt und was diese bewirken stellt sich natürlich die Frage, wie wir die richtigen Werte für die Hyperparameter auswählen? Wie und wie groß soll das verwendete KNN aufgebaut werden, welche Lernrate und welche Anzahl an Trainingsepochen sollen wir auswählen, um ein KNN auf unsere spezifische Fragestellung trainieren zu können? Meistens basiert diese Auswahl der Werte der Hyperparameter auf Erfahrungswerten, sei es durch Ausprobieren bei der Anwendung oder durch ähnliche Fragestellungen aus der Literatur und der Verwendung der dort veröffentlichten Werte. Eine weitere Option stellt dann die Hyperparameteroptimierung dar. Da dieser Ansatz recht kompliziert und auch rechenintensiv ist, wird nur kurz darauf eingegangen. Grob gesagt, wird in den verschiedenen Verfahren der Hyperparameteroptimierung gezielt versucht, einen optimalen Satz an Hyperparameterwerten zu erhalten. Hierfür werden mehrere Trainingsprozesse mit verschiedenen Hyperparameterwerten ausgeführt und diese statistisch ausgewertet. Nach mehreren Durchläufen in der Hyperparameteroptimierung, also nach mehreren abgeschlossenen Trainingsprozessen des KNN, ergeben sich Hyperparameterwerte mit vielversprechenden Ergebnissen, also mit geringen Fehlerwerten nach dem Training des entsprechenden KNN.

Für den Start der Arbeit mit KNN reicht es völlig aus die Hyperparameter der Lernrate, die Anzahl der Trainingsepochen und die Größe und Tiefe des KNN händisch anzupassen, um ein Gefühl für die Abstraktionsfähigkeit von KNN zu erhalten.